X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fautogen%2FRegenerator.py;h=64bcea917d75935be797e5873cc0210b1278ee4d;hp=e7e037032541e711ceb78693bcc2de8404f10e30;hb=d1589ad74e515757fb12cf8a5f976282924afe13;hpb=5d6479beed22bb3d14a39e9c130946959c13f03e diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py index e7e0370325..64bcea917d 100644 --- a/resources/libraries/python/autogen/Regenerator.py +++ b/resources/libraries/python/autogen/Regenerator.py @@ -16,7 +16,6 @@ from glob import glob from os import getcwd -from .Testcase import Testcase from .DefaultTestcase import DefaultTestcase @@ -61,24 +60,85 @@ 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. + + :param filename: Suite file. + :type filename: str + :returns: Interface ID, Suite ID. + :rtype: tuple + """ 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): + 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 + :returns: Next testcase number. + :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 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] @@ -105,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.