132 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import cStringIO
 | |
| 
 | |
| from nova import context
 | |
| from nova import log
 | |
| from nova import test
 | |
| 
 | |
| 
 | |
| def _fake_context():
 | |
|     return context.RequestContext(1, 1)
 | |
| 
 | |
| 
 | |
| class RootLoggerTestCase(test.TestCase):
 | |
|     def setUp(self):
 | |
|         super(RootLoggerTestCase, self).setUp()
 | |
|         self.log = log.logging.root
 | |
| 
 | |
|     def tearDown(self):
 | |
|         super(RootLoggerTestCase, self).tearDown()
 | |
|         log.NovaLogger.manager.loggerDict = {}
 | |
| 
 | |
|     def test_is_nova_instance(self):
 | |
|         self.assert_(isinstance(self.log, log.NovaLogger))
 | |
| 
 | |
|     def test_name_is_nova_root(self):
 | |
|         self.assertEqual("nova.root", self.log.name)
 | |
| 
 | |
|     def test_handlers_have_nova_formatter(self):
 | |
|         formatters = []
 | |
|         for h in self.log.handlers:
 | |
|             f = h.formatter
 | |
|             if isinstance(f, log.NovaFormatter):
 | |
|                 formatters.append(f)
 | |
|         self.assert_(formatters)
 | |
|         self.assertEqual(len(formatters), len(self.log.handlers))
 | |
| 
 | |
|     def test_handles_context_kwarg(self):
 | |
|         self.log.info("foo", context=_fake_context())
 | |
|         self.assert_(True)  # didn't raise exception
 | |
| 
 | |
|     def test_module_level_methods_handle_context_arg(self):
 | |
|         log.info("foo", context=_fake_context())
 | |
|         self.assert_(True)  # didn't raise exception
 | |
| 
 | |
|     def test_module_level_audit_handles_context_arg(self):
 | |
|         log.audit("foo", context=_fake_context())
 | |
|         self.assert_(True)  # didn't raise exception
 | |
| 
 | |
| 
 | |
| class LogHandlerTestCase(test.TestCase):
 | |
|     def test_log_path_logdir(self):
 | |
|         self.flags(logdir='/some/path')
 | |
|         self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | |
|                          '/some/path/foo-bar.log')
 | |
| 
 | |
|     def test_log_path_logfile(self):
 | |
|         self.flags(logfile='/some/path/foo-bar.log')
 | |
|         self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | |
|                          '/some/path/foo-bar.log')
 | |
| 
 | |
|     def test_log_path_none(self):
 | |
|         self.assertTrue(log.get_log_file_path(binary='foo-bar') is None)
 | |
| 
 | |
|     def test_log_path_logfile_overrides_logdir(self):
 | |
|         self.flags(logdir='/some/other/path',
 | |
|                    logfile='/some/path/foo-bar.log')
 | |
|         self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | |
|                          '/some/path/foo-bar.log')
 | |
| 
 | |
| 
 | |
| class NovaFormatterTestCase(test.TestCase):
 | |
|     def setUp(self):
 | |
|         super(NovaFormatterTestCase, self).setUp()
 | |
|         self.flags(logging_context_format_string="HAS CONTEXT "\
 | |
|                                               "[%(request_id)s]: %(message)s",
 | |
|                    logging_default_format_string="NOCTXT: %(message)s",
 | |
|                    logging_debug_format_suffix="--DBG")
 | |
|         self.log = log.logging.root
 | |
|         self.stream = cStringIO.StringIO()
 | |
|         handler = log.StreamHandler(self.stream)
 | |
|         self.log.addHandler(handler)
 | |
|         self.log.setLevel(log.DEBUG)
 | |
| 
 | |
|     def tearDown(self):
 | |
|         super(NovaFormatterTestCase, self).tearDown()
 | |
|         log.NovaLogger.manager.loggerDict = {}
 | |
| 
 | |
|     def test_uncontextualized_log(self):
 | |
|         self.log.info("foo")
 | |
|         self.assertEqual("NOCTXT: foo\n", self.stream.getvalue())
 | |
| 
 | |
|     def test_contextualized_log(self):
 | |
|         ctxt = _fake_context()
 | |
|         self.log.info("bar", context=ctxt)
 | |
|         expected = "HAS CONTEXT [%s]: bar\n" % ctxt.request_id
 | |
|         self.assertEqual(expected, self.stream.getvalue())
 | |
| 
 | |
|     def test_debugging_log(self):
 | |
|         self.log.debug("baz")
 | |
|         self.assertEqual("NOCTXT: baz --DBG\n", self.stream.getvalue())
 | |
| 
 | |
| 
 | |
| class NovaLoggerTestCase(test.TestCase):
 | |
|     def setUp(self):
 | |
|         super(NovaLoggerTestCase, self).setUp()
 | |
|         self.flags(default_log_levels=["nova-test=AUDIT"], verbose=False)
 | |
|         self.log = log.getLogger('nova-test')
 | |
| 
 | |
|     def tearDown(self):
 | |
|         super(NovaLoggerTestCase, self).tearDown()
 | |
|         log.NovaLogger.manager.loggerDict = {}
 | |
| 
 | |
|     def test_has_level_from_flags(self):
 | |
|         self.assertEqual(log.AUDIT, self.log.level)
 | |
| 
 | |
|     def test_child_log_has_level_of_parent_flag(self):
 | |
|         l = log.getLogger('nova-test.foo')
 | |
|         self.assertEqual(log.AUDIT, l.level)
 | |
| 
 | |
| 
 | |
| class VerboseLoggerTestCase(test.TestCase):
 | |
|     def setUp(self):
 | |
|         super(VerboseLoggerTestCase, self).setUp()
 | |
|         self.flags(default_log_levels=["nova.test=AUDIT"], verbose=True)
 | |
|         self.log = log.getLogger('nova.test')
 | |
| 
 | |
|     def tearDown(self):
 | |
|         super(VerboseLoggerTestCase, self).tearDown()
 | |
|         log.NovaLogger.manager.loggerDict = {}
 | |
| 
 | |
|     def test_will_be_verbose_if_named_nova_and_verbose_flag_set(self):
 | |
|         self.assertEqual(log.DEBUG, self.log.level)
 | 
