Set Gnocchi scenario as optional in rally tests 71/66671/1
authorJuha Kosonen <juha.kosonen@nokia.com>
Sat, 26 Jan 2019 10:53:26 +0000 (12:53 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Sat, 26 Jan 2019 23:35:17 +0000 (00:35 +0100)
The execution of an optional scenario is skipped if the corresponding
openstack service does not exist.

Change-Id: I8721f26ebc253ce02138b85d6c88e659c5afae80
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
(cherry picked from commit 3b7b393ca643bcf7db0361bcc4414b74fff953be)

docker/components/testcases.yaml
docker/smoke/testcases.yaml
functest/opnfv_tests/openstack/rally/rally.py

index 73a88ae..d0bfa0a 100644 (file)
@@ -50,3 +50,6 @@ tiers:
                     OpenStack Rally suite using several threads and iterations.
                 run:
                     name: rally_full
+                    args:
+                        optional:
+                            - 'gnocchi'
index 55f7a10..ca8adbc 100644 (file)
@@ -51,6 +51,9 @@ tiers:
                     Rally suite in smoke mode.
                 run:
                     name: rally_sanity
+                    args:
+                        optional:
+                            - 'gnocchi'
 
             -
                 case_name: rally_jobs
@@ -62,6 +65,9 @@ tiers:
                     OpenStack gating
                 run:
                     name: rally_jobs
+                    args:
+                        optional:
+                            - 'gnocchi'
 
             -
                 case_name: refstack_defcore
index 594905b..52a5223 100644 (file)
@@ -25,7 +25,6 @@ import prettytable
 from ruamel.yaml import YAML
 from six.moves import configparser
 from xtesting.core import testcase
-from xtesting.energy import energy
 import yaml
 
 from functest.core import singlevm
@@ -93,6 +92,7 @@ class RallyBase(singlevm.VmReady2):
         self.tests = []
         self.run_cmd = ''
         self.network_extensions = []
+        self.services = []
 
     def _build_task_args(self, test_file_name):
         """Build arguments for the Rally task."""
@@ -446,6 +446,9 @@ class RallyBase(singlevm.VmReady2):
         self.compute_cnt = len(self.cloud.list_hypervisors())
         self.network_extensions = self.cloud.get_network_extensions()
         self.flavor_alt = self.create_flavor_alt()
+        self.services = [service.name for service in
+                         self.cloud.list_services()]
+
         LOGGER.debug("flavor: %s", self.flavor_alt)
 
     def prepare_task(self, test_name):
@@ -459,11 +462,13 @@ class RallyBase(singlevm.VmReady2):
                          str(self._build_task_args(test_name))])
         return True
 
-    def run_tests(self):
+    def run_tests(self, **kwargs):
         """Execute tests."""
+        optional = kwargs.get('optional', [])
         for test in self.tests:
-            if self.prepare_task(test):
-                self.run_task(test)
+            if test in self.services or test not in optional:
+                if self.prepare_task(test):
+                    self.run_task(test)
 
     def _generate_report(self):
         """Generate test execution summary report."""
@@ -537,7 +542,6 @@ class RallyBase(singlevm.VmReady2):
 
         return super(RallyBase, self).is_successful()
 
-    @energy.enable_recording
     def run(self, **kwargs):
         """Run testcase."""
         self.start_time = time.time()
@@ -557,7 +561,7 @@ class RallyBase(singlevm.VmReady2):
                 pass
             conf_utils.create_rally_deployment(environ=environ)
             self.prepare_run()
-            self.run_tests()
+            self.run_tests(**kwargs)
             self._generate_report()
             res = testcase.TestCase.EX_OK
         except Exception as exc:   # pylint: disable=broad-except