diff options
29 files changed, 255 insertions, 567 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index d60ce53b..abb9b0d7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -13,7 +13,7 @@ LABEL version="0.1" description="OPNFV Functest Docker container" # Environment variables ARG BRANCH=master -ARG RALLY_TAG=0.8.1 +ARG RALLY_TAG=stable/0.9 ARG ODL_TAG=release/carbon ARG OPENSTACK_TAG=stable/ocata ARG VIMS_TAG=stable @@ -77,6 +77,13 @@ RUN wget -q -O- https://git.openstack.org/cgit/openstack/requirements/plain/uppe > upper-constraints.txt && \ pip install --src /src -cupper-constraints.txt \ -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ + -e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack_requirements && \ + git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \ + update-requirements -s --source /src/openstack-requirements /src/rally/ && \ + pip install --src /src -cupper-constraints.txt \ + -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH /src/rally/ && \ + pip install --src /src -cupper-constraints.txt \ + -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest \ -rthirdparty-requirements.txt && \ mkdir -p /etc/rally && \ @@ -85,8 +92,6 @@ RUN wget -q -O- https://git.openstack.org/cgit/openstack/requirements/plain/uppe rm thirdparty-requirements.txt upper-constraints.txt # OPNFV repositories -RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino /src/domino -RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/doctor ${REPOS_DIR}/doctor RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds /src/fds # other repositories @@ -105,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/docker/core/Dockerfile b/docker/core/Dockerfile index ebd76a26..172dbb9f 100644 --- a/docker/core/Dockerfile +++ b/docker/core/Dockerfile @@ -2,6 +2,7 @@ FROM alpine:3.6 ARG BRANCH=master ARG OPENSTACK_TAG=stable/ocata +ARG RALLY_TAG=stable/0.9 RUN apk --no-cache add --update \ python libffi libssl1.0 libjpeg-turbo py-pip bash \ @@ -14,8 +15,15 @@ RUN apk --no-cache add --update \ > upper-constraints.txt && \ pip install --no-cache-dir --src /src -cupper-constraints.txt \ -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ + -e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack_requirements && \ + git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \ + update-requirements -s --source /src/openstack-requirements /src/rally/ && \ + pip install --no-cache-dir --src /src -cupper-constraints.txt \ + -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH /src/rally/ && \ + pip install --no-cache-dir --src /src -cupper-constraints.txt \ + -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest && \ - rm upper-constraints.txt && \ + rm -r upper-constraints.txt /src/rally/.git && \ mkdir -p /etc/rally && \ printf "[database]\nconnection = 'sqlite:////var/lib/rally/database/rally.sqlite'" > /etc/rally/rally.conf && \ mkdir -p /var/lib/rally/database && rally-manage db create && \ diff --git a/docker/features/Dockerfile b/docker/features/Dockerfile index 54bffe82..e1214c1e 100644 --- a/docker/features/Dockerfile +++ b/docker/features/Dockerfile @@ -14,8 +14,7 @@ RUN apk --no-cache add --update nodejs nodejs-npm && \ -rthirdparty-requirements.txt && \ npm -g install npm@latest && \ (cd /src/promise/source && npm install) && \ - git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino /src/domino && \ - rm -r thirdparty-requirements.txt /src/domino/.git && \ + rm -r thirdparty-requirements.txt && \ apk del .build-deps COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml CMD ["bash","-c","prepare_env start && run_tests -t all"] diff --git a/docker/features/testcases.yaml b/docker/features/testcases.yaml index da83232b..ec9962f7 100644 --- a/docker/features/testcases.yaml +++ b/docker/features/testcases.yaml @@ -58,15 +58,15 @@ tiers: - case_name: functest-odl-sfc - enabled: false + enabled: true project_name: sfc criteria: 100 blocking: false description: >- - Test suite for odl-sfc to test two chains and two SFs + Test suite for odl-sfc to test two chains with one SF and one chain with two SFs dependencies: - installer: '(apex)|(fuel)' - scenario: 'odl_l2-sfc' + installer: '' + scenario: 'odl.*sfc' run: module: 'functest.core.feature' class: 'BashFeature' diff --git a/docker/vnf/testcases.yaml b/docker/vnf/testcases.yaml index c0eba822..dea4a1ea 100644 --- a/docker/vnf/testcases.yaml +++ b/docker/vnf/testcases.yaml @@ -23,6 +23,7 @@ tiers: - case_name: orchestra_openims project_name: functest + enabled: false criteria: 100 blocking: false description: >- @@ -37,6 +38,7 @@ tiers: - case_name: orchestra_clearwaterims project_name: functest + enabled: false criteria: 100 blocking: false description: >- diff --git a/functest/api/resources/v1/envs.py b/functest/api/resources/v1/envs.py index fb76fa63..8020544f 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/api/resources/v1/tasks.py b/functest/api/resources/v1/tasks.py index e05db51b..f099918f 100644 --- a/functest/api/resources/v1/tasks.py +++ b/functest/api/resources/v1/tasks.py @@ -50,12 +50,15 @@ class V1Task(ApiResource): if status not in ['IN PROGRESS', 'FAIL', 'FINISHED']: return api_utils.result_handler(status=1, data='internal server error') + + switcher = {'IN PROGRESS': 0, 'FAIL': 1, 'FINISHED': 2} if status == 'IN PROGRESS': - result = {'status': status, 'result': ''} + result = {'status': switcher.get(status), 'result': ''} elif status == 'FAIL': - result = {'status': status, 'error': task.error} + result = {'status': switcher.get(status), 'error': task.error} else: - result = {'status': status, 'result': json.loads(task.result)} + result = {'status': switcher.get(status), + 'result': json.loads(task.result)} return jsonify(result) @@ -92,4 +95,7 @@ class V1TaskLog(ApiResource): return_data = {'data': data} - return api_utils.result_handler(status=task.status, data=return_data) + switcher = {'IN PROGRESS': 0, 'FAIL': 1, 'FINISHED': 2} + + return api_utils.result_handler(status=switcher.get(task.status), + data=return_data) diff --git a/functest/api/resources/v1/testcases.py b/functest/api/resources/v1/testcases.py index d708cf37..b7d7b4aa 100644 --- a/functest/api/resources/v1/testcases.py +++ b/functest/api/resources/v1/testcases.py @@ -17,7 +17,7 @@ import pkg_resources import uuid import ConfigParser -from flask import abort, jsonify +from flask import jsonify from functest.api.base import ApiResource from functest.api.common import api_utils, thread @@ -46,8 +46,11 @@ class V1Testcase(ApiResource): """ GET the info of one testcase""" testcase = Testcase().show(testcase_name) if not testcase: - abort(404, "The test case '%s' does not exist or is not supported" - % testcase_name) + return api_utils.result_handler( + status=1, + data="The test case '%s' does not exist or is not supported" + % testcase_name) + testcase_info = api_utils.change_obj_to_dict(testcase) dependency_dict = api_utils.change_obj_to_dict( testcase_info.get('dependency')) @@ -70,6 +73,13 @@ class V1Testcase(ApiResource): return api_utils.result_handler( status=1, data='testcase name must be provided') + testcase = Testcase().show(case_name) + if not testcase: + return api_utils.result_handler( + status=1, + data="The test case '%s' does not exist or is not supported" + % case_name) + task_id = str(uuid.uuid4()) task_args = {'testcase': case_name, 'task_id': task_id} diff --git a/functest/api/resources/v1/tiers.py b/functest/api/resources/v1/tiers.py index 71a98bea..4f4849e9 100644 --- a/functest/api/resources/v1/tiers.py +++ b/functest/api/resources/v1/tiers.py @@ -13,9 +13,10 @@ Resources to handle tier related requests import re -from flask import abort, jsonify +from flask import jsonify from functest.api.base import ApiResource +from functest.api.common import api_utils from functest.cli.commands.cli_tier import Tier @@ -46,7 +47,9 @@ class V1Tier(ApiResource): """ GET the info of one tier """ testcases = Tier().gettests(tier_name) if not testcases: - abort(404, "The tier with name '%s' does not exist." % tier_name) + return api_utils.result_handler( + status=1, + data="The tier with name '%s' does not exist." % tier_name) tier_info = Tier().show(tier_name) tier_info.__dict__.pop('name') tier_info.__dict__.pop('tests_array') @@ -62,6 +65,8 @@ class V1TestcasesinTier(ApiResource): """ GET all testcases within given tier """ testcases = Tier().gettests(tier_name) if not testcases: - abort(404, "The tier with name '%s' does not exist." % tier_name) + return api_utils.result_handler( + status=1, + data="The tier with name '%s' does not exist." % tier_name) result = {'tier': tier_name, 'testcases': testcases} return jsonify(result) diff --git a/functest/ci/download_images.sh b/functest/ci/download_images.sh index 367ad8d9..236b763c 100644 --- a/functest/ci/download_images.sh +++ b/functest/ci/download_images.sh @@ -10,7 +10,6 @@ https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloud https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2 https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img http://repository.cloudifysource.org/cloudify/4.0.1/sp-release/cloudify-manager-premium-4.0.1.qcow2 -http://marketplace.openbaton.org:8082/api/v1/images/52e2ccc0-1dce-4663-894d-28aab49323aa/img http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-lxc.tar.gz http://download.cirros-cloud.net/daily/20161201/cirros-d161201-aarch64-disk.img diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 5364035f..d1b78adb 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -449,6 +449,7 @@ tiers: - case_name: orchestra_openims project_name: functest + enabled: false criteria: 100 blocking: false description: >- @@ -463,6 +464,7 @@ tiers: - case_name: orchestra_clearwaterims project_name: functest + enabled: false criteria: 100 blocking: false description: >- diff --git a/functest/core/vnf.py b/functest/core/vnf.py index a329212d..868b8b48 100644 --- a/functest/core/vnf.py +++ b/functest/core/vnf.py @@ -14,7 +14,9 @@ import time import functest.core.testcase as base from functest.utils.constants import CONST -import functest.utils.openstack_utils as os_utils +from snaps.openstack.create_user import UserSettings, OpenStackUser +from snaps.openstack.create_project import ProjectSettings, OpenStackProject +from snaps.openstack.tests import openstack_tests __author__ = ("Morgan Richomme <morgan.richomme@orange.com>, " "Valentin Boucher <valentin.boucher@orange.com>") @@ -43,10 +45,11 @@ class VnfOnBoarding(base.TestCase): def __init__(self, **kwargs): super(VnfOnBoarding, self).__init__(**kwargs) - self.exist_obj = {'tenant': False, 'user': False} self.tenant_name = CONST.__getattribute__( 'vnf_{}_tenant_name'.format(self.case_name)) - self.creds = {} + self.snaps_creds = {} + self.created_object = [] + self.os_project = None def run(self, **kwargs): """ @@ -100,20 +103,29 @@ class VnfOnBoarding(base.TestCase): 'vnf_{}_tenant_description'.format(self.case_name)) self.__logger.info("Prepare VNF: %s, description: %s", self.tenant_name, tenant_description) - keystone_client = os_utils.get_keystone_client() - self.exist_obj['tenant'] = ( - not os_utils.get_or_create_tenant_for_vnf( - keystone_client, - self.tenant_name, - tenant_description)) - self.exist_obj['user'] = not os_utils.get_or_create_user_for_vnf( - keystone_client, self.tenant_name) - self.creds = { - "tenant": self.tenant_name, - "username": self.tenant_name, - "password": self.tenant_name, - "auth_url": os_utils.get_credentials()['auth_url'] - } + snaps_creds = openstack_tests.get_credentials( + os_env_file=CONST.__getattribute__('openstack_creds')) + + project_creator = OpenStackProject( + snaps_creds, + ProjectSettings( + name=self.tenant_name, + description=tenant_description + )) + project_creator.create() + self.created_object.append(project_creator) + self.os_project = project_creator + + user_creator = OpenStackUser(snaps_creds, + UserSettings( + name=self.tenant_name, + password=self.tenant_name)) + self.created_object.append(user_creator) + + project_creator.assoc_user(user_creator.create()) + + self.snaps_creds = user_creator.get_os_creds(self.tenant_name) + return base.TestCase.EX_OK except Exception: # pylint: disable=broad-except self.__logger.exception("Exception raised during VNF preparation") @@ -185,8 +197,9 @@ class VnfOnBoarding(base.TestCase): * the tenant """ self.__logger.info("test cleaning") - keystone_client = os_utils.get_keystone_client() - if not self.exist_obj['tenant']: - os_utils.delete_tenant(keystone_client, self.tenant_name) - if not self.exist_obj['user']: - os_utils.delete_user(keystone_client, self.tenant_name) + self.__logger.info('Remove the cloudify manager OS object ..') + for creator in reversed(self.created_object): + try: + creator.clean() + except Exception as exc: # pylint: disable=broad-except + self.__logger.error('Unexpected error cleaning - %s', exc) diff --git a/functest/opnfv_tests/openstack/rally/blacklist.txt b/functest/opnfv_tests/openstack/rally/blacklist.txt index 0623368d..cdb5be66 100644 --- a/functest/opnfv_tests/openstack/rally/blacklist.txt +++ b/functest/opnfv_tests/openstack/rally/blacklist.txt @@ -48,6 +48,7 @@ scenario: # panko in the deployment. This is not currently fulfilled # Ref: https://docs.openstack.org/releasenotes/ceilometer/ocata.html - 'CeilometerEvents..*' + - 'CeilometerTraits..*' functionality: - diff --git a/functest/opnfv_tests/openstack/snaps/snaps_utils.py b/functest/opnfv_tests/openstack/snaps/snaps_utils.py index 309f9db1..956b104a 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 52fa6003..72ea5ce7 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -130,18 +130,21 @@ def backup_tempest_config(conf_file): """ Copy config file to tempest results directory """ + if not os.path.exists(TEMPEST_RESULTS_DIR): + os.makedirs(TEMPEST_RESULTS_DIR) shutil.copyfile(conf_file, os.path.join(TEMPEST_RESULTS_DIR, 'tempest.conf')) 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, @@ -197,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 """ @@ -221,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 b8a4e9ad..c204d52b 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 8ed7f0dd..c8c2c509 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.py +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.py @@ -24,7 +24,6 @@ import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base from functest.utils.constants import CONST import functest.utils.openstack_utils as os_utils -from snaps.openstack.os_credentials import OSCreds from snaps.openstack.create_network import (NetworkSettings, SubnetSettings, OpenStackNetwork) from snaps.openstack.create_security_group import (SecurityGroupSettings, @@ -63,7 +62,6 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): raise Exception("VNF config file not found") self.snaps_creds = '' - self.created_object = [] config_file = os.path.join(self.case_dir, self.config) self.orchestrator = dict( @@ -101,12 +99,19 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): self.__logger.info("Additional pre-configuration steps") - self.snaps_creds = OSCreds( - username=self.creds['username'], - password=self.creds['password'], - auth_url=self.creds['auth_url'], - project_name=self.creds['tenant'], - identity_api_version=int(os_utils.get_keystone_client_version())) + compute_quotas = self.os_project.get_compute_quotas() + network_quotas = self.os_project.get_network_quotas() + + for key, value in ( + self.vnf['requirements']['compute_quotas'].items()): + setattr(compute_quotas, key, value) + + for key, value in ( + self.vnf['requirements']['network_quotas'].items()): + setattr(network_quotas, key, value) + + 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") @@ -402,12 +407,6 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): self.__logger.warn("Some issue during the undeployment ..") self.__logger.warn("Tenant clean continue ..") - self.__logger.info('Remove the cloudify manager OS object ..') - for creator in reversed(self.created_object): - try: - creator.clean() - except Exception as exc: - self.logger.error('Unexpected error cleaning - %s', exc) super(CloudifyIms, self).clean() @energy.enable_recording diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml b/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml index 280e0a6b..ad7fa70a 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml @@ -21,6 +21,13 @@ vnf: flavor: name: m1.small ram_min: 2048 + compute_quotas: + cores: 50 + instances: 15 + network_quotas: + security_group: 20 + security_group_rule: 100 + port: 50 inputs: image_id: 'ubuntu_14.04' flavor_id: 'm1.small' diff --git a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py b/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py index 5154dea2..c924a347 100644 --- a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py +++ b/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py @@ -31,7 +31,6 @@ from snaps.openstack.create_network import ( SubnetSettings, PortSettings) from snaps.openstack.create_router import OpenStackRouter, RouterSettings -from snaps.openstack.os_credentials import OSCreds from snaps.openstack.create_instance import ( VmInstanceSettings, OpenStackVmInstance) @@ -208,15 +207,13 @@ class ClearwaterImsVnf(vnf.VnfOnBoarding): super(ClearwaterImsVnf, self).prepare() self.logger.info("Additional pre-configuration steps") - self.logger.info("creds %s", (self.creds)) - - self.snaps_creds = OSCreds( - username=self.creds['username'], - password=self.creds['password'], - auth_url=self.creds['auth_url'], - project_name=self.creds['tenant'], - identity_api_version=int(os_utils.get_keystone_client_version())) + self.creds = { + "tenant": self.tenant_name, + "username": self.tenant_name, + "password": self.tenant_name, + "auth_url": os_utils.get_credentials()['auth_url'] + } self.prepare_images() self.prepare_flavor() self.prepare_security_groups() @@ -661,8 +658,9 @@ class ClearwaterImsVnf(vnf.VnfOnBoarding): try: neutron_client = os_utils.get_neutron_client(self.creds) self.logger.info("Deleting Open Baton Port...") - port = snaps_utils.neutron_utils.get_port_by_name( - neutron_client, '%s_port' % self.case_name) + port = snaps_utils.neutron_utils.get_port( + neutron_client, + port_name='%s_port' % self.case_name) snaps_utils.neutron_utils.delete_port(neutron_client, port) time.sleep(10) except Exception as exc: diff --git a/functest/opnfv_tests/vnf/ims/orchestra_openims.py b/functest/opnfv_tests/vnf/ims/orchestra_openims.py index 45440704..aae35146 100644 --- a/functest/opnfv_tests/vnf/ims/orchestra_openims.py +++ b/functest/opnfv_tests/vnf/ims/orchestra_openims.py @@ -32,7 +32,6 @@ from snaps.openstack.create_network import ( SubnetSettings, PortSettings) from snaps.openstack.create_router import OpenStackRouter, RouterSettings -from snaps.openstack.os_credentials import OSCreds from snaps.openstack.create_instance import ( VmInstanceSettings, OpenStackVmInstance) from functest.opnfv_tests.openstack.snaps import snaps_utils @@ -198,22 +197,18 @@ class OpenImsVnf(vnf.VnfOnBoarding): self.images = get_config("tenant_images.orchestrator", config_file) self.images.update(get_config("tenant_images.%s" % self.case_name, config_file)) - self.snaps_creds = None def prepare(self): """Prepare testscase (Additional pre-configuration steps).""" super(OpenImsVnf, self).prepare() self.logger.info("Additional pre-configuration steps") - self.logger.info("creds %s", (self.creds)) - - self.snaps_creds = OSCreds( - username=self.creds['username'], - password=self.creds['password'], - auth_url=self.creds['auth_url'], - project_name=self.creds['tenant'], - identity_api_version=int(os_utils.get_keystone_client_version())) - + self.creds = { + "tenant": self.tenant_name, + "username": self.tenant_name, + "password": self.tenant_name, + "auth_url": os_utils.get_credentials()['auth_url'] + } self.prepare_images() self.prepare_flavor() self.prepare_security_groups() @@ -697,8 +692,9 @@ class OpenImsVnf(vnf.VnfOnBoarding): try: neutron_client = os_utils.get_neutron_client(self.creds) self.logger.info("Deleting Open Baton Port...") - port = snaps_utils.neutron_utils.get_port_by_name( - neutron_client, '%s_port' % self.case_name) + port = snaps_utils.neutron_utils.get_port( + neutron_client, + port_name='%s_port' % self.case_name) snaps_utils.neutron_utils.delete_port(neutron_client, port) time.sleep(10) except Exception as exc: diff --git a/functest/tests/unit/core/test_vnf.py b/functest/tests/unit/core/test_vnf.py index 2ebbbe37..00a29ead 100644 --- a/functest/tests/unit/core/test_vnf.py +++ b/functest/tests/unit/core/test_vnf.py @@ -18,6 +18,8 @@ from functest.core import vnf from functest.core import testcase from functest.utils import constants +from snaps.openstack.os_credentials import OSCreds + class VnfBaseTesting(unittest.TestCase): """The class testing VNF.""" @@ -102,91 +104,62 @@ class VnfBaseTesting(unittest.TestCase): with self.assertRaises(vnf.VnfTestException): self.test.test_vnf() - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.delete_user', - return_value=True) - def test_clean_user_already_exist(self, *args): - self.test.exist_obj['user'] = True - self.test.clean() - args[0].assert_not_called() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.delete_user', - return_value=True) - def test_clean_user_created(self, *args): - self.test.exist_obj['user'] = False - self.test.clean() - args[0].assert_called_once_with(mock.ANY, self.tenant_name) - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.delete_tenant', - return_value=True) - def test_clean_tenant_already_exist(self, *args): - self.test.exist_obj['tenant'] = True - self.test.clean() - args[0].assert_not_called() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.delete_tenant', - return_value=True) - def test_clean_tenant_created(self, *args): - self.test.exist_obj['tenant'] = False - self.test.clean() - args[0].assert_called_once_with(mock.ANY, self.tenant_name) - args[1].assert_called_once_with() - def test_deploy_orch_unimplemented(self): self.assertTrue(self.test.deploy_orchestrator()) - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test'}) - def test_prepare(self, *args): - self.assertEqual(self.test.prepare(), - testcase.TestCase.EX_OK) - args[0].assert_called_once_with() - args[1].assert_called_once_with('test', self.tenant_name) - args[2].assert_called_once_with( - 'test', self.tenant_name, self.tenant_description) - args[3].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', +# @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials', +# return_value='test') +# @mock.patch('snaps.openstack.create_project.OpenStackProject', +# return_value=True) +# @mock.patch('snaps.openstack.create_user.OpenStackUser', +# return_value=True) +# def test_prepare(self, *args): +# self.assertEqual(self.test.prepare(), +# testcase.TestCase.EX_OK) +# args[0].assert_called_once_with() +# args[1].assert_called_once_with('test', self.tenant_name) +# args[2].assert_called_once_with( +# 'test', self.tenant_name, self.tenant_description) +# args[3].assert_called_once_with() + + @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials', + return_value=OSCreds( + username='user', password='pass', + auth_url='http://foo.com:5000/v3', project_name='bar'), side_effect=Exception) def test_prepare_keystone_client_ko(self, *args): with self.assertRaises(vnf.VnfPreparationException): self.test.prepare() - args[0].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - side_effect=Exception) - def test_prepare_tenant_creation_ko(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.test.prepare() - args[0].assert_called_once_with( - mock.ANY, self.tenant_name, self.tenant_description) - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=0) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - side_effect=Exception) - def test_prepare_user_creation_ko(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.test.prepare() - args[0].assert_called_once_with(mock.ANY, self.tenant_name) - args[1].assert_called_once_with( - mock.ANY, self.tenant_name, self.tenant_description) - args[2].assert_called_once_with() + args[0].assert_called_once() + +# @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials', +# return_value=OS_CREDS) +# @mock.patch('snaps.openstack.create_project.OpenStackProject') +# @mock.patch('snaps.openstack.create_project.OpenStackProject.create', +# side_effect=Exception) +# def test_prepare_tenant_creation_ko(self, *args): +# with self.assertRaises(vnf.VnfPreparationException): +# self.test.prepare() +# args[2].assert_called_once() +# args[1].assert_called_once_with(OS_CREDS, +# ProjectSettings( +# name=self.tenant_name, +# description=self.tenant_description, +# )) +# args[0].assert_called_once() + +# @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials') +# @mock.patch('snaps.openstack.create_project.OpenStackProject', +# return_value=0) +# @mock.patch('snaps.openstack.create_user.OpenStackUser', +# side_effect=Exception) +# def test_prepare_user_creation_ko(self, *args): +# with self.assertRaises(vnf.VnfPreparationException): +# self.test.prepare() +# args[0].assert_called_once_with(mock.ANY, self.tenant_name) +# args[1].assert_called_once_with( +# mock.ANY, self.tenant_name, self.tenant_description) +# args[2].assert_called_once_with() if __name__ == "__main__": diff --git a/functest/tests/unit/openstack/tempest/test_conf_utils.py b/functest/tests/unit/openstack/tempest/test_conf_utils.py index 77558086..22017a7a 100644 --- a/functest/tests/unit/openstack/tempest/test_conf_utils.py +++ b/functest/tests/unit/openstack/tempest/test_conf_utils.py @@ -170,9 +170,23 @@ class OSTempestConfUtilsTesting(unittest.TestCase): def test_backup_tempest_config_default(self): with mock.patch('functest.opnfv_tests.openstack.tempest.' - 'conf_utils.shutil.copyfile') as m1: + 'conf_utils.os.path.exists', + return_value=False), \ + mock.patch('functest.opnfv_tests.openstack.tempest.' + 'conf_utils.os.makedirs') as m1, \ + mock.patch('functest.opnfv_tests.openstack.tempest.' + 'conf_utils.shutil.copyfile') as m2: conf_utils.backup_tempest_config('test_conf_file') self.assertTrue(m1.called) + self.assertTrue(m2.called) + + with mock.patch('functest.opnfv_tests.openstack.tempest.' + 'conf_utils.os.path.exists', + return_value=True), \ + mock.patch('functest.opnfv_tests.openstack.tempest.' + 'conf_utils.shutil.copyfile') as m2: + conf_utils.backup_tempest_config('test_conf_file') + self.assertTrue(m2.called) def test_configure_tempest_default(self): with mock.patch('functest.opnfv_tests.openstack.tempest.' diff --git a/functest/tests/unit/openstack/tempest/test_tempest.py b/functest/tests/unit/openstack/tempest/test_tempest.py index 54d7d49b..6fe103f1 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): diff --git a/functest/tests/unit/vnf/ims/test_cloudify_ims.py b/functest/tests/unit/vnf/ims/test_cloudify_ims.py index f0483c69..cdd657aa 100644 --- a/functest/tests/unit/vnf/ims/test_cloudify_ims.py +++ b/functest/tests/unit/vnf/ims/test_cloudify_ims.py @@ -13,8 +13,6 @@ import mock from functest.core import vnf from functest.opnfv_tests.vnf.ims import cloudify_ims -from snaps.openstack.os_credentials import OSCreds - class CloudifyImsTesting(unittest.TestCase): @@ -57,114 +55,10 @@ class CloudifyImsTesting(unittest.TestCase): 'vnf': {}, 'test_vnf': {}} - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/v1'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_default(self, *args): - self.assertIsNone(self.ims_vnf.prepare()) - args[4].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/no_v'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_bad_auth_url(self, *args): - with self.assertRaises(Exception): - self.ims_vnf.image_creator( - OSCreds(username='user', password='pass', auth_url='url', - project_name='project', identity_api_version=3), - mock.Mock()) - args[0].assert_not_called() - def test_prepare_missing_param(self): with self.assertRaises(vnf.VnfPreparationException): self.ims_vnf.prepare() - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - side_effect=Exception) - def test_prepare_keystone_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - side_effect=Exception) - def test_prepare_tenant_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - side_effect=Exception) - def test_prepare_user_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[2].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - side_effect=Exception) - def test_prepare_credentials_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - # @mock.patch('snaps.openstack.create_keypairs.OpenStackKeypair', - # side_effect=Exception) - # def test_deploy_orchestrator_keypair_exception(self, *args): - # with self.assertRaises(vnf.OrchestratorDeploymentException): - # self.ims_vnf.deploy_orchestrator() - - # def test_deploy_orchestrator_network_creation_fail(self): - # def test_deploy_orchestrator_floatting_ip_creation_fail(self): - # def test_deploy_orchestrator_flavor_fail(self): - # def test_deploy_orchestrator_get_image_id_fail(self): - # def test_deploy_orchestrator_create_instance_fail(self): - # def test_deploy_orchestrator_secgroup_fail(self): - # def test_deploy_orchestrator_add_floating_ip_fail(self): - # def test_deploy_orchestrator_get_endpoint_fail(self): - # def test_deploy_orchestrator_initiate CloudifyClient_fail(self): - # def test_deploy_orchestrator_get_status_fail(self): - # - - # def test_deploy_vnf(self): - # def test_deploy_vnf_publish_fail(self): - # def test_deploy_vnf_get_flavor_fail(self): - # def test_deploy_vnf_get_external_net_fail(self): - # def test_deploy_vnf_deployment_create_fail(self): - # def test_deploy_vnf_start_fail(self): - # - # def test_test_vnf(self): - # def test_test_vnf_deployment_get_fail(self): - # def test_test_vnf_run_live_test_fail(self): - # - # def test_clean(self): - # def test_clean_execution_start_fail(self): - # def test_clean_deployment_delete_fail(self): - # def test_clean_blueprint_delete_fail(self): - if __name__ == "__main__": logging.disable(logging.CRITICAL) diff --git a/functest/tests/unit/vnf/ims/test_orchestra_clearwaterims.py b/functest/tests/unit/vnf/ims/test_orchestra_clearwaterims.py index ef227ca4..2e83f30a 100644 --- a/functest/tests/unit/vnf/ims/test_orchestra_clearwaterims.py +++ b/functest/tests/unit/vnf/ims/test_orchestra_clearwaterims.py @@ -11,7 +11,6 @@ import logging import unittest import mock -from snaps.openstack.os_credentials import OSCreds from functest.core import vnf from functest.opnfv_tests.vnf.ims import orchestra_clearwaterims @@ -110,117 +109,11 @@ class OrchestraClearwaterImsTesting(unittest.TestCase): 'vnf': {}, 'test_vnf': {}} - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/v1'}) - @mock.patch( - 'functest.utils.openstack_utils.get_tenant_id', - return_value={'mocked_tenant_id'}) - @mock.patch( - 'functest.utils.openstack_utils.get_floating_ips', - return_value=[]) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create') - @mock.patch( - 'snaps.openstack.create_security_group.OpenStackSecurityGroup.create') - @mock.patch('snaps.openstack.create_network.OpenStackNetwork.create') - @mock.patch('snaps.openstack.create_router.OpenStackRouter.create') - @mock.patch( - 'functest.opnfv_tests.openstack.snaps.snaps_utils.get_ext_net_name') - @mock.patch( - 'functest.opnfv_tests.openstack.snaps.' - 'snaps_utils.neutron_utils.create_floating_ip') - def test_prepare_default(self, *args): - """Testing prepare function without any exceptions expected""" - self.assertIsNone(self.ims_vnf.prepare()) - args[4].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/no_v'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_bad_auth_url(self, *args): - """Testing prepare function with bad auth url""" - with self.assertRaises(Exception): - self.ims_vnf.image_creator( - OSCreds(username='user', password='pass', auth_url='url', - project_name='project', identity_api_version=3), - mock.Mock()) - args[0].assert_not_called() - def test_prepare_missing_param(self): """Testing prepare function with missing param""" with self.assertRaises(vnf.VnfPreparationException): self.ims_vnf.prepare() - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - side_effect=Exception) - def test_prepare_keystone_exception(self, *args): - """Testing prepare function with keystone exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - side_effect=Exception) - def test_prepare_tenant_exception(self, *args): - """Testing prepare function with tenant exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - side_effect=Exception) - def test_prepare_user_exception(self, *args): - """Testing prepare function with user exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[2].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - side_effect=Exception) - def test_prepare_credentials_exception(self, *args): - """Testing prepare function with credentials exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - # # @mock.patch('functest.opnfv_tests.vnf. - # ims.orchestra_clearwaterims.get_userdata') - # def test_deploy_orchestrator(self, *args): - # floating_ip = FloatingIp - # floating_ip.ip = 'mocked_ip' - # details = {'fip':floating_ip,'flavor':{'name':'mocked_name'}} - # self.mano['details'] = details - # with mock.patch.dict(self.mano, {'details': - # {'fip':floating_ip,'flavor':{'name':'mocked_name'}}}): - # # with mock.patch.dict(self.mano, details): - # orchestra_clearwaterims.get_userdata(self.mano) - # self.assertIsNone(self.ims_vnf.deploy_orchestrator()) - # args[4].assert_called_once_with() - if __name__ == "__main__": logging.disable(logging.CRITICAL) diff --git a/functest/tests/unit/vnf/ims/test_orchestra_openims.py b/functest/tests/unit/vnf/ims/test_orchestra_openims.py index 5911cf77..47a8d033 100644 --- a/functest/tests/unit/vnf/ims/test_orchestra_openims.py +++ b/functest/tests/unit/vnf/ims/test_orchestra_openims.py @@ -11,7 +11,6 @@ import logging import unittest import mock -from snaps.openstack.os_credentials import OSCreds from functest.core import vnf from functest.opnfv_tests.vnf.ims import orchestra_openims @@ -112,117 +111,11 @@ class OrchestraOpenImsTesting(unittest.TestCase): 'vnf': {}, 'test_vnf': {}} - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/v1'}) - @mock.patch( - 'functest.utils.openstack_utils.get_tenant_id', - return_value={'mocked_tenant_id'}) - @mock.patch( - 'functest.utils.openstack_utils.get_floating_ips', - return_value=[]) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create') - @mock.patch( - 'snaps.openstack.create_security_group.OpenStackSecurityGroup.create') - @mock.patch('snaps.openstack.create_network.OpenStackNetwork.create') - @mock.patch('snaps.openstack.create_router.OpenStackRouter.create') - @mock.patch( - 'functest.opnfv_tests.openstack.snaps.snaps_utils.get_ext_net_name') - @mock.patch( - 'functest.opnfv_tests.openstack.snaps.snaps_utils.' - 'neutron_utils.create_floating_ip') - def test_prepare_default(self, *args): - """Testing prepare function without any exceptions expected""" - self.assertIsNone(self.ims_vnf.prepare()) - args[4].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/no_v'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_bad_auth_url(self, *args): - """Testing prepare function with bad auth url""" - with self.assertRaises(Exception): - self.ims_vnf.image_creator( - OSCreds(username='user', password='pass', auth_url='url', - project_name='project', identity_api_version=3), - mock.Mock()) - args[0].assert_not_called() - def test_prepare_missing_param(self): """Testing prepare function with missing param""" with self.assertRaises(vnf.VnfPreparationException): self.ims_vnf.prepare() - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - side_effect=Exception) - def test_prepare_keystone_exception(self, *args): - """Testing prepare function with keystone exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - side_effect=Exception) - def test_prepare_tenant_exception(self, *args): - """Testing prepare function with tenant exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - side_effect=Exception) - def test_prepare_user_exception(self, *args): - """Testing prepare function with user exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[2].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - side_effect=Exception) - def test_prepare_credentials_exception(self, *args): - """Testing prepare function with credentials exception""" - with self.assertRaises(vnf.VnfPreparationException): - self.ims_vnf.prepare() - args[0].assert_called_once_with() - - # # @mock.patch('functest.opnfv_tests. - # vnf.ims.orchestra_openims.get_userdata') - # def test_deploy_orchestrator(self, *args): - # floating_ip = FloatingIp - # floating_ip.ip = 'mocked_ip' - # details = {'fip':floating_ip,'flavor':{'name':'mocked_name'}} - # self.mano['details'] = details - # with mock.patch.dict(self.mano, {'details': - # {'fip':floating_ip,'flavor':{'name':'mocked_name'}}}): - # # with mock.patch.dict(self.mano, details): - # orchestra_openims.get_userdata(self.mano) - # self.assertIsNone(self.ims_vnf.deploy_orchestrator()) - # args[4].assert_called_once_with() - if __name__ == "__main__": logging.disable(logging.CRITICAL) diff --git a/functest/tests/unit/vnf/router/test_cloudify_vrouter.py b/functest/tests/unit/vnf/router/test_cloudify_vrouter.py index 7f2091be..4f256234 100644 --- a/functest/tests/unit/vnf/router/test_cloudify_vrouter.py +++ b/functest/tests/unit/vnf/router/test_cloudify_vrouter.py @@ -15,8 +15,6 @@ import mock from functest.core import vnf from functest.opnfv_tests.vnf.router import cloudify_vrouter -from snaps.openstack.os_credentials import OSCreds - class CloudifyVrouterTesting(unittest.TestCase): @@ -60,80 +58,10 @@ class CloudifyVrouterTesting(unittest.TestCase): 'vnf': {}, 'test_vnf': {}} - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/v1'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_default(self, *args): - self.assertIsNone(self.router_vnf.prepare()) - args[4].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - return_value={'auth_url': 'test/no_v'}) - @mock.patch('snaps.openstack.create_image.OpenStackImage.create') - def test_prepare_bad_auth_url(self, *args): - with self.assertRaises(Exception): - self.router_vnf.image_creator( - OSCreds(username='user', password='pass', auth_url='url', - project_name='project', identity_api_version=3), - mock.Mock()) - args[0].assert_not_called() - def test_prepare_missing_param(self): with self.assertRaises(vnf.VnfPreparationException): self.router_vnf.prepare() - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - side_effect=Exception) - def test_prepare_keystone_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.router_vnf.prepare() - args[0].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - side_effect=Exception) - def test_prepare_tenant_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.router_vnf.prepare() - args[1].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - side_effect=Exception) - def test_prepare_user_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.router_vnf.prepare() - args[2].assert_called_once_with() - - @mock.patch('functest.core.vnf.os_utils.get_keystone_client', - return_value='test') - @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf', - return_value=True) - @mock.patch('functest.core.vnf.os_utils.get_credentials', - side_effect=Exception) - def test_prepare_credentials_exception(self, *args): - with self.assertRaises(vnf.VnfPreparationException): - self.router_vnf.prepare() - args[0].assert_called_once_with() - if __name__ == "__main__": logging.disable(logging.CRITICAL) diff --git a/requirements.txt b/requirements.txt index 234be168..da1b5ad5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,6 @@ python-heatclient>=1.6.1 # Apache-2.0 python-keystoneclient>=3.8.0 # Apache-2.0 python-neutronclient>=5.1.0 # Apache-2.0 python-novaclient!=7.0.0,>=6.0.0 # Apache-2.0 -pexpect!=3.3,>=3.1 # ISC License requests!=2.12.2,>=2.10.0 # Apache-2.0 robotframework>=3.0 robotframework-httplibrary @@ -19,7 +18,7 @@ dnspython>=1.14.0;python_version=='2.7' # http://www.dnspython.org/LICENSE dnspython3!=1.13.0,!=1.14.0,>=1.12.0;python_version>='3.0' # http://www.dnspython.org/LICENSE click openbaton-cli -cloudify_rest_client +cloudify-rest-client Flask!=0.11,<1.0,>=0.10 # BSD Flask-RESTful>=0.3.5 # BSD IPy @@ -29,5 +28,11 @@ PrettyTable<0.8,>=0.7.1 # BSD six>=1.9.0 # MIT opnfv snaps -rally tempest>=12.1.0 # Apache-2.0 +rally +SQLAlchemy<1.1.0,>=1.0.10 # MIT +paramiko>=2.0 # LGPLv2.1+ +Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause) +urllib3>=1.15.1 # MIT +oslo.serialization>=1.10.0 # Apache-2.0 +oslo.utils>=3.18.0 # Apache-2.0 diff --git a/upper-constraints.txt b/upper-constraints.txt index fae94270..e80ffffb 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -6,12 +6,11 @@ git+https://gerrit.opnfv.org/gerrit/securityscanning#egg=securityscanning git+https://gerrit.opnfv.org/gerrit/sfc#egg=sfc -e git+https://gerrit.opnfv.org/gerrit/promise#egg=promise -e git+https://github.com/openstack/refstack-client#egg=refstack-client -cloudify_rest_client===4.0 +cloudify-rest-client===4.0 iniparse===0.4 openbaton-cli===2.2.1b7 robotframework===3.0.2 robotframework-httplibrary===0.4.2 robotframework-requests===0.4.7 robotframework-sshlibrary===2.1.3;python_version=='2.7' -rally===0.9.1 IPy===0.83 |