X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fautogen%2FTestcase.py;h=643d32a3cbb15437e89e3ea2a1d2da173c7ca814;hp=6b4cfb2e069a476b1ee8ca17b584bb5f8e230427;hb=9377c956a86e42727039d9dab8879c10c9399f4c;hpb=6518c73a0e5cdaf12ae01d247a65aec287d01625 diff --git a/resources/libraries/python/autogen/Testcase.py b/resources/libraries/python/autogen/Testcase.py index 6b4cfb2e06..643d32a3cb 100644 --- a/resources/libraries/python/autogen/Testcase.py +++ b/resources/libraries/python/autogen/Testcase.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. +# Copyright (c) 2021 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -29,31 +29,20 @@ class Testcase: - cores_str - Number of physical cores to use, example: "2". - frame_num - Framesize as a number, example: "${74}". - frame_str - Framesize in upper case, example: "74B". - - tc_num - Start of testcase name, example: "tc04". :type template_string: str """ self.template = Template(template_string) - def generate(self, num, frame_size, phy_cores, clients, streams, - bytes_str): + def generate(self, frame_size, phy_cores): """Return string of test case code with placeholders filled. Fail if there are placeholders left unfilled. It is not required for all placeholders to be present in template. - :param num: Test case number. Example value: 4. :param frame_size: Imix string or numeric frame size. Example: 74. :param phy_cores: Number of physical cores to use. Example: 2. - :param clients: Number of clients used by test program. Example: 4. - :param streams: Number of streams used by test program. Example: 10. - :param bytes_str: Size in bytes of stream sent by test program. - Example: 1G - :type num: int :type frame_size: str or int :type phy_cores: int or str - :type clients: int - :type streams: int - :type bytes_str: str :returns: Filled template, usable as test case code. :rtype: str """ @@ -74,12 +63,6 @@ class Testcase: { u"cores_num": f"${{{cores_num:d}}}", u"cores_str": phy_cores, - u"tc_num": f"tc{num:02d}", - u"clients_num": f"${{{clients:d}}}", - u"clients_str": str(clients), - u"streams_num": f"${{{streams:d}}}", - u"streams_str": str(streams), - u"bytes_str": bytes_str, } ) return self.template.substitute(subst_dict) @@ -97,7 +80,7 @@ class Testcase: :rtype: Testcase """ template_string = f''' -| ${{tc_num}}-${{frame_str}}-${{cores_str}}c-{suite_id} +| ${{frame_str}}-${{cores_str}}c-{suite_id} | | [Tags] | ${{frame_str}} | ${{cores_str}}C | | frame_size=${{frame_num}} | phy_cores=${{cores_num}} ''' @@ -117,16 +100,39 @@ class Testcase: # TODO: Choose a better frame size identifier for streamed protocols # (TCP, QUIC, SCTP, ...) where DUT (not TG) decides frame size. if u"tcphttp" in suite_id: - template_string = f''' -| ${{tc_num}}-IMIX-${{cores_str}}c-{suite_id} + if u"rps" or u"cps" in suite_id: + template_string = f''' +| ${{frame_str}}-${{cores_str}}c-{suite_id} +| | [Tags] | ${{frame_str}} | ${{cores_str}}C +| | frame_size=${{frame_num}} | phy_cores=${{cores_num}} +''' + else: + template_string = f''' +| IMIX-${{cores_str}}c-{suite_id} | | [Tags] | ${{cores_str}}C | | phy_cores=${{cores_num}} ''' else: template_string = f''' -| ${{tc_num}}-IMIX-${{cores_str}}c-{suite_id} -| | [Tags] | ${{cores_str}}C | ${{clients_str}}CLIENT | ${{streams_str}}STREAM -| | phy_cores=${{cores_num}} | clients=${{clients_num}}''' - template_string += f" | streams=${{streams_num}}" \ - f" | bytes=${{bytes_str}}\n" +| ${{frame_str}}-${{cores_str}}c-{suite_id[:-4]}-{suite_id[-3:]} +| | [Tags] | ${{cores_str}}C\n| | phy_cores=${{cores_num}} +''' + return cls(template_string) + + @classmethod + def iperf3(cls, suite_id): + """Factory method for creating "iperf3" testcase objects. + + Testcase name will contain core count, but not frame size. + + :param suite_id: Part of suite name to distinguish from other suites. + :type suite_id: str + :returns: Instance for generating testcase text of this type. + :rtype: Testcase + """ + template_string = f''' +| 128KB-${{cores_str}}c-{suite_id} +| | [Tags] | 128KB | ${{cores_str}}C +| | frame_size=${{frame_num}} | phy_cores=${{cores_num}} +''' return cls(template_string)