Adapt autogen for SFd tests
[csit.git] / resources / libraries / python / autogen / Regenerator.py
index 7a57676..64bcea9 100644 (file)
@@ -60,6 +60,7 @@ class Regenerator(object):
             "ip6": 78,
             "vxlan+ip4": 114  # What is the real minimum for latency stream?
         }
+        min_framesize_values = protocol_to_min_framesize.values()
 
         def get_iface_and_suite_id(filename):
             """Get interface and suite ID.
@@ -75,16 +76,18 @@ class Regenerator(object):
                 dash_split = dash_split[1].split("-", 1)
             return dash_split[0], dash_split[1].split(".", 1)[0]
 
-        def add_testcase(testcase, iface, file_out, num, **kwargs):
+        def add_testcase(testcase, iface, suite_id, file_out, num, **kwargs):
             """Add testcase to file.
 
             :param testcase: Testcase class.
             :param iface: Interface.
+            :param suite_id: Suite ID.
             :param file_out: File to write testcases to.
             :param num: Testcase number.
             :param kwargs: Key-value pairs used to construct testcase.
             :type testcase: Testcase
             :type iface: str
+            :type suite_id: str
             :type file_out: file
             :type num: int
             :type kwargs: dict
@@ -92,25 +95,50 @@ class Regenerator(object):
             :rtype: int
             """
             # TODO: Is there a better way to disable some combinations?
-            if kwargs["framesize"] != 9000 or "vic1227" not in iface:
+            emit = True
+            if kwargs["framesize"] == 9000:
+                if "vic1227" in iface:
+                    # Not supported in HW.
+                    emit = False
+                if "avf" in suite_id:
+                    # Not supported by AVF driver.
+                    # https://git.fd.io/vpp/tree/src/plugins/avf/README.md
+                    emit = False
+            if "-16vm-" in suite_id or "-16dcr-" in suite_id:
+                if kwargs["phy_cores"] > 3:
+                    # CSIT lab only has 28 (physical) core processors,
+                    # so these test would fail when attempting to assign cores.
+                    emit = False
+            if "soak" in suite_id:
+                # Soak test take too long, do not risk other than tc01.
+                if kwargs["phy_cores"] != 1:
+                    emit = False
+                if kwargs["framesize"] not in min_framesize_values:
+                    emit = False
+            if emit:
                 file_out.write(testcase.generate(num=num, **kwargs))
+            # We bump tc number in any case, so that future enables/disables
+            # do not affect the numbering of other test cases.
             return num + 1
 
-        def add_testcases(testcase, iface, file_out, tc_kwargs_list):
+        def add_testcases(testcase, iface, suite_id, file_out, tc_kwargs_list):
             """Add testcases to file.
 
             :param testcase: Testcase class.
             :param iface: Interface.
+            :param suite_id: Suite ID.
             :param file_out: File to write testcases to.
-            :param tc_kwargs_list: Key-value pairs used to construct testcase.
+            :param tc_kwargs_list: Key-value pairs used to construct testcases.
             :type testcase: Testcase
             :type iface: str
+            :type suite_id: str
             :type file_out: file
             :type tc_kwargs_list: dict
             """
             num = 1
             for tc_kwargs in tc_kwargs_list:
-                num = add_testcase(testcase, iface, file_out, num, **tc_kwargs)
+                num = add_testcase(testcase, iface, suite_id, file_out, num,
+                                   **tc_kwargs)
 
         print "Regenerator starts at {cwd}".format(cwd=getcwd())
         min_framesize = protocol_to_min_framesize[protocol]
@@ -137,6 +165,6 @@ class Regenerator(object):
             testcase = self.testcase_class(suite_id)
             with open(filename, "w") as file_out:
                 file_out.write(text_prolog)
-                add_testcases(testcase, iface, file_out, kwargs_list)
+                add_testcases(testcase, iface, suite_id, file_out, kwargs_list)
         print "Regenerator ends."
         print  # To make autogen check output more readable.