diff options
-rw-r--r-- | docker/Dockerfile | 2 | ||||
-rw-r--r-- | functest/api/resources/v1/envs.py | 9 | ||||
-rw-r--r-- | functest/core/vnf.py | 3 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/snaps/snaps_utils.py | 13 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/conf_utils.py | 13 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/tempest.py | 5 | ||||
-rw-r--r-- | functest/opnfv_tests/vnf/ims/cloudify_ims.py | 8 | ||||
-rw-r--r-- | functest/tests/unit/openstack/tempest/test_tempest.py | 15 |
8 files changed, 52 insertions, 16 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 51d28b90f..abb9b0d70 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -110,3 +110,5 @@ RUN sh -c 'curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -' \ && cd /src/promise/source && npm install RUN echo ". ${FUNCTEST_DIR}/cli/functest-complete.sh" >> /root/.bashrc + +CMD ["functest_restapi"] diff --git a/functest/api/resources/v1/envs.py b/functest/api/resources/v1/envs.py index fb76fa63f..8020544fb 100644 --- a/functest/api/resources/v1/envs.py +++ b/functest/api/resources/v1/envs.py @@ -33,10 +33,11 @@ class V1Envs(ApiResource): def prepare(self, args): # pylint: disable=no-self-use, unused-argument """ Prepare environment """ - try: - ft_utils.execute_command("prepare_env start") - except Exception as err: # pylint: disable=broad-except - return api_utils.result_handler(status=1, data=str(err)) + + result_env = ft_utils.execute_command("prepare_env start") + if not result_env == 0: + return api_utils.result_handler( + status=1, data="Failed to prepare env") return api_utils.result_handler( status=0, data="Prepare env successfully") diff --git a/functest/core/vnf.py b/functest/core/vnf.py index bbdd80a00..868b8b48f 100644 --- a/functest/core/vnf.py +++ b/functest/core/vnf.py @@ -120,10 +120,9 @@ class VnfOnBoarding(base.TestCase): UserSettings( name=self.tenant_name, password=self.tenant_name)) - user_creator.create() self.created_object.append(user_creator) - project_creator.assoc_user(user_creator.user_settings) + project_creator.assoc_user(user_creator.create()) self.snaps_creds = user_creator.get_os_creds(self.tenant_name) diff --git a/functest/opnfv_tests/openstack/snaps/snaps_utils.py b/functest/opnfv_tests/openstack/snaps/snaps_utils.py index 309f9db16..956b104ac 100644 --- a/functest/opnfv_tests/openstack/snaps/snaps_utils.py +++ b/functest/opnfv_tests/openstack/snaps/snaps_utils.py @@ -5,7 +5,7 @@ # # http://www.apache.org/licenses/LICENSE-2.0 -from snaps.openstack.utils import neutron_utils +from snaps.openstack.utils import neutron_utils, nova_utils def get_ext_net_name(os_creds): @@ -17,3 +17,14 @@ def get_ext_net_name(os_creds): neutron = neutron_utils.neutron_client(os_creds) ext_nets = neutron_utils.get_external_networks(neutron) return ext_nets[0].name + + +def get_active_compute_cnt(os_creds): + """ + Returns the number of active compute servers + :param: os_creds: an instance of snaps OSCreds object + :return: the number of active compute servers + """ + nova = nova_utils.nova_client(os_creds) + computes = nova_utils.get_availability_zone_hosts(nova, zone_name='nova') + return len(computes) diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 6c3e820f0..72ea5ce72 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -137,13 +137,14 @@ def backup_tempest_config(conf_file): def configure_tempest(deployment_dir, image_id=None, flavor_id=None, - mode=None): + compute_cnt=None): """ Calls rally verify and updates the generated tempest.conf with given parameters """ conf_file = configure_verifier(deployment_dir) - configure_tempest_update_params(conf_file, image_id, flavor_id) + configure_tempest_update_params(conf_file, image_id, flavor_id, + compute_cnt) def configure_tempest_defcore(deployment_dir, image_id, flavor_id, @@ -199,8 +200,8 @@ def generate_test_accounts_file(tenant_id): yaml.dump(accounts_list, f, default_flow_style=False) -def configure_tempest_update_params(tempest_conf_file, - image_id=None, flavor_id=None): +def configure_tempest_update_params(tempest_conf_file, image_id=None, + flavor_id=None, compute_cnt=1): """ Add/update needed parameters into tempest.conf file """ @@ -223,6 +224,10 @@ def configure_tempest_update_params(tempest_conf_file, config.set('compute', 'flavor_ref', flavor_id) if FLAVOR_ID_ALT is not None: config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT) + if compute_cnt > 1: + # enable multinode tests + config.set('compute', 'min_compute_nodes', compute_cnt) + config.set('identity', 'region', 'RegionOne') if os_utils.is_keystone_v3(): auth_version = 'v3' diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index b8a4e9adc..c204d52b6 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -20,6 +20,7 @@ import time import yaml from functest.core import testcase +from functest.opnfv_tests.openstack.snaps import snaps_utils from functest.opnfv_tests.openstack.tempest import conf_utils from functest.utils.constants import CONST import functest.utils.functest_utils as ft_utils @@ -234,11 +235,13 @@ class TempestCommon(testcase.TestCase): if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR): os.makedirs(conf_utils.TEMPEST_RESULTS_DIR) resources = self.resources.create() + compute_cnt = snaps_utils.get_active_compute_cnt( + self.resources.os_creds) conf_utils.configure_tempest( self.DEPLOYMENT_DIR, image_id=resources.get("image_id"), flavor_id=resources.get("flavor_id"), - mode=self.MODE) + compute_cnt=compute_cnt) self.generate_test_list(self.VERIFIER_REPO_DIR) self.apply_tempest_blacklist() self.run_verifier_tests() diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.py b/functest/opnfv_tests/vnf/ims/cloudify_ims.py index b98cbe9ae..c8c2c509c 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.py +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.py @@ -103,15 +103,15 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): network_quotas = self.os_project.get_network_quotas() for key, value in ( - self.orchestrator['requirements']['compute_quotas'].items()): + self.vnf['requirements']['compute_quotas'].items()): setattr(compute_quotas, key, value) for key, value in ( - self.orchestrator['requirements']['network_quotas'].items()): + self.vnf['requirements']['network_quotas'].items()): setattr(network_quotas, key, value) - compute_quotas = self.project_ims.update_compute_quotas(compute_quotas) - network_quotas = self.project_ims.update_network_quotas(network_quotas) + compute_quotas = self.os_project.update_compute_quotas(compute_quotas) + network_quotas = self.os_project.update_network_quotas(network_quotas) # needs some images self.__logger.info("Upload some OS images if it doesn't exist") diff --git a/functest/tests/unit/openstack/tempest/test_tempest.py b/functest/tests/unit/openstack/tempest/test_tempest.py index 54d7d49bb..6fe103f18 100644 --- a/functest/tests/unit/openstack/tempest/test_tempest.py +++ b/functest/tests/unit/openstack/tempest/test_tempest.py @@ -171,6 +171,19 @@ class OSTempestTesting(unittest.TestCase): @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs') @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'TempestResourcesManager.create', return_value={}) + @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.' + 'get_active_compute_cnt', side_effect=Exception) + def test_run_get_active_compute_cnt_ko(self, *args): + self.assertEqual(self.tempestcommon.run(), + testcase.TestCase.EX_RUN_ERROR) + + @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' + 'os.path.exists', return_value=False) + @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs') + @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' + 'TempestResourcesManager.create', return_value={}) + @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.' + 'get_active_compute_cnt', return_value=2) @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'conf_utils.configure_tempest', side_effect=Exception) def test_run_configure_tempest_ko(self, *args): @@ -182,6 +195,8 @@ class OSTempestTesting(unittest.TestCase): @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs') @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'TempestResourcesManager.create', return_value={}) + @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.' + 'get_active_compute_cnt', return_value=2) @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'conf_utils.configure_tempest') def _test_run(self, status, *args): |