From 4ffbba3d9601595d68f969bae773727bd8d98f0b 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 (cherry picked from commit 7b03643170974d4307e0f630e4c79340df98e06f) (cherry picked from commit 9441711c5a03a7a8c476dcc28e1fbace38b48654) --- ansible/site.yml | 1 + docker/healthcheck/Dockerfile | 13 ++++++++++--- 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, 60 insertions(+), 4 deletions(-) diff --git a/ansible/site.yml b/ansible/site.yml index 780d3ef32..28b115f2b 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -57,6 +57,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 52b65bf18..43f450d83 100644 --- a/docker/healthcheck/Dockerfile +++ b/docker/healthcheck/Dockerfile @@ -4,6 +4,7 @@ ARG BRANCH=stable/hunter ARG OPENSTACK_TAG=stable/rocky ARG TEMPEST_TAG=21.0.0 ARG ODL_TAG=85448c9d97b89989488e675b29b38ac42d8674e4 +ARG TEMPEST_HORIZON_TAG=0.1.0 COPY thirdparty-requirements.txt thirdparty-requirements.txt RUN wget -q -O- https://opendev.org/openstack/requirements/raw/branch/$OPENSTACK_TAG/upper-constraints.txt > upper-constraints.txt && \ @@ -11,13 +12,19 @@ RUN wget -q -O- https://opendev.org/openstack/requirements/raw/branch/$OPENSTACK 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/ && \ pip 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/python2.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 29b786344..d1129da04 100644 --- a/docker/healthcheck/testcases.yaml +++ b/docker/healthcheck/testcases.yaml @@ -162,3 +162,18 @@ tiers: mode: '(?=.*\[.*\bsmoke\b.*\])(^tempest\.api)' option: - '--concurrency=3' + + - + 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 b0a804c43..200940e66 100644 --- a/docs/release/release-notes/functest-release.rst +++ b/docs/release/release-notes/functest-release.rst @@ -34,6 +34,7 @@ The internal test cases are: * cinder_test * odl * tempest_smoke + * tempest_horizon * neutron-tempest-plugin-api * tempest_cinder * tempest_keystone diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 7489a1c66..86fd7bd3d 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -163,6 +163,21 @@ tiers: option: - '--concurrency=3' + - + 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 125d1910f..354f3b04d 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -664,6 +664,21 @@ class TempestScenario(TempestCommon): 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) + + class TempestHeat(TempestCommon): """Tempest Heat testcase implementation class.""" diff --git a/functest/utils/env.py b/functest/utils/env.py index b5a1f69ca..652613c87 100644 --- a/functest/utils/env.py +++ b/functest/utils/env.py @@ -38,7 +38,8 @@ INPUTS = { 'BLOCK_MIGRATION': 'False', '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 f4f74c921..82737d762 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 tempest_heat = functest.opnfv_tests.openstack.tempest.tempest:TempestHeat rally_sanity = functest.opnfv_tests.openstack.rally.rally:RallySanity refstack_defcore = functest.opnfv_tests.openstack.refstack.refstack:Refstack -- 2.16.6