add the expected prompt for ubuntu root user
[csit.git] / resources / libraries / python / autogen / Regenerator.py
index 85e8b60..e7e0370 100644 (file)
@@ -36,7 +36,7 @@ class Regenerator(object):
         """
         self.testcase_class = testcase_class
 
-    def regenerate_glob(self, pattern, is_ip6=False, tc_kwargs_list=None):
+    def regenerate_glob(self, pattern, protocol="ip4", tc_kwargs_list=None):
         """Regenerate files matching glob pattern based on arguments.
 
         In the current working directory, find all files matching
@@ -56,18 +56,33 @@ class Regenerator(object):
         :type tc_kwargs_list: list of tuple or None
         """
 
-        def add_testcase(file_out, num, **kwargs):
-            file_out.write(testcase.generate(num=num, **kwargs))
+        protocol_to_min_framesize = {
+            "ip4": 64,
+            "ip6": 78,
+            "vxlan+ip4": 114  # What is the real minimum for latency stream?
+        }
+
+        def get_iface_and_suite_id(filename):
+            dash_split = filename.split("-", 1)
+            if len(dash_split[0]) <= 4:
+                # It was something like "2n1l", we need one more split.
+                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):
+            # TODO: Is there a better way to disable some combinations?
+            if kwargs["framesize"] != 9000 or "vic1227" not in iface:
+                file_out.write(testcase.generate(num=num, **kwargs))
             return num + 1
 
-        def add_testcases(file_out, tc_kwargs_list):
+        def add_testcases(testcase, iface, file_out, tc_kwargs_list):
             num = 1
             for tc_kwargs in tc_kwargs_list:
-                num = add_testcase(file_out, num, **tc_kwargs)
+                num = add_testcase(testcase, iface, file_out, num, **tc_kwargs)
 
         print "Regenerator starts at {cwd}".format(cwd=getcwd())
-        min_framesize = 78 if is_ip6 else 64
-        kwargs_list = tc_kwargs_list if tc_kwargs_list is not None else [
+        min_framesize = protocol_to_min_framesize[protocol]
+        kwargs_list = tc_kwargs_list if tc_kwargs_list else [
             {"framesize": min_framesize, "phy_cores": 1},
             {"framesize": min_framesize, "phy_cores": 2},
             {"framesize": min_framesize, "phy_cores": 4},
@@ -82,15 +97,14 @@ class Regenerator(object):
             {"framesize": "IMIX_v4_1", "phy_cores": 4}
         ]
         for filename in glob(pattern):
+            print "Regenerating filename:", filename
             with open(filename, "r") as file_in:
                 text = file_in.read()
                 text_prolog = "".join(text.partition("*** Test Cases ***")[:-1])
-            # TODO: Make the following work for 2n suites.
-            suite_id = filename.split("-", 1)[1].split(".", 1)[0]
-            print "Regenerating suite_id:", suite_id
+            iface, suite_id = get_iface_and_suite_id(filename)
             testcase = self.testcase_class(suite_id)
             with open(filename, "w") as file_out:
                 file_out.write(text_prolog)
-                add_testcases(file_out, kwargs_list)
+                add_testcases(testcase, iface, file_out, kwargs_list)
         print "Regenerator ends."
         print  # To make autogen check output more readable.