Fix rally task file manipulation 55/68355/1
authorJuha Kosonen <juha.kosonen@nokia.com>
Thu, 15 Aug 2019 13:15:21 +0000 (16:15 +0300)
committerJuha Kosonen <juha.kosonen@nokia.com>
Fri, 16 Aug 2019 10:15:07 +0000 (10:15 +0000)
Remove empty workload entries when applying blacklist in RallyJobs.
Rally considers task file as invalid if it contains entries whose
workload list empty.

Change-Id: I34867c0aeea9c5ecf1294959d680e6de535be9cd
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
functest/opnfv_tests/openstack/rally/rally.py

index a0439d1..219aa0b 100644 (file)
@@ -769,26 +769,26 @@ class RallyJobs(RallyBase):
                     cases.pop(name)
         else:
             # workloads in subtasks
-            for sind, subtask in enumerate(cases.get('subtasks', [])):
-                idx = []
-                for wind, workload in enumerate(subtask.get('workloads', [])):
+            for sind, subtask in reversed(list(
+                    enumerate(cases.get('subtasks', [])))):
+                for wind, workload in reversed(list(
+                        enumerate(subtask.get('workloads', [])))):
                     scenario = workload.get('scenario', {})
                     for name in scenario.keys():
                         if self.in_iterable_re(name, black_tests):
-                            idx.append(wind)
+                            cases['subtasks'][sind]['workloads'].pop(wind)
                             break
-                for wind in reversed(idx):
-                    cases['subtasks'][sind]['workloads'].pop(wind)
+                if 'workloads' in cases['subtasks'][sind]:
+                    if not cases['subtasks'][sind]['workloads']:
+                        cases['subtasks'].pop(sind)
             # scenarios in subtasks
-            idx = []
-            for sind, subtask in enumerate(cases.get('subtasks', [])):
+            for sind, subtask in reversed(list(
+                    enumerate(cases.get('subtasks', [])))):
                 scenario = subtask.get('scenario', {})
                 for name in scenario.keys():
                     if self.in_iterable_re(name, black_tests):
-                        idx.append(sind)
+                        cases['subtasks'].pop(sind)
                         break
-            for sind in reversed(idx):
-                cases['subtasks'].pop(sind)
 
         with open(result_file_name, 'w') as fname:
             template.dump(cases, fname)