From 7b03643170974d4307e0f630e4c79340df98e06f Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9dric=20Ollivier?= Date: Sat, 26 Oct 2019 15:30:28 +0200 Subject: [PATCH] Add healthcheck Horizon tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It runs TestDashboardBasicOps as proposed by tempest-horizon [1]. It's skipped if DASHBOARD_URL is unset (default). [1] https://opendev.org/openstack/tempest-horizon Change-Id: I1b6b5609412770609f412da4927641588b173ed6 Signed-off-by: Cédric Ollivier --- ansible/site.yml | 1 + docker/healthcheck/Dockerfile | 12 +++++++++--- docker/healthcheck/testcases.yaml | 15 +++++++++++++++ docs/release/release-notes/functest-release.rst | 1 + functest/ci/testcases.yaml | 15 +++++++++++++++ functest/opnfv_tests/openstack/tempest/tempest.py | 15 +++++++++++++++ functest/utils/env.py | 3 ++- setup.cfg | 1 + 8 files changed, 59 insertions(+), 4 deletions(-) diff --git a/ansible/site.yml b/ansible/site.yml index 227d6b2b9..c5a9cac5d 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -51,6 +51,7 @@ - cinder_test - odl - tempest_smoke + - tempest_horizon - container: functest-smoke tests: - neutron-tempest-plugin-api diff --git a/docker/healthcheck/Dockerfile b/docker/healthcheck/Dockerfile index 451115cad..1876b5e43 100644 --- a/docker/healthcheck/Dockerfile +++ b/docker/healthcheck/Dockerfile @@ -3,6 +3,7 @@ FROM opnfv/functest-core ARG BRANCH=master ARG OPENSTACK_TAG=master ARG ODL_TAG=85448c9d97b89989488e675b29b38ac42d8674e4 +ARG TEMPEST_HORIZON_TAG=master COPY thirdparty-requirements.txt thirdparty-requirements.txt RUN apk --no-cache add --virtual .build-deps --update \ @@ -12,14 +13,19 @@ RUN apk --no-cache add --virtual .build-deps --update \ case $(uname -m) in aarch*|arm*) sed -i -E /^PyNaCl=/d upper-constraints.txt ;; esac && \ wget -q -O- https://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH > upper-constraints.opnfv.txt && \ sed -i -E /#egg=functest/d upper-constraints.opnfv.txt && \ + git init /src/tempest-horizon && \ + (cd /src/tempest-horizon && \ + git fetch --tags https://opendev.org/openstack/tempest-horizon.git $TEMPEST_HORIZON_TAG && \ + git checkout FETCH_HEAD) && \ + update-requirements -s --source /src/openstack-requirements /src/tempest-horizon/ && \ pip3 install --no-cache-dir --src /src -cupper-constraints.txt -cupper-constraints.opnfv.txt \ - -rthirdparty-requirements.txt && \ + /src/tempest-horizon -rthirdparty-requirements.txt && \ git init /src/odl_test && \ (cd /src/odl_test && \ git fetch --tags https://git.opendaylight.org/gerrit/integration/test $ODL_TAG && \ git checkout FETCH_HEAD) && \ - rm -r /src/odl_test/.git thirdparty-requirements.txt upper-constraints.txt \ - upper-constraints.opnfv.txt && \ + rm -r /src/odl_test/.git /src/tempest-horizon/ thirdparty-requirements.txt \ + upper-constraints.txt upper-constraints.opnfv.txt && \ apk del .build-deps COPY testcases.yaml /usr/lib/python3.7/site-packages/xtesting/ci/testcases.yaml CMD ["run_tests", "-t", "all"] diff --git a/docker/healthcheck/testcases.yaml b/docker/healthcheck/testcases.yaml index 5aac7010e..c2a66494d 100644 --- a/docker/healthcheck/testcases.yaml +++ b/docker/healthcheck/testcases.yaml @@ -162,3 +162,18 @@ tiers: mode: '(?=.*\[.*\bsmoke\b.*\])(^tempest\.api)' option: - '--concurrency=4' + + - + case_name: tempest_horizon + project_name: functest + criteria: 100 + blocking: false + description: >- + This test case runs the Tempest suite proposed by the + Horizon project. + dependencies: + - DASHBOARD_URL: '^(?!\s*$).+' + run: + name: tempest_horizon + args: + mode: '^tempest_horizon.' diff --git a/docs/release/release-notes/functest-release.rst b/docs/release/release-notes/functest-release.rst index 1f5d80d81..cbcc159c2 100644 --- a/docs/release/release-notes/functest-release.rst +++ b/docs/release/release-notes/functest-release.rst @@ -33,6 +33,7 @@ The internal test cases are: * vping_userdata * cinder_test * tempest_smoke + * tempest_horizon * odl * neutron-tempest-plugin-api * rally_sanity diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 53d9124eb..0b308b72a 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -163,6 +163,21 @@ tiers: option: - '--concurrency=4' + - + case_name: tempest_horizon + project_name: functest + criteria: 100 + blocking: false + description: >- + This test case runs the Tempest suite proposed by the + Horizon project. + dependencies: + - DASHBOARD_URL: '^(?!\s*$).+' + run: + name: tempest_horizon + args: + mode: '^tempest_horizon.' + - name: smoke order: 1 diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index d30d59468..c2bb76876 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -661,3 +661,18 @@ class TempestScenario(TempestCommon): instances=self.quota_instances, cores=self.quota_cores) return super(TempestScenario, self).run(**kwargs) + + +class TempestHorizon(TempestCommon): + """Tempest Horizon testcase implementation class.""" + + def configure(self, **kwargs): + super(TempestHorizon, self).configure(**kwargs) + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('dashboard'): + rconfig.add_section('dashboard') + rconfig.set('dashboard', 'dashboard_url', env.get('DASHBOARD_URL')) + with open(self.conf_file, 'w') as config_file: + rconfig.write(config_file) + self.backup_tempest_config(self.conf_file, self.res_dir) diff --git a/functest/utils/env.py b/functest/utils/env.py index 85676ed57..5aebbbe0c 100644 --- a/functest/utils/env.py +++ b/functest/utils/env.py @@ -38,7 +38,8 @@ INPUTS = { 'BLOCK_MIGRATION': 'True', 'CLEAN_ORPHAN_SECURITY_GROUPS': 'True', 'SKIP_DOWN_HYPERVISORS': 'False', - 'PUBLIC_ENDPOINT_ONLY': 'False' + 'PUBLIC_ENDPOINT_ONLY': 'False', + 'DASHBOARD_URL': '' } diff --git a/setup.cfg b/setup.cfg index 3e35cfc37..fb2596510 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,6 +27,7 @@ xtesting.testcase = odl = functest.opnfv_tests.sdn.odl.odl:ODLTests tempest_common = functest.opnfv_tests.openstack.tempest.tempest:TempestCommon tempest_scenario = functest.opnfv_tests.openstack.tempest.tempest:TempestScenario + tempest_horizon = functest.opnfv_tests.openstack.tempest.tempest:TempestHorizon rally_sanity = functest.opnfv_tests.openstack.rally.rally:RallySanity refstack = functest.opnfv_tests.openstack.refstack.refstack:Refstack patrole = functest.opnfv_tests.openstack.patrole.patrole:Patrole -- 2.16.6