Unify rally test case exclusion mechanisms 73/23173/1
authorJuha Kosonen <juha.kosonen@nokia.com>
Fri, 14 Oct 2016 20:28:03 +0000 (20:28 +0000)
committerJuha Kosonen <juha.kosonen@nokia.com>
Fri, 14 Oct 2016 20:56:24 +0000 (20:56 +0000)
In all cases exclusion is now controlled via blacklist file.

JIRA: FUNCTEST-511

Change-Id: I482c33b6da4c9b711ebeddc13855b1337ab217eb
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
testcases/OpenStack/rally/blacklist.txt
testcases/OpenStack/rally/run_rally-cert.py
testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml
testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml

index 02d85f4..3a17fa6 100644 (file)
@@ -1,8 +1,18 @@
--
-    scenarios:
-        - os-nosdn-lxd-ha
-        - os-nosdn-lxd-noha
-    installers:
-        - joid
-    tests:
-        - NovaServers.boot_server_from_volume_and_delete
+scenario:
+    -
+        scenarios:
+            - os-nosdn-lxd-ha
+            - os-nosdn-lxd-noha
+        installers:
+            - joid
+        tests:
+            - NovaServers.boot_server_from_volume_and_delete
+
+functionality:
+    -
+        functions:
+            - no_live_migration
+        tests:
+            - NovaServers.boot_and_live_migrate_server
+            - NovaServers.boot_server_attach_created_volume_and_live_migrate
+            - NovaServers.boot_server_from_volume_and_live_migrate
index d35639c..90084a1 100755 (executable)
@@ -187,7 +187,6 @@ def build_task_args(test_file_name):
 
     net_id = network_dict['net_id']
     task_args['netid'] = str(net_id)
-    task_args['live_migration'] = live_migration_supported()
 
     auth_url = os.getenv('OS_AUTH_URL')
     if auth_url is not None:
@@ -273,30 +272,60 @@ def get_cmd_output(proc):
     return result
 
 
-def apply_blacklist(case_file_name, result_file_name):
-    logger.debug("Applying blacklist...")
-    cases_file = open(case_file_name, 'r')
-    result_file = open(result_file_name, 'w')
+def excl_scenario():
     black_tests = []
 
     try:
+        with open(BLACKLIST_FILE, 'r') as black_list_file:
+            black_list_yaml = yaml.safe_load(black_list_file)
+
         installer_type = os.getenv('INSTALLER_TYPE')
         deploy_scenario = os.getenv('DEPLOY_SCENARIO')
         if (bool(installer_type) * bool(deploy_scenario)):
-            # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the file
-            with open(BLACKLIST_FILE, 'r') as black_list_file:
-                black_list_yaml = yaml.safe_load(black_list_file)
-
-            for item in black_list_yaml:
-                scenarios = item['scenarios']
-                installers = item['installers']
-                if (deploy_scenario in scenarios and
-                        installer_type in installers):
-                    tests = item['tests']
-                    black_tests.extend(tests)
+            if 'scenario' in black_list_yaml.keys():
+                for item in black_list_yaml['scenario']:
+                    scenarios = item['scenarios']
+                    installers = item['installers']
+                    if (deploy_scenario in scenarios and
+                            installer_type in installers):
+                        tests = item['tests']
+                        black_tests.extend(tests)
+    except:
+        logger.debug("Scenario exclusion not applied.")
+
+    return black_tests
+
+
+def excl_func():
+    black_tests = []
+    func_list = []
+
+    try:
+        with open(BLACKLIST_FILE, 'r') as black_list_file:
+            black_list_yaml = yaml.safe_load(black_list_file)
+
+        if not live_migration_supported():
+            func_list.append("no_live_migration")
+
+        if 'functionality' in black_list_yaml.keys():
+            for item in black_list_yaml['functionality']:
+                functions = item['functions']
+                for func in func_list:
+                    if func in functions:
+                        tests = item['tests']
+                        black_tests.extend(tests)
     except:
-        black_tests = []
-        logger.debug("Blacklisting not applied.")
+        logger.debug("Functionality exclusion not applied.")
+
+    return black_tests
+
+
+def apply_blacklist(case_file_name, result_file_name):
+    logger.debug("Applying blacklist...")
+    cases_file = open(case_file_name, 'r')
+    result_file = open(result_file_name, 'w')
+
+    black_tests = list(set(excl_func() + excl_scenario()))
 
     include = True
     for cases_line in cases_file:
index 077850f..d762209 100644 (file)
       sla:
         {{ no_failures_sla() }}
 
-{% if live_migration %}
-
   NovaServers.boot_and_live_migrate_server:
     - args:
         {{ vm_params(image_name, flavor_name) }}
       sla:
         {{ no_failures_sla() }}
 
-{% endif %}
-
   NovaKeypair.boot_and_delete_server_with_keypair:
     -
       args:
index 947819d..e2795cf 100644 (file)
@@ -1,5 +1,3 @@
-{% if live_migration %}
-
   NovaServers.boot_and_live_migrate_server:
     - args:
         {{ vm_params(image_name, flavor_name) }}
@@ -44,8 +42,6 @@
       sla:
         {{ no_failures_sla() }}
 
-{% endif %}
-
   NovaKeypair.boot_and_delete_server_with_keypair:
     -
       args: