Add healthcheck Horizon tests 09/68709/1
authorCédric Ollivier <cedric.ollivier@orange.com>
Sat, 26 Oct 2019 13:30:28 +0000 (15:30 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Tue, 29 Oct 2019 18:24:29 +0000 (19:24 +0100)
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 <cedric.ollivier@orange.com>
(cherry picked from commit 7b03643170974d4307e0f630e4c79340df98e06f)

ansible/site.yml
docker/healthcheck/Dockerfile
docker/healthcheck/testcases.yaml
docs/release/release-notes/functest-release.rst
functest/ci/testcases.yaml
functest/opnfv_tests/openstack/tempest/tempest.py
functest/utils/env.py
setup.cfg

index 8d3d568..dd449cd 100644 (file)
@@ -54,6 +54,7 @@
             - cinder_test
             - odl
             - tempest_smoke
+            - tempest_horizon
         - container: functest-smoke
           tests:
             - neutron-tempest-plugin-api
index a416683..7bee517 100644 (file)
@@ -4,6 +4,7 @@ ARG BRANCH=stable/iruya
 ARG OPENSTACK_TAG=stable/stein
 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 apk --no-cache add --virtual .build-deps --update \
@@ -13,14 +14,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.6/site-packages/xtesting/ci/testcases.yaml
 CMD ["run_tests", "-t", "all"]
index 5aac701..c2a6649 100644 (file)
@@ -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.'
index b00fb82..3976641 100644 (file)
@@ -33,6 +33,7 @@ The internal test cases are:
  * vping_userdata
  * cinder_test
  * tempest_smoke
+ * tempest_horizon
  * odl
  * neutron-tempest-plugin-api
  * rally_sanity
index ffb31ed..ba134aa 100644 (file)
@@ -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
index d30d594..c2bb768 100644 (file)
@@ -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)
index 5d8e861..2c038b7 100644 (file)
@@ -41,7 +41,8 @@ INPUTS = {
     'BLOCK_MIGRATION': 'True',
     'CLEAN_ORPHAN_SECURITY_GROUPS': 'True',
     'SKIP_DOWN_HYPERVISORS': 'False',
-    'PUBLIC_ENDPOINT_ONLY': 'False'
+    'PUBLIC_ENDPOINT_ONLY': 'False',
+    'DASHBOARD_URL': ''
 }
 
 
index dafa82d..7be1530 100644 (file)
--- 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