diff options
21 files changed, 58 insertions, 137 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 89cf86a69..1811e9389 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -84,11 +84,8 @@ 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/copper /src/copper 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/promise ${REPOS_DIR}/promise -RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/netready ${REPOS_DIR}/netready RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds /src/fds # other repositories @@ -122,7 +119,7 @@ RUN /bin/bash -c ". /etc/profile.d/rvm.sh \ RUN sh -c 'curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -' \ && sudo apt-get install -y nodejs \ - && cd ${REPOS_DIR}/promise && sudo npm -g install npm@latest \ - && cd ${REPOS_DIR}/promise/source && npm install + && cd /src/promise && sudo npm -g install npm@latest \ + && cd /src/promise/source && npm install RUN echo ". ${FUNCTEST_DIR}/cli/functest-complete.sh" >> /root/.bashrc diff --git a/docker/features/Dockerfile b/docker/features/Dockerfile index 73f4d2cef..54bffe827 100644 --- a/docker/features/Dockerfile +++ b/docker/features/Dockerfile @@ -4,16 +4,18 @@ ARG BRANCH=master ARG OPENSTACK_TAG=stable/ocata COPY thirdparty-requirements.txt thirdparty-requirements.txt -RUN apk --no-cache add --virtual .build-deps --update \ +RUN apk --no-cache add --update nodejs nodejs-npm && \ + apk --no-cache add --virtual .build-deps --update \ python-dev build-base linux-headers libffi-dev \ openssl-dev libjpeg-turbo-dev git && \ pip install --no-cache-dir --src /src \ -chttps://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG \ -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ -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 && \ - git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/copper /src/copper && \ - rm -r thirdparty-requirements.txt /src/domino/.git /src/copper/.git && \ + rm -r thirdparty-requirements.txt /src/domino/.git && \ 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 48b1468df..052bd47f3 100644 --- a/docker/features/testcases.yaml +++ b/docker/features/testcases.yaml @@ -8,46 +8,45 @@ tiers: integrated in functest testcases: - - case_name: bgpvpn - project_name: sdnvpn + case_name: promise + project_name: promise criteria: 100 blocking: false description: >- - Test suite from SDNVPN project. + Test suite from Promise project. dependencies: - installer: '(fuel)|(apex)|(netvirt)' - scenario: 'bgpvpn' + installer: '(fuel)|(joid)' + scenario: '' run: module: 'functest.core.feature' class: 'BashFeature' args: - cmd: 'run_sdnvpn_tests.py' + cmd: 'run_promise_tests.py' - - case_name: security_scan - enabled: false - project_name: securityscanning + case_name: bgpvpn + project_name: sdnvpn criteria: 100 blocking: false description: >- - Simple Security Scan + Test suite from SDNVPN project. dependencies: - installer: 'apex' - scenario: '^((?!fdio).)*$' + installer: '(fuel)|(apex)|(netvirt)' + scenario: 'bgpvpn' run: module: 'functest.core.feature' class: 'BashFeature' args: - cmd: '. /home/opnfv/functest/conf/stackrc && security_scan --config /usr/local/etc/securityscanning/config.ini' + cmd: 'run_sdnvpn_tests.py' - - case_name: copper + case_name: security_scan enabled: false - project_name: copper + project_name: securityscanning criteria: 100 blocking: false description: >- - Test suite for policy management based on OpenStack Congress + Simple Security Scan dependencies: installer: 'apex' scenario: '^((?!fdio).)*$' @@ -55,7 +54,7 @@ tiers: module: 'functest.core.feature' class: 'BashFeature' args: - cmd: 'cd /src/copper/tests && bash run.sh && cd -' + cmd: '. /home/opnfv/functest/conf/stackrc && security_scan --config /usr/local/etc/securityscanning/config.ini' - case_name: functest-odl-sfc diff --git a/docker/features/thirdparty-requirements.txt b/docker/features/thirdparty-requirements.txt index ee2e5e9ca..0fa9be36c 100644 --- a/docker/features/thirdparty-requirements.txt +++ b/docker/features/thirdparty-requirements.txt @@ -2,3 +2,4 @@ baro_tests sdnvpn securityscanning sfc +promise diff --git a/docker/thirdparty-requirements.txt b/docker/thirdparty-requirements.txt index be1980f2c..84521f233 100644 --- a/docker/thirdparty-requirements.txt +++ b/docker/thirdparty-requirements.txt @@ -3,6 +3,7 @@ sdnvpn opera securityscanning sfc +promise tosca-parser>=0.7.0 # Apache-2.0 heat-translator>=0.4.0 # Apache-2.0 refstack-client diff --git a/docs/release/release-notes/functest-release.rst b/docs/release/release-notes/functest-release.rst index 1ddaf7028..02d99c96d 100644 --- a/docs/release/release-notes/functest-release.rst +++ b/docs/release/release-notes/functest-release.rst @@ -80,7 +80,6 @@ The OPNFV projects integrated into Functest framework for automation are: * domino * fds * multisite - * netready * onos * odl-sfc * odl-netvirt @@ -257,8 +256,8 @@ test [0-3]. The scoring method is described in https://wiki.opnfv.org/pages/view e.g. apex/odl_l2-nofeature-ha - tests = vping_ssh+vping_userdata+tempest+rally+odl+doctor+copper - Scoring = 21/21 = 7 * 3 + tests = vping_ssh+vping_userdata+tempest+rally+odl+doctor + Scoring = 18/18 = 6 * 3 By default, if not specified, the scenarios are HA. HA means OpenStack High Availability (main services). Note that not diff --git a/docs/testing/developer/devguide/index.rst b/docs/testing/developer/devguide/index.rst index 551edec6f..1e794aa03 100644 --- a/docs/testing/developer/devguide/index.rst +++ b/docs/testing/developer/devguide/index.rst @@ -110,7 +110,6 @@ The external test cases are: * onos * fds * multisite - * netready * orchestra_ims * parser * promise @@ -360,8 +359,6 @@ Please note that currently token authorization is implemented but is not yet ena +---------------------+---------+---------+---------+---------+ | parser | | | X | | +---------------------+---------+---------+---------+---------+ - | copper | X | | | X | - +---------------------+---------+---------+---------+---------+ src: colorado (see release note for the last matrix version) All the testcases listed in the table are runnable on diff --git a/docs/testing/user/configguide/configguide.rst b/docs/testing/user/configguide/configguide.rst index 35548c9b2..a72055ca9 100644 --- a/docs/testing/user/configguide/configguide.rst +++ b/docs/testing/user/configguide/configguide.rst @@ -301,7 +301,6 @@ should now be in place:: | `-- results `-- repos |-- bgpvpn - |-- copper |-- doctor |-- domino |-- functest diff --git a/docs/testing/user/userguide/index.rst b/docs/testing/user/userguide/index.rst index c877be7b5..62e0c076c 100644 --- a/docs/testing/user/userguide/index.rst +++ b/docs/testing/user/userguide/index.rst @@ -480,13 +480,10 @@ In Danube, Functest supports the integration of: * domino * fds * multisite - * netready * odl-sfc * promise * security_scan -Note: copper is not supported in Danube. - Please refer to the dedicated feature user guides for details. diff --git a/docs/testing/user/userguide/introduction.rst b/docs/testing/user/userguide/introduction.rst index 76a28d9a6..2954aaa83 100644 --- a/docs/testing/user/userguide/introduction.rst +++ b/docs/testing/user/userguide/introduction.rst @@ -136,9 +136,6 @@ validate the scenario for the release. | | | | See `Multisite User Guide`_ for | | | | | details | | | +----------------+----------------------------------+ -| | | netready | Testing from netready project | -| | | | ping using gluon | -| | +----------------+----------------------------------+ | | | odl-sfc | SFC testing for odl scenarios | | | | | See `SFC User Guide`_ for details| | | +----------------+----------------------------------+ @@ -252,7 +249,6 @@ section `Executing the functest suites`_ of this document. .. _`[2]`: http://docs.openstack.org/developer/tempest/overview.html .. _`[3]`: https://rally.readthedocs.org/en/latest/index.html -.. _`Copper User Guide`: http://artifacts.opnfv.org/copper/colorado/docs/userguide/index.html .. _`Doctor User Guide`: http://artifacts.opnfv.org/doctor/colorado/userguide/index.html .. _`Promise User Guide`: http://artifacts.opnfv.org/promise/colorado/docs/userguide/index.html .. _`ONOSFW User Guide`: http://artifacts.opnfv.org/onosfw/colorado/userguide/index.html diff --git a/docs/testing/user/userguide/runfunctest.rst b/docs/testing/user/userguide/runfunctest.rst index 079baddf9..58a3e4b92 100644 --- a/docs/testing/user/userguide/runfunctest.rst +++ b/docs/testing/user/userguide/runfunctest.rst @@ -610,7 +610,7 @@ variables: * The scenario [controller]-[feature]-[mode], stored in DEPLOY_SCENARIO with * controller = (odl|ocl|nosdn|onos) - * feature = (ovs(dpdk)|kvm|sfc|bgpvpn|multisites|netready|ovs_dpdk_bar) + * feature = (ovs(dpdk)|kvm|sfc|bgpvpn|multisites|ovs_dpdk_bar) * mode = (ha|noha) The constraints per test case are defined in the Functest configuration file diff --git a/functest/ci/config_functest.yaml b/functest/ci/config_functest.yaml index 31ce4b90e..679140fe8 100644 --- a/functest/ci/config_functest.yaml +++ b/functest/ci/config_functest.yaml @@ -7,7 +7,6 @@ general: dir_repo_releng: /home/opnfv/repos/releng repo_vims_test: /home/opnfv/repos/vnfs/vims-test repo_onos: /home/opnfv/repos/onos - repo_netready: /home/opnfv/repos/netready repo_barometer: /home/opnfv/repos/barometer repo_doctor: /home/opnfv/repos/doctor repo_odl_test: /src/odl_test diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 99c0cc202..869144811 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -149,7 +149,7 @@ tiers: case_name: odl project_name: functest criteria: 100 - blocking: true + blocking: false description: >- Test Suite for the OpenDaylight SDN Controller. It integrates some test suites from upstream using @@ -265,7 +265,7 @@ tiers: module: 'functest.core.feature' class: 'BashFeature' args: - cmd: 'cd /home/opnfv/repos/promise/promise/test/functest && python ./run_tests.py' + cmd: 'run_promise_tests.py' - case_name: doctor-notification @@ -317,23 +317,6 @@ tiers: cmd: '. /home/opnfv/functest/conf/stackrc && security_scan --config /usr/local/etc/securityscanning/config.ini' - - case_name: copper - enabled: false - project_name: copper - criteria: 100 - blocking: false - description: >- - Test suite for policy management based on OpenStack Congress - dependencies: - installer: 'apex' - scenario: '^((?!fdio).)*$' - run: - module: 'functest.core.feature' - class: 'BashFeature' - args: - cmd: 'cd /src/copper/tests && bash run.sh && cd -' - - - case_name: multisite enabled: false project_name: multisite @@ -382,6 +365,7 @@ tiers: - case_name: parser-basics + enabled: false project_name: parser criteria: 100 blocking: false @@ -414,23 +398,6 @@ tiers: cmd: 'cd /src/domino && ./tests/run_multinode.sh' - - case_name: gluon_vping - enabled: false - project_name: netready - criteria: 100 - blocking: false - description: >- - Test suite from Netready project. - dependencies: - installer: 'apex' - scenario: 'gluon' - run: - module: 'functest.core.feature' - class: 'BashFeature' - args: - cmd: 'cd /home/opnfv/repos/netready/test/functest && python ./gluon-test-suite.py' - - - case_name: barometercollectd enabled: false project_name: barometer diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py index 921d69b4d..86053ccf3 100644 --- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py +++ b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py @@ -107,13 +107,13 @@ class RefstackClient(testcase.OSGCTestCase): num_failures = match[1] LOGGER.info("".join(match)) success_testcases = [] - for match in re.findall(r"\{0\}(.*?)[. ]*ok", output): + for match in re.findall(r"\{0\} (.*?)[. ]*ok", output): success_testcases.append(match) failed_testcases = [] - for match in re.findall(r"\{0\}(.*?)[. ]*FAILED", output): + for match in re.findall(r"\{0\} (.*?)[. ]*FAILED", output): failed_testcases.append(match) skipped_testcases = [] - for match in re.findall(r"\{0\}(.*?)[. ]*SKIPPED:", output): + for match in re.findall(r"\{0\} (.*?)[. ]*SKIPPED:", output): skipped_testcases.append(match) num_executed = int(num_tests) - int(num_skipped) diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 2313ec04b..7c88fc5d3 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -336,7 +336,7 @@ def configure_tempest_update_params(tempest_conf_file, 'into tempest.conf file') with open(TEMPEST_CONF_YAML) as f: conf_yaml = yaml.safe_load(f) - if not conf_yaml: + if conf_yaml: sections = config.sections() for section in conf_yaml: if section not in sections: diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index 4993c74a9..b00bc6af6 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -196,13 +196,13 @@ class TempestCommon(testcase.OSGCTestCase): output = logfile.read() success_testcases = [] - for match in re.findall('(.*?)[. ]*success ', output): + for match in re.findall('.*\{0\} (.*?)[. ]*success ', output): success_testcases.append(match) failed_testcases = [] - for match in re.findall('(.*?)[. ]*fail ', output): + for match in re.findall('.*\{0\} (.*?)[. ]*fail ', output): failed_testcases.append(match) skipped_testcases = [] - for match in re.findall('(.*?)[. ]*skip:', output): + for match in re.findall('.*\{0\} (.*?)[. ]*skip:', output): skipped_testcases.append(match) self.details = {"tests": int(num_tests), diff --git a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py index e4e3364d6..c5601075e 100644 --- a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py +++ b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py @@ -79,9 +79,9 @@ class OSRefstackClientTesting(unittest.TestCase): ''') self.details = {"tests": 3, "failures": 1, - "success": [' tempest.api.compute [18.464988s]'], - "errors": [' tempest.api.volume [0.230334s]'], - "skipped": [' tempest.api.network [1.265828s]']} + "success": ['tempest.api.compute [18.464988s]'], + "errors": ['tempest.api.volume [0.230334s]'], + "skipped": ['tempest.api.network [1.265828s]']} with mock.patch('__builtin__.open', mock.mock_open(read_data=log_file)): self.refstackclient.parse_refstack_result() diff --git a/functest/tests/unit/openstack/tempest/test_conf_utils.py b/functest/tests/unit/openstack/tempest/test_conf_utils.py index 79ef99150..a807ae469 100644 --- a/functest/tests/unit/openstack/tempest/test_conf_utils.py +++ b/functest/tests/unit/openstack/tempest/test_conf_utils.py @@ -262,10 +262,9 @@ class OSTempestConfUtilsTesting(unittest.TestCase): mock.patch('__builtin__.open', mock.mock_open()), \ mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.backup_tempest_config'), \ - mock.patch('functest.utils.functest_utils.yaml.safe_load') \ - as mock_yaml: + mock.patch('functest.utils.functest_utils.yaml.safe_load', + return_value={'validation': {'ssh_timeout': 300}}): CONST.__setattr__('OS_ENDPOINT_TYPE', None) - mock_yaml.return_value = mock.Mock() conf_utils.\ configure_tempest_update_params('test_conf_file', IMAGE_ID=image_id, diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py index 98c7d6e9c..b4cc5b73b 100644 --- a/functest/tests/unit/utils/test_functest_utils.py +++ b/functest/tests/unit/utils/test_functest_utils.py @@ -133,24 +133,20 @@ class FunctestUtilsTesting(unittest.TestCase): self.assertEqual(functest_utils.get_scenario(), self.scenario) - @mock.patch('functest.utils.functest_utils.get_build_tag') - def test_get_version_daily_job(self, mock_get_build_tag): - mock_get_build_tag.return_value = self.build_tag + def test_get_version_daily_job(self): + CONST.__setattr__('BUILD_TAG', self.build_tag) self.assertEqual(functest_utils.get_version(), self.version) - @mock.patch('functest.utils.functest_utils.get_build_tag') - def test_get_version_weekly_job(self, mock_get_build_tag): - mock_get_build_tag.return_value = self.build_tag_week + def test_get_version_weekly_job(self): + CONST.__setattr__('BUILD_TAG', self.build_tag_week) self.assertEqual(functest_utils.get_version(), self.version) - @mock.patch('functest.utils.functest_utils.get_build_tag') - def test_get_version_with_dummy_build_tag(self, mock_get_build_tag): - mock_get_build_tag.return_value = 'whatever' + def test_get_version_with_dummy_build_tag(self): + CONST.__setattr__('BUILD_TAG', 'whatever') self.assertEqual(functest_utils.get_version(), 'unknown') - @mock.patch('functest.utils.functest_utils.get_build_tag') - def test_get_version_unknown(self, mock_get_build_tag): - mock_get_build_tag.return_value = "unknown_build_tag" + def test_get_version_unknown(self): + CONST.__setattr__('BUILD_TAG', 'unknown_build_tag') self.assertEqual(functest_utils.get_version(), "unknown") @mock.patch('functest.utils.functest_utils.logger.info') @@ -173,33 +169,15 @@ class FunctestUtilsTesting(unittest.TestCase): self.node_name) @mock.patch('functest.utils.functest_utils.logger.info') - def test_get_build_tag_failed(self, mock_logger_info): - with mock.patch.dict(os.environ, - {}, - clear=True): - self.assertEqual(functest_utils.get_build_tag(), - "none") - mock_logger_info.assert_called_once_with("Impossible to retrieve" - " the build tag") - - def test_get_build_tag_default(self): - with mock.patch.dict(os.environ, - {'BUILD_TAG': self.build_tag}, - clear=True): - self.assertEqual(functest_utils.get_build_tag(), - self.build_tag) - - @mock.patch('functest.utils.functest_utils.logger.info') def test_logger_test_results(self, mock_logger_info): CONST.__setattr__('results_test_db_url', self.db_url) + CONST.__setattr__('BUILD_TAG', self.build_tag) with mock.patch('functest.utils.functest_utils.get_pod_name', return_value=self.node_name), \ mock.patch('functest.utils.functest_utils.get_scenario', return_value=self.scenario), \ mock.patch('functest.utils.functest_utils.get_version', - return_value=self.version), \ - mock.patch('functest.utils.functest_utils.get_build_tag', - return_value=self.build_tag): + return_value=self.version): functest_utils.logger_test_results(self.project, self.case_name, self.status, self.details) mock_logger_info.assert_called_once_with( diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index 91781bd27..bf68e43a3 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -107,7 +107,9 @@ def get_version(): # jenkins-functest-fuel-baremetal-weekly-master-8 # use regex to match branch info rule = "(dai|week)ly-(.+?)-[0-9]*" - build_tag = get_build_tag() + build_tag = CONST.__getattribute__('BUILD_TAG') + if not build_tag: + build_tag = 'none' m = re.search(rule, build_tag) if m: return m.group(2) @@ -128,19 +130,6 @@ def get_pod_name(): return "unknown-pod" -def get_build_tag(): - """ - Get build tag of jenkins jobs - """ - try: - build_tag = os.environ['BUILD_TAG'] - except KeyError: - logger.info("Impossible to retrieve the build tag") - build_tag = "none" - - return build_tag - - def logger_test_results(project, case_name, status, details): """ Format test case results for the logger @@ -148,7 +137,7 @@ def logger_test_results(project, case_name, status, details): pod_name = get_pod_name() scenario = get_scenario() version = get_version() - build_tag = get_build_tag() + build_tag = CONST.__getattribute__('BUILD_TAG') db_url = CONST.__getattribute__("results_test_db_url") logger.info( diff --git a/upper-constraints.txt b/upper-constraints.txt index 73ec7f41b..4f4e1daa4 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -5,6 +5,7 @@ git+https://gerrit.opnfv.org/gerrit/sdnvpn#egg=sdnvpn git+https://gerrit.opnfv.org/gerrit/opera#egg=opera 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 iniparse===0.4 |