summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Kosonen <juha.kosonen@nokia.com>2017-10-05 12:53:08 +0300
committerJose Lausuch <jalausuch@suse.com>2017-10-05 12:01:57 +0000
commitfbeac82565ea94534e7bf65c85329950f5232308 (patch)
tree8c48454744411473c56a6e1b66c2dce6a3d9db1b
parentd16cdc0a3ebb8f52a5e2d6d35c19f2eb6bf04d10 (diff)
Live migration support determination in rally
Live migration test cases were excluded if tempest was not executed before rally since tempest config file is created during the execution of tempest. Remove the dependency to config file and define the support based on the number of computes as done in tempest. Change-Id: I57c18b7c57e6a4bc8bfbdfb4beb5f8d67c6269c4 Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com> (cherry picked from commit da2f6a0aabf3b5473e1d2d3f55a5f6c9bb6c8559)
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py31
-rw-r--r--functest/tests/unit/openstack/rally/test_rally.py31
2 files changed, 35 insertions, 27 deletions
diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py
index e92639b29..c295b05aa 100644
--- a/functest/opnfv_tests/openstack/rally/rally.py
+++ b/functest/opnfv_tests/openstack/rally/rally.py
@@ -20,7 +20,6 @@ import subprocess
import time
import uuid
-import iniparse
import pkg_resources
import yaml
@@ -74,8 +73,6 @@ class RallyBase(testcase.TestCase):
ITERATIONS_AMOUNT = 10
CONCURRENCY = 4
RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'), 'rally')
- TEMPEST_CONF_FILE = os.path.join(CONST.__getattribute__('dir_results'),
- 'tempest/tempest.conf')
BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt")
TEMP_DIR = os.path.join(RALLY_DIR, "var")
@@ -117,6 +114,7 @@ class RallyBase(testcase.TestCase):
self.start_time = None
self.result = None
self.details = None
+ self.compute_cnt = 0
def _build_task_args(self, test_file_name):
task_args = {'service_list': [test_file_name]}
@@ -167,7 +165,7 @@ class RallyBase(testcase.TestCase):
if not os.path.exists(self.TEMP_DIR):
os.makedirs(self.TEMP_DIR)
- self.apply_blacklist(scenario_file_name, test_file_name)
+ self._apply_blacklist(scenario_file_name, test_file_name)
return test_file_name
@staticmethod
@@ -205,16 +203,10 @@ class RallyBase(testcase.TestCase):
return True
- @staticmethod
- def live_migration_supported():
+ def _live_migration_supported(self):
"""Determine if live migration is supported."""
- config = iniparse.ConfigParser()
- if (config.read(RallyBase.TEMPEST_CONF_FILE) and
- config.has_section('compute-feature-enabled') and
- config.has_option('compute-feature-enabled',
- 'live_migration')):
- return config.getboolean('compute-feature-enabled',
- 'live_migration')
+ if self.compute_cnt > 1:
+ return True
return False
@@ -273,8 +265,7 @@ class RallyBase(testcase.TestCase):
else:
return False
- @staticmethod
- def excl_func():
+ def excl_func(self):
"""Exclude functionalities."""
black_tests = []
func_list = []
@@ -283,7 +274,7 @@ class RallyBase(testcase.TestCase):
with open(RallyBase.BLACKLIST_FILE, 'r') as black_list_file:
black_list_yaml = yaml.safe_load(black_list_file)
- if not RallyBase.live_migration_supported():
+ if not self._live_migration_supported():
func_list.append("no_live_migration")
if 'functionality' in black_list_yaml.keys():
@@ -298,15 +289,14 @@ class RallyBase(testcase.TestCase):
return black_tests
- @staticmethod
- def apply_blacklist(case_file_name, result_file_name):
+ def _apply_blacklist(self, case_file_name, result_file_name):
"""Apply blacklist."""
LOGGER.debug("Applying blacklist...")
cases_file = open(case_file_name, 'r')
result_file = open(result_file_name, 'w')
- black_tests = list(set(RallyBase.excl_func() +
- RallyBase.excl_scenario()))
+ black_tests = list(set(self.excl_func() +
+ self.excl_scenario()))
if black_tests:
LOGGER.debug("Blacklisted tests: " + str(black_tests))
@@ -483,6 +473,7 @@ class RallyBase(testcase.TestCase):
self.flavor_name = self.FLAVOR_NAME + self.guid
self.flavor_alt_name = self.FLAVOR_ALT_NAME + self.guid
self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds)
+ self.compute_cnt = snaps_utils.get_active_compute_cnt(self.os_creds)
LOGGER.debug("Creating image '%s'...", self.image_name)
image_creator = deploy_utils.create_image(
diff --git a/functest/tests/unit/openstack/rally/test_rally.py b/functest/tests/unit/openstack/rally/test_rally.py
index 827d69d8f..40aab9527 100644
--- a/functest/tests/unit/openstack/rally/test_rally.py
+++ b/functest/tests/unit/openstack/rally/test_rally.py
@@ -66,7 +66,7 @@ class OSRallyTesting(unittest.TestCase):
@mock.patch('functest.opnfv_tests.openstack.rally.rally.os.path.exists')
@mock.patch('functest.opnfv_tests.openstack.rally.rally.os.makedirs')
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
- 'apply_blacklist')
+ '_apply_blacklist')
def test_prepare_test_list_missing_temp_dir(
self, mock_method, mock_os_makedirs, mock_path_exists):
mock_path_exists.side_effect = self.check_temp_dir
@@ -169,7 +169,7 @@ class OSRallyTesting(unittest.TestCase):
return_value={'functionality': [
{'functions': ['no_live_migration'], 'tests': ['test']}]})
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'
- 'live_migration_supported', return_value=False)
+ '_live_migration_supported', return_value=False)
def test_excl_func_default(self, mock_func, mock_yaml_load):
CONST.__setattr__('INSTALLER_TYPE', 'test_installer')
CONST.__setattr__('DEPLOY_SCENARIO', 'test_scenario')
@@ -279,24 +279,31 @@ class OSRallyTesting(unittest.TestCase):
self.rally_base._prepare_env()
@mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+ 'get_active_compute_cnt')
+ @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
'get_ext_net_name', return_value='test_net_name')
@mock.patch('snaps.openstack.utils.deploy_utils.create_image',
return_value=None)
- def test_prepare_env_image_missing(self, mock_get_img, mock_get_net):
+ def test_prepare_env_image_missing(
+ self, mock_get_img, mock_get_net, mock_get_comp_cnt):
self.rally_base.TESTS = ['test1', 'test2']
self.rally_base.test_name = 'test1'
with self.assertRaises(Exception):
self.rally_base._prepare_env()
mock_get_img.assert_called()
mock_get_net.assert_called()
+ mock_get_comp_cnt.assert_called()
@mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+ 'get_active_compute_cnt')
+ @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
'get_ext_net_name', return_value='test_net_name')
@mock.patch('snaps.openstack.utils.deploy_utils.create_image')
@mock.patch('snaps.openstack.utils.deploy_utils.create_network',
return_value=None)
def test_prepare_env_network_creation_failed(
- self, mock_create_net, mock_get_img, mock_get_net):
+ self, mock_create_net, mock_get_img, mock_get_net,
+ mock_get_comp_cnt):
self.rally_base.TESTS = ['test1', 'test2']
self.rally_base.test_name = 'test1'
with self.assertRaises(Exception):
@@ -304,8 +311,11 @@ class OSRallyTesting(unittest.TestCase):
mock_create_net.assert_called()
mock_get_img.assert_called()
mock_get_net.assert_called()
+ mock_get_comp_cnt.assert_called()
@mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+ 'get_active_compute_cnt')
+ @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
'get_ext_net_name', return_value='test_net_name')
@mock.patch('snaps.openstack.utils.deploy_utils.create_image')
@mock.patch('snaps.openstack.utils.deploy_utils.create_network')
@@ -313,7 +323,7 @@ class OSRallyTesting(unittest.TestCase):
return_value=None)
def test_prepare_env_router_creation_failed(
self, mock_create_router, mock_create_net, mock_get_img,
- mock_get_net):
+ mock_get_net, mock_get_comp_cnt):
self.rally_base.TESTS = ['test1', 'test2']
self.rally_base.test_name = 'test1'
with self.assertRaises(Exception):
@@ -322,8 +332,11 @@ class OSRallyTesting(unittest.TestCase):
mock_get_img.assert_called()
mock_get_net.assert_called()
mock_create_router.assert_called()
+ mock_get_comp_cnt.assert_called()
@mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+ 'get_active_compute_cnt')
+ @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
'get_ext_net_name', return_value='test_net_name')
@mock.patch('snaps.openstack.utils.deploy_utils.create_image')
@mock.patch('snaps.openstack.utils.deploy_utils.create_network')
@@ -332,7 +345,7 @@ class OSRallyTesting(unittest.TestCase):
return_value=None)
def test_prepare_env_flavor_creation_failed(
self, mock_create_flavor, mock_create_router, mock_create_net,
- mock_get_img, mock_get_net):
+ mock_get_img, mock_get_net, mock_get_comp_cnt):
self.rally_base.TESTS = ['test1', 'test2']
self.rally_base.test_name = 'test1'
with self.assertRaises(Exception):
@@ -341,9 +354,12 @@ class OSRallyTesting(unittest.TestCase):
mock_get_img.assert_called()
mock_get_net.assert_called()
mock_create_router.assert_called()
+ mock_get_comp_cnt.assert_called()
mock_create_flavor.assert_called_once()
@mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+ 'get_active_compute_cnt')
+ @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
'get_ext_net_name', return_value='test_net_name')
@mock.patch('snaps.openstack.utils.deploy_utils.create_image')
@mock.patch('snaps.openstack.utils.deploy_utils.create_network')
@@ -352,7 +368,7 @@ class OSRallyTesting(unittest.TestCase):
side_effect=[mock.Mock, None])
def test_prepare_env_flavor_alt_creation_failed(
self, mock_create_flavor, mock_create_router, mock_create_net,
- mock_get_img, mock_get_net):
+ mock_get_img, mock_get_net, mock_get_comp_cnt):
self.rally_base.TESTS = ['test1', 'test2']
self.rally_base.test_name = 'test1'
with self.assertRaises(Exception):
@@ -361,6 +377,7 @@ class OSRallyTesting(unittest.TestCase):
mock_get_img.assert_called()
mock_get_net.assert_called()
mock_create_router.assert_called()
+ mock_get_comp_cnt.assert_called()
self.assertEqual(mock_create_flavor.call_count, 2)
@mock.patch('functest.opnfv_tests.openstack.rally.rally.RallyBase.'