aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2019-06-02 14:43:10 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2019-06-02 14:48:29 +0200
commitbc88eff8f5850f8207431bb8d1958fe6b9cd09e8 (patch)
treec76139867a2c9fe5195ddec0a17cf2451effd4b6
parentff54445d53b9e45773b8b56eb24732cdab73d76d (diff)
Publish rally logs
Both Rally and Tempest publish Rally debug logs. It also moves the logics from tempest to rally. Change-Id: I5c057d830202baddd73577ade1b09ce304e3c5a5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py32
-rw-r--r--functest/opnfv_tests/openstack/tempest/tempest.py24
-rw-r--r--functest/tests/unit/openstack/rally/test_rally.py17
3 files changed, 48 insertions, 25 deletions
diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py
index 6dfdabec8..61352c1ed 100644
--- a/functest/opnfv_tests/openstack/rally/rally.py
+++ b/functest/opnfv_tests/openstack/rally/rally.py
@@ -629,6 +629,7 @@ class RallyBase(singlevm.VmReady2):
def clean(self):
"""Cleanup of OpenStack resources. Should be called on completion."""
self.clean_rally_conf()
+ self.clean_rally_logs()
if self.flavor_alt:
self.orig_cloud.delete_flavor(self.flavor_alt.id)
super(RallyBase, self).clean()
@@ -641,12 +642,43 @@ class RallyBase(singlevm.VmReady2):
return super(RallyBase, self).is_successful()
+ @staticmethod
+ def update_rally_logs(res_dir, rally_conf='/etc/rally/rally.conf'):
+ """Print rally logs in res dir"""
+ if not os.path.exists(res_dir):
+ os.makedirs(res_dir)
+ rconfig = configparser.RawConfigParser()
+ rconfig.read(rally_conf)
+ rconfig.set('DEFAULT', 'debug', True)
+ rconfig.set('DEFAULT', 'use_stderr', False)
+ rconfig.set('DEFAULT', 'log-file', 'rally.log')
+ rconfig.set('DEFAULT', 'log_dir', res_dir)
+ with open(rally_conf, 'w') as config_file:
+ rconfig.write(config_file)
+
+ @staticmethod
+ def clean_rally_logs(rally_conf='/etc/rally/rally.conf'):
+ """Clean Rally config"""
+ rconfig = configparser.RawConfigParser()
+ rconfig.read(rally_conf)
+ if rconfig.has_option('DEFAULT', 'use_stderr'):
+ rconfig.remove_option('DEFAULT', 'use_stderr')
+ if rconfig.has_option('DEFAULT', 'debug'):
+ rconfig.remove_option('DEFAULT', 'debug')
+ if rconfig.has_option('DEFAULT', 'log-file'):
+ rconfig.remove_option('DEFAULT', 'log-file')
+ if rconfig.has_option('DEFAULT', 'log_dir'):
+ rconfig.remove_option('DEFAULT', 'log_dir')
+ with open(rally_conf, 'w') as config_file:
+ rconfig.write(config_file)
+
def run(self, **kwargs):
"""Run testcase."""
self.start_time = time.time()
try:
assert super(RallyBase, self).run(
**kwargs) == testcase.TestCase.EX_OK
+ self.update_rally_logs(self.res_dir)
self.create_rally_deployment(environ=self.project.get_environ())
self.prepare_run(**kwargs)
self.run_tests(**kwargs)
diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py
index 831f732d1..fb0c15512 100644
--- a/functest/opnfv_tests/openstack/tempest/tempest.py
+++ b/functest/opnfv_tests/openstack/tempest/tempest.py
@@ -489,19 +489,6 @@ class TempestCommon(singlevm.VmReady2):
with open(rally_conf, 'w') as config_file:
rconfig.write(config_file)
- def update_rally_logs(self, rally_conf='/etc/rally/rally.conf'):
- """Print rally logs in res dir"""
- if not os.path.exists(self.res_dir):
- os.makedirs(self.res_dir)
- rconfig = configparser.RawConfigParser()
- rconfig.read(rally_conf)
- rconfig.set('DEFAULT', 'debug', True)
- rconfig.set('DEFAULT', 'use_stderr', False)
- rconfig.set('DEFAULT', 'log-file', 'rally.log')
- rconfig.set('DEFAULT', 'log_dir', self.res_dir)
- with open(rally_conf, 'w') as config_file:
- rconfig.write(config_file)
-
@staticmethod
def clean_rally_conf(rally_conf='/etc/rally/rally.conf'):
"""Clean Rally config"""
@@ -511,14 +498,6 @@ class TempestCommon(singlevm.VmReady2):
rconfig.remove_option('openstack', 'img_name_regex')
if rconfig.has_option('openstack', 'swift_operator_role'):
rconfig.remove_option('openstack', 'swift_operator_role')
- if rconfig.has_option('DEFAULT', 'use_stderr'):
- rconfig.remove_option('DEFAULT', 'use_stderr')
- if rconfig.has_option('DEFAULT', 'debug'):
- rconfig.remove_option('DEFAULT', 'debug')
- if rconfig.has_option('DEFAULT', 'log-file'):
- rconfig.remove_option('DEFAULT', 'log-file')
- if rconfig.has_option('DEFAULT', 'log_dir'):
- rconfig.remove_option('DEFAULT', 'log_dir')
with open(rally_conf, 'w') as config_file:
rconfig.write(config_file)
@@ -621,7 +600,7 @@ class TempestCommon(singlevm.VmReady2):
os.makedirs(self.res_dir)
self.update_rally_regex()
self.update_default_role()
- self.update_rally_logs()
+ rally.RallyBase.update_rally_logs(self.res_dir)
shutil.copy("/etc/rally/rally.conf", self.res_dir)
self.configure(**kwargs)
self.generate_test_list(**kwargs)
@@ -647,6 +626,7 @@ class TempestCommon(singlevm.VmReady2):
Cleanup all OpenStack objects. Should be called on completion.
"""
self.clean_rally_conf()
+ rally.RallyBase.clean_rally_logs()
if self.image_alt:
self.cloud.delete_image(self.image_alt)
if self.flavor_alt:
diff --git a/functest/tests/unit/openstack/rally/test_rally.py b/functest/tests/unit/openstack/rally/test_rally.py
index 83332c86f..ac52b87eb 100644
--- a/functest/tests/unit/openstack/rally/test_rally.py
+++ b/functest/tests/unit/openstack/rally/test_rally.py
@@ -325,14 +325,19 @@ class OSRallyTesting(unittest.TestCase):
mock_run_task.assert_any_call('test1')
mock_run_task.assert_any_call('test2')
- def test_clean_up_default(self):
+ @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
+ 'clean_rally_logs')
+ def test_clean_up_default(self, *args):
with mock.patch.object(self.rally_base.orig_cloud,
'delete_flavor') as mock_delete_flavor:
self.rally_base.flavor_alt = mock.Mock()
self.rally_base.clean()
self.assertEqual(mock_delete_flavor.call_count, 1)
+ args[0].assert_called_once_with()
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
+ 'update_rally_logs')
+ @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
'create_rally_deployment')
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
'prepare_run')
@@ -348,12 +353,17 @@ class OSRallyTesting(unittest.TestCase):
func.assert_called()
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
+ 'update_rally_logs')
+ @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
'create_rally_deployment', side_effect=Exception)
- def test_run_exception_create_rally_dep(self, mock_create_rally_dep):
+ def test_run_exception_create_rally_dep(self, *args):
self.assertEqual(self.rally_base.run(), testcase.TestCase.EX_RUN_ERROR)
- mock_create_rally_dep.assert_called()
+ args[0].assert_called()
+ args[1].assert_called_once_with(self.rally_base.res_dir)
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
+ 'update_rally_logs')
+ @mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
'create_rally_deployment', return_value=mock.Mock())
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
'prepare_run', side_effect=Exception)
@@ -361,6 +371,7 @@ class OSRallyTesting(unittest.TestCase):
# pylint: disable=unused-argument
self.assertEqual(self.rally_base.run(), testcase.TestCase.EX_RUN_ERROR)
mock_prep_env.assert_called()
+ args[1].assert_called_once_with(self.rally_base.res_dir)
def test_append_summary(self):
json_dict = {