Improve get_logger tests re. statsd prefix

Add test for mutilated statsd client
Drive-by: revert unncesessary whitespace change in Related-Change.
Related-Change: I3a677bb67c5700da48f89c847f652b4610ba47c2
Co-Authored-By: Shreeya Deshpande <shreeyad@nvidia.com>
Co-Authored-By: Clay Gerrard <cgerrard@nvidia.com>
Change-Id: Id262bbcf0b233f9728f55be208bee5bc146c053d
This commit is contained in:
Alistair Coles
2024年11月27日 18:25:29 +00:00
parent c10ca639e6
commit 1bc0507c13

View File

@@ -7528,60 +7528,79 @@ class TestLoggerStatsdClientDelegation(unittest.TestCase):
self.assertEqual(logger.logger.statsd_client._prefix, 'some-name.')
def test_get_logger_statsd_client_prefix(self):
def call_get_logger(conf, name, statsd_tail_prefix):
def call_get_logger(conf, name, statsd_tail_prefix, log_route=None):
swift_logger = utils.get_logger(
conf, name=name, statsd_tail_prefix=statsd_tail_prefix)
conf, name=name,
log_route=log_route,
statsd_tail_prefix=statsd_tail_prefix)
self.assertTrue(hasattr(swift_logger.logger, 'statsd_client'))
self.assertIsInstance(swift_logger.logger.statsd_client,
StatsdClient)
return swift_logger.logger.statsd_client
return swift_logger
# tail prefix defaults to swift
statsd_client = call_get_logger(None, None, None)
self.assertEqual('swift.', statsd_client._prefix)
logger = call_get_logger(None, None, None)
self.assertEqual('swift.', logger.logger.statsd_client._prefix)
self.assertEqual('swift', logger.name)
self.assertEqual('swift', logger.server)
# tail prefix defaults to swift, log_route is ignored for stats
logger = call_get_logger(None, None, None, log_route='route')
self.assertEqual('swift.', logger.logger.statsd_client._prefix)
self.assertEqual('route', logger.name)
self.assertEqual('swift', logger.server)
# tail prefix defaults to conf log_name
conf = {'log_name': 'bar'}
statsd_client = call_get_logger(conf, None, None)
self.assertEqual('bar.', statsd_client._prefix)
logger = call_get_logger(conf, None, None)
self.assertEqual('bar.', logger.logger.statsd_client._prefix)
self.assertEqual('bar', logger.name)
self.assertEqual('bar', logger.server)
# tail prefix defaults to conf log_name, log_route is ignored for stats
conf = {'log_name': 'bar'}
logger = call_get_logger(conf, None, None, log_route='route')
self.assertEqual('bar.', logger.logger.statsd_client._prefix)
self.assertEqual('route', logger.name)
self.assertEqual('bar', logger.server)
# tail prefix defaults to name arg which overrides conf log_name
statsd_client = call_get_logger(conf, '', None)
self.assertEqual('', statsd_client._prefix)
logger = call_get_logger(conf, '', None)
self.assertEqual('', logger.logger.statsd_client._prefix)
# tail prefix defaults to name arg which overrides conf log_name
statsd_client = call_get_logger(conf, 'baz', None)
self.assertEqual('baz.', statsd_client._prefix)
logger = call_get_logger(conf, 'baz', None)
self.assertEqual('baz.', logger.logger.statsd_client._prefix)
# tail prefix set to statsd_tail_prefix arg which overrides name arg
statsd_client = call_get_logger(conf, 'baz', '')
self.assertEqual('', statsd_client._prefix)
logger = call_get_logger(conf, 'baz', '')
self.assertEqual('', logger.logger.statsd_client._prefix)
# tail prefix set to statsd_tail_prefix arg which overrides name arg
statsd_client = call_get_logger(conf, 'baz', 'boo')
self.assertEqual('boo.', statsd_client._prefix)
logger = call_get_logger(conf, 'baz', 'boo')
self.assertEqual('boo.', logger.logger.statsd_client._prefix)
# base prefix is configured, tail prefix defaults to swift
conf = {'log_statsd_metric_prefix': 'foo'}
statsd_client = call_get_logger(conf, None, None)
self.assertEqual('foo.swift.', statsd_client._prefix)
logger = call_get_logger(conf, None, None)
self.assertEqual('foo.swift.', logger.logger.statsd_client._prefix)
# base prefix is configured, tail prefix defaults to conf log_name
conf = {'log_statsd_metric_prefix': 'foo', 'log_name': 'bar'}
statsd_client = call_get_logger(conf, None, None)
self.assertEqual('foo.bar.', statsd_client._prefix)
logger = call_get_logger(conf, None, None)
self.assertEqual('foo.bar.', logger.logger.statsd_client._prefix)
# base prefix is configured, tail prefix defaults to name arg
statsd_client = call_get_logger(conf, 'baz', None)
self.assertEqual('foo.baz.', statsd_client._prefix)
logger = call_get_logger(conf, 'baz', None)
self.assertEqual('foo.baz.', logger.logger.statsd_client._prefix)
# base prefix is configured, tail prefix set to statsd_tail_prefix arg
statsd_client = call_get_logger(conf, None, '')
self.assertEqual('foo.', statsd_client._prefix)
logger = call_get_logger(conf, None, '')
self.assertEqual('foo.', logger.logger.statsd_client._prefix)
# base prefix is configured, tail prefix set to statsd_tail_prefix arg
statsd_client = call_get_logger(conf, 'baz', 'boo')
self.assertEqual('foo.boo.', statsd_client._prefix)
logger = call_get_logger(conf, 'baz', 'boo')
self.assertEqual('foo.boo.', logger.logger.statsd_client._prefix)
def test_get_logger_replaces_statsd_client(self):
# Each call to get_logger creates a *new* StatsdClient instance and
@@ -7656,6 +7675,31 @@ class TestLoggerStatsdClientDelegation(unittest.TestCase):
self.assertEqual(exp, prefixed_logger.logger.statsd_client.calls)
self.assertEqual(exp, adapted_logger.logger.statsd_client.calls)
def test_get_prefixed_logger_with_mutilated_statsd_client(self):
with mock.patch(
'swift.common.statsd_client.StatsdClient', FakeStatsdClient):
adapted_logger = utils.get_logger(None, name=self.logger_name)
self.assertTrue(hasattr(adapted_logger, 'statsd_client_source'))
self.assertIsInstance(
adapted_logger.statsd_client_source.statsd_client,
FakeStatsdClient)
# sanity
adapted_logger.increment('foo')
fake_statsd_client = adapted_logger.statsd_client_source.statsd_client
self.assertEqual(fake_statsd_client.get_increments(), ['foo'])
# kill and maim!
adapted_logger.statsd_client_source.statsd_client = None
# bro, what are you DOING!? you're crazy!?
self.assertEqual(adapted_logger.logger.statsd_client, None)
# you can't do that, it *breaks* the statsd_client patch methods
with self.assertRaises(AttributeError):
adapted_logger.increment('bar')
# you can't get a prefixed logger from a *broken* adapter
with self.assertRaises(ValueError):
utils.get_prefixed_logger(adapted_logger, 'test')
def test_get_prefixed_logger_no_statsd_client(self):
# verify get_prefixed_logger can be used to mutate the prefix of a
# SwiftLogAdapter that does *not* have a StatsdClient interface
Reference in New Issue
openstack/swift
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.

The note is not visible to the blocked user.