diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-09-09 20:15:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-09-09 20:15:54 +0000 |
| commit | 46696f5ed55c9313754e7019e727ee88fa0847ce (patch) | |
| tree | 1ff427cc41e180b0216178ea83416161cf3878e7 /openstackclient/tests/common | |
| parent | cd54db874154ab668fe7ecc34d247f1dac62896e (diff) | |
| parent | 85a03945f0b5da0ec5778a929e08a641f427513a (diff) | |
| download | python-openstackclient-46696f5ed55c9313754e7019e727ee88fa0847ce.tar.gz | |
Merge "Create log configuration class"
Diffstat (limited to 'openstackclient/tests/common')
| -rw-r--r-- | openstackclient/tests/common/test_context.py | 152 |
1 files changed, 110 insertions, 42 deletions
diff --git a/openstackclient/tests/common/test_context.py b/openstackclient/tests/common/test_context.py index cc213b13..55e42851 100644 --- a/openstackclient/tests/common/test_context.py +++ b/openstackclient/tests/common/test_context.py @@ -13,7 +13,6 @@ import logging import mock -import os from openstackclient.common import context from openstackclient.tests import utils @@ -21,47 +20,6 @@ from openstackclient.tests import utils class TestContext(utils.TestCase): - TEST_LOG_FILE = "/tmp/test_log_file" - - def setUp(self): - super(TestContext, self).setUp() - - def tearDown(self): - super(TestContext, self).tearDown() - if os.path.exists(self.TEST_LOG_FILE): - os.remove(self.TEST_LOG_FILE) - - def setup_handler_logging_level(self): - handler_type = logging.FileHandler - handler = logging.FileHandler(filename=self.TEST_LOG_FILE) - handler.setLevel(logging.ERROR) - logging.getLogger('').addHandler(handler) - context.setup_handler_logging_level(handler_type, logging.INFO) - self.log.info("test log") - ld = open(self.TEST_LOG_FILE) - line = ld.readlines() - ld.close() - if os.path.exists(self.TEST_LOG_FILE): - os.remove(self.TEST_LOG_FILE) - self.assertGreaterEqual(line.find("test log"), 0) - - @mock.patch("openstackclient.common.context._setup_handler_for_logging") - def test_setup_logging(self, setuph): - setuph.return_value = mock.MagicMock() - shell = mock.MagicMock() - cloud_config = mock.MagicMock() - cloud_config.auth = { - 'project_name': 'heart-o-gold', - 'username': 'zaphod' - } - cloud_config.config = { - 'log_level': 'debug', - 'log_file': self.TEST_LOG_FILE, - 'cloud': 'megadodo' - } - context.setup_logging(shell, cloud_config) - self.assertEqual(True, shell.enable_operation_logging) - def test_log_level_from_options(self): opts = mock.Mock() opts.verbose_level = 0 @@ -132,3 +90,113 @@ class TestFileFormatter(utils.TestCase): self.assertEqual(('%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [cloudy usernamey projecty] %(message)s'), formatter.fmt) + + +class TestLogConfigurator(utils.TestCase): + def setUp(self): + super(TestLogConfigurator, self).setUp() + self.options = mock.Mock() + self.options.verbose_level = 1 + self.options.log_file = None + self.options.debug = False + self.root_logger = mock.Mock() + self.root_logger.setLevel = mock.Mock() + self.root_logger.addHandler = mock.Mock() + self.requests_log = mock.Mock() + self.requests_log.setLevel = mock.Mock() + self.cliff_log = mock.Mock() + self.cliff_log.setLevel = mock.Mock() + self.stevedore_log = mock.Mock() + self.stevedore_log.setLevel = mock.Mock() + self.iso8601_log = mock.Mock() + self.iso8601_log.setLevel = mock.Mock() + self.loggers = [ + self.root_logger, + self.requests_log, + self.cliff_log, + self.stevedore_log, + self.iso8601_log] + + @mock.patch('logging.StreamHandler') + @mock.patch('logging.getLogger') + @mock.patch('openstackclient.common.context.set_warning_filter') + def test_init(self, warning_filter, getLogger, handle): + getLogger.side_effect = self.loggers + console_logger = mock.Mock() + console_logger.setFormatter = mock.Mock() + console_logger.setLevel = mock.Mock() + handle.return_value = console_logger + + configurator = context.LogConfigurator(self.options) + + getLogger.assert_called_with('iso8601') # last call + warning_filter.assert_called_with(logging.WARNING) + self.root_logger.setLevel.assert_called_with(logging.DEBUG) + self.root_logger.addHandler.assert_called_with(console_logger) + self.requests_log.setLevel.assert_called_with(logging.ERROR) + self.cliff_log.setLevel.assert_called_with(logging.ERROR) + self.stevedore_log.setLevel.assert_called_with(logging.ERROR) + self.iso8601_log.setLevel.assert_called_with(logging.ERROR) + self.assertEqual(False, configurator.dump_trace) + + @mock.patch('logging.getLogger') + @mock.patch('openstackclient.common.context.set_warning_filter') + def test_init_no_debug(self, warning_filter, getLogger): + getLogger.side_effect = self.loggers + self.options.debug = True + + configurator = context.LogConfigurator(self.options) + + warning_filter.assert_called_with(logging.DEBUG) + self.requests_log.setLevel.assert_called_with(logging.DEBUG) + self.assertEqual(True, configurator.dump_trace) + + @mock.patch('logging.FileHandler') + @mock.patch('logging.getLogger') + @mock.patch('openstackclient.common.context.set_warning_filter') + @mock.patch('openstackclient.common.context._FileFormatter') + def test_init_log_file(self, formatter, warning_filter, getLogger, handle): + getLogger.side_effect = self.loggers + self.options.log_file = '/tmp/log_file' + file_logger = mock.Mock() + file_logger.setFormatter = mock.Mock() + file_logger.setLevel = mock.Mock() + handle.return_value = file_logger + mock_formatter = mock.Mock() + formatter.return_value = mock_formatter + + context.LogConfigurator(self.options) + + handle.assert_called_with(filename=self.options.log_file) + self.root_logger.addHandler.assert_called_with(file_logger) + file_logger.setFormatter.assert_called_with(mock_formatter) + file_logger.setLevel.assert_called_with(logging.WARNING) + + @mock.patch('logging.FileHandler') + @mock.patch('logging.getLogger') + @mock.patch('openstackclient.common.context.set_warning_filter') + @mock.patch('openstackclient.common.context._FileFormatter') + def test_configure(self, formatter, warning_filter, getLogger, handle): + getLogger.side_effect = self.loggers + configurator = context.LogConfigurator(self.options) + cloud_config = mock.Mock() + config_log = '/tmp/config_log' + cloud_config.config = { + 'log_file': config_log, + 'verbose_level': 1, + 'log_level': 'info'} + file_logger = mock.Mock() + file_logger.setFormatter = mock.Mock() + file_logger.setLevel = mock.Mock() + handle.return_value = file_logger + mock_formatter = mock.Mock() + formatter.return_value = mock_formatter + + configurator.configure(cloud_config) + + warning_filter.assert_called_with(logging.INFO) + handle.assert_called_with(filename=config_log) + self.root_logger.addHandler.assert_called_with(file_logger) + file_logger.setFormatter.assert_called_with(mock_formatter) + file_logger.setLevel.assert_called_with(logging.INFO) + self.assertEqual(False, configurator.dump_trace) |
