def test_update_extras(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) msg, kwargs = a.process( 'message', { 'context': 'some context object', 'instance': 'instance identifier', 'resource_uuid': 'UUID for instance', 'anything': 'goes' }) self.assertEqual( kwargs, { 'extra': { 'anything': 'goes', 'context': 'some context object', 'extra_keys': ['anything', 'context', 'instance', 'resource_uuid'], 'instance': 'instance identifier', 'resource_uuid': 'UUID for instance' } }, )
def test_pass_args_via_debug(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) message = 'message' exc_message = 'exception' key = 'name' val = 'value' a.debug(message, name=val, exc_info=exc_message) # The adapter implementation for debug() is different for # python 3, so we expect a different method to be called # internally. if six.PY3: self.mock_log._log.assert_called_once_with(logging.DEBUG, message, (), extra={ key: val, 'extra_keys': [key] }, exc_info=exc_message) else: self.mock_log.debug.assert_called_once_with(message, extra={ key: val, 'extra_keys': [key] }, exc_info=exc_message)
def test_pass_args_via_debug(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) a.debug('message', name='value', exc_info='exception') # The adapter implementation for debug() is different for # python 3, so we expect a different method to be called # internally. if six.PY3: self.mock_log._log.assert_called_once_with( logging.DEBUG, 'message', (), extra={ 'name': 'value', 'extra_keys': ['name'] }, exc_info='exception', ) else: self.mock_log.debug.assert_called_once_with( 'message', extra={ 'name': 'value', 'extra_keys': ['name'] }, exc_info='exception', )
def test_include_constructor_extras(self): key = 'foo' val = 'blah' data = {key: val} a = log.KeywordArgumentAdapter(self.mock_log, data) msg, kwargs = a.process('message', {}) self.assertEqual(kwargs, {'extra': {key: val, 'extra_keys': [key]}})
def test_include_constructor_extras(self): a = log.KeywordArgumentAdapter(self.mock_log, {'foo': 'blah'}) msg, kwargs = a.process('message', {}) self.assertEqual(kwargs, {'extra': { 'foo': 'blah', 'extra_keys': ['foo'] }})
def test_pass_through_exc_info(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) msg, kwargs = a.process('message', {'exc_info': 'the info'}) self.assertEqual( kwargs, {'extra': {'extra_keys': []}, 'exc_info': 'the info'}, )
def test_pass_args_to_log(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) a.log(logging.DEBUG, 'message', name='value', exc_info='exception') if six.PY3: self.mock_log._log.assert_called_once_with( logging.DEBUG, 'message', (), extra={'name': 'value', 'extra_keys': ['name']}, exc_info='exception', ) else: self.mock_log.log.assert_called_once_with( logging.DEBUG, 'message', extra={'name': 'value', 'extra_keys': ['name']}, exc_info='exception', )
def test_update_extras(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) data = { 'context': 'some context object', 'instance': 'instance identifier', 'resource_uuid': 'UUID for instance', 'anything': 'goes' } expected = copy.copy(data) msg, kwargs = a.process('message', data) self.assertEqual( kwargs, { 'extra': { 'anything': expected['anything'], 'context': expected['context'], 'extra_keys': sorted(expected.keys()), 'instance': expected['instance'], 'resource_uuid': expected['resource_uuid'] } })
def test_pass_args_to_log(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) message = 'message' exc_message = 'exception' key = 'name' val = 'value' a.log(logging.DEBUG, message, name=val, exc_info=exc_message) if six.PY3: self.mock_log._log.assert_called_once_with(logging.DEBUG, message, (), extra={ key: val, 'extra_keys': [key] }, exc_info=exc_message) else: self.mock_log.log.assert_called_once_with(logging.DEBUG, message, extra={ key: val, 'extra_keys': [key] }, exc_info=exc_message)
def test_empty_kwargs(self): a = log.KeywordArgumentAdapter(self.mock_log, {}) msg, kwargs = a.process('message', {}) self.assertEqual(kwargs, {'extra': {'extra_keys': []}})