summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-09-08 20:22:24 +0000
committerGerrit Code Review <review@openstack.org>2015-09-08 20:22:24 +0000
commit24ca952eb603e776b60ac282b028d2dc1b9289dd (patch)
tree1e858ffb8b773e24ffd21533ee377b87ef1ad65e /openstackclient/tests
parent7f24818994c573d2cc028cb5c6108468c4ae1d80 (diff)
parente23dd6de5854fcc8ff76fe1b51eb46162770d9cc (diff)
downloadpython-openstackclient-24ca952eb603e776b60ac282b028d2dc1b9289dd.tar.gz
Merge "Set up every time record log in file"
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/common/test_context.py102
-rw-r--r--openstackclient/tests/test_shell.py96
2 files changed, 194 insertions, 4 deletions
diff --git a/openstackclient/tests/common/test_context.py b/openstackclient/tests/common/test_context.py
new file mode 100644
index 00000000..145546a3
--- /dev/null
+++ b/openstackclient/tests/common/test_context.py
@@ -0,0 +1,102 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+import logging
+import mock
+import os
+
+from openstackclient.common import context
+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)
+
+
+class Test_LogContext(utils.TestCase):
+ def setUp(self):
+ super(Test_LogContext, self).setUp()
+
+ def test_context(self):
+ ctx = context._LogContext()
+ self.assertTrue(ctx)
+
+ def test_context_to_dict(self):
+ ctx = context._LogContext('cloudsName', 'projectName', 'userNmae')
+ ctx_dict = ctx.to_dict()
+ self.assertEqual('cloudsName', ctx_dict['clouds_name'])
+ self.assertEqual('projectName', ctx_dict['project_name'])
+ self.assertEqual('userNmae', ctx_dict['username'])
+
+
+class Test_LogContextFormatter(utils.TestCase):
+ def setUp(self):
+ super(Test_LogContextFormatter, self).setUp()
+ self.ctx = context._LogContext('cloudsName', 'projectName', 'userNmae')
+ self.addfmt = "%(clouds_name)s %(project_name)s %(username)s"
+
+ def test_contextrrormatter(self):
+ ctxfmt = context._LogContextFormatter()
+ self.assertTrue(ctxfmt)
+
+ def test_context_format(self):
+ record = mock.MagicMock()
+ logging.Formatter.format = mock.MagicMock()
+ logging.Formatter.format.return_value = record
+
+ ctxfmt = context._LogContextFormatter(context=self.ctx,
+ fmt=self.addfmt)
+ addctx = ctxfmt.format(record)
+ self.assertEqual('cloudsName', addctx.clouds_name)
+ self.assertEqual('projectName', addctx.project_name)
+ self.assertEqual('userNmae', addctx.username)
diff --git a/openstackclient/tests/test_shell.py b/openstackclient/tests/test_shell.py
index 0e0cc50b..5db04e7c 100644
--- a/openstackclient/tests/test_shell.py
+++ b/openstackclient/tests/test_shell.py
@@ -77,6 +77,8 @@ CLOUD_2 = {
'username': 'zaphod',
},
'region_name': 'occ-cloud',
+ 'log_file': '/tmp/test_log_file',
+ 'log_level': 'debug',
}
}
}
@@ -623,9 +625,12 @@ class TestShellCli(TestShell):
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
- def test_shell_args_cloud_public(self, config_mock, public_mock):
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_cloud_public(self, setup_handler, config_mock,
+ public_mock):
config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
public_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
_shell = make_shell()
fake_execute(
@@ -663,9 +668,12 @@ class TestShellCli(TestShell):
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
- def test_shell_args_precedence(self, config_mock, vendor_mock):
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_precedence(self, setup_handler, config_mock,
+ vendor_mock):
config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
_shell = make_shell()
# Test command option overriding config file value
@@ -717,9 +725,12 @@ class TestShellCliEnv(TestShell):
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
- def test_shell_args_precedence_1(self, config_mock, vendor_mock):
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_precedence_1(self, setup_handler, config_mock,
+ vendor_mock):
config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
_shell = make_shell()
# Test env var
@@ -758,9 +769,12 @@ class TestShellCliEnv(TestShell):
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
- def test_shell_args_precedence_2(self, config_mock, vendor_mock):
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_precedence_2(self, setup_handler, config_mock,
+ vendor_mock):
config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
_shell = make_shell()
# Test command option overriding config file value
@@ -798,3 +812,77 @@ class TestShellCliEnv(TestShell):
'krikkit',
_shell.cloud.config['region_name'],
)
+
+
+class TestShellCliLogging(TestShell):
+ def setUp(self):
+ super(TestShellCliLogging, self).setUp()
+
+ def tearDown(self):
+ super(TestShellCliLogging, self).tearDown()
+
+ @mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
+ @mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_precedence_1(self, setup_handler, config_mock,
+ vendor_mock):
+ config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
+ vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
+ _shell = make_shell()
+
+ # These come from clouds.yaml
+ fake_execute(
+ _shell,
+ "--os-cloud megacloud list user",
+ )
+ self.assertEqual(
+ 'megacloud',
+ _shell.cloud.name,
+ )
+
+ self.assertEqual(
+ '/tmp/test_log_file',
+ _shell.cloud.config['log_file'],
+ )
+ self.assertEqual(
+ 'debug',
+ _shell.cloud.config['log_level'],
+ )
+
+ @mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
+ @mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
+ def test_shell_args_precedence_2(self, config_mock, vendor_mock):
+ config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_1))
+ vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ _shell = make_shell()
+
+ # Test operation_log_file not set
+ fake_execute(
+ _shell,
+ "--os-cloud scc list user",
+ )
+ self.assertEqual(
+ False,
+ _shell.enable_operation_logging,
+ )
+
+ @mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
+ @mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
+ @mock.patch("openstackclient.common.context._setup_handler_for_logging")
+ def test_shell_args_precedence_3(self, setup_handler, config_mock,
+ vendor_mock):
+ config_mock.return_value = ('file.yaml', copy.deepcopy(CLOUD_2))
+ vendor_mock.return_value = ('file.yaml', copy.deepcopy(PUBLIC_1))
+ setup_handler.return_value = mock.MagicMock()
+ _shell = make_shell()
+
+ # Test enable_operation_logging set
+ fake_execute(
+ _shell,
+ "--os-cloud megacloud list user",
+ )
+ self.assertEqual(
+ True,
+ _shell.enable_operation_logging,
+ )