summaryrefslogtreecommitdiff
path: root/openstackclient/tests/common
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-09-09 20:15:54 +0000
committerGerrit Code Review <review@openstack.org>2015-09-09 20:15:54 +0000
commit46696f5ed55c9313754e7019e727ee88fa0847ce (patch)
tree1ff427cc41e180b0216178ea83416161cf3878e7 /openstackclient/tests/common
parentcd54db874154ab668fe7ecc34d247f1dac62896e (diff)
parent85a03945f0b5da0ec5778a929e08a641f427513a (diff)
downloadpython-openstackclient-46696f5ed55c9313754e7019e727ee88fa0847ce.tar.gz
Merge "Create log configuration class"
Diffstat (limited to 'openstackclient/tests/common')
-rw-r--r--openstackclient/tests/common/test_context.py152
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)