perf: Clean up Hoststack tests 19/24919/14
authorDave Wallace <dwallacelf@gmail.com>
Tue, 11 Feb 2020 00:57:10 +0000 (00:57 +0000)
committerTibor Frank <tifrank@cisco.com>
Tue, 3 Mar 2020 10:06:52 +0000 (10:06 +0000)
- Update test names with clients/streams
- Convert test results to JSON output
  * iperf3 results include bits_per_second
  * vpp_echo results include both client
    and server output which includes time in seconds
    and rx_data/tx_data in bytes which can be used
    to calculate the average bits per second.
    Tx and Rx data will always be the same:
    BPS = (client tx_data * 8) / ((client time + server time) / 2)
- Fix WRK test results data formatting errors

Change-Id: Ie2aeb665e3cc0739b16f97ba2628eebe6e041d22
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
15 files changed:
resources/libraries/python/HoststackUtil.py
resources/libraries/python/autogen/Regenerator.py
resources/libraries/python/autogen/Testcase.py
resources/libraries/robot/hoststack/hoststack.robot
resources/tools/wrk/wrk.py
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-ldpreload-iperf3-bps.robot [new file with mode: 0644]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-nsim-ldpreload-iperf3-bps.robot [new file with mode: 0644]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpscale1cl10s-ldpreload-iperf3-bps.robot [moved from tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcp-ldpreload-iperf3-bps.robot with 77% similarity]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpscale1cl10s-nsim-ldpreload-iperf3-bps.robot [moved from tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcp-nsim-ldpreload-iperf3-bps.robot with 77% similarity]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicbase-vppecho-bps.robot [new file with mode: 0644]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale10cl10s-vppecho-bps.robot [moved from tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquic-vppecho-bps.robot with 70% similarity]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale10cl1s-vppecho-bps.robot [new file with mode: 0644]
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale1cl10s-vppecho-bps.robot [new file with mode: 0644]
tests/vpp/perf/hoststack/2n1l-10ge2p1x710-eth-ip4tcphttp-wrk8u8c50con-cps.robot
tests/vpp/perf/hoststack/2n1l-10ge2p1x710-eth-ip4tcphttp-wrk8u8c50con-rps.robot

index dde5cf6..d184b5a 100644 (file)
@@ -12,6 +12,7 @@
 # limitations under the License.
 
 """Host Stack util library."""
+import json
 from time import sleep
 from robot.api import logger
 
@@ -249,10 +250,16 @@ class HoststackUtil():
         sleep(1)
 
     @staticmethod
-    def analyze_hoststack_test_program_output(node, role, nsim_attr,
-                                              program):
+    def analyze_hoststack_test_program_output(
+            node, role, nsim_attr, program):
         """Gather HostStack test program output and check for errors.
 
+        The [defer_fail] return bool is used instead of failing immediately
+        to allow the analysis of both the client and server instances of
+        the test program for debugging a test failure.  When [defer_fail]
+        is true, then the string returned is debug output instead of
+        JSON formatted test program results.
+
         :param node: DUT node.
         :param role: Role (client|server) of test program.
         :param nsim_attr: Network Simulation Attributes.
@@ -262,7 +269,8 @@ class HoststackUtil():
         :type role: str
         :type nsim_attr: dict
         :type program: dict
-        :returns: tuple of no results bool and test program results.
+        :returns: tuple of [defer_fail] bool and either JSON formatted hoststack
+            test program output or failure debug output.
         :rtype: bool, str
         :raises RuntimeError: If node subtype is not a DUT.
         """
@@ -277,7 +285,6 @@ class HoststackUtil():
             program_stdout, program_stderr = \
                HoststackUtil.get_hoststack_test_program_logs(node, program)
 
-        no_results = False
         env_vars = f"{program[u'env_vars']} " if u"env_vars" in program else u""
         program_cmd = f"{env_vars}{program_name} {program[u'args']}"
         test_results = f"Test Results of '{program_cmd}':\n"
@@ -296,50 +303,50 @@ class HoststackUtil():
                 f"bits/sec, pkt-drop-rate {nsim_attr[u'packets_per_drop']} " \
                 f"pkts/drop\n"
 
-        if u"error" in program_stderr.lower():
-            test_results += f"ERROR DETECTED:\n{program_stderr}"
-            raise RuntimeError(test_results)
-        if program_stdout:
-            bad_test_results = False
-            if program[u"name"] == u"vpp_echo":
-                if u"JSON stats" in program_stdout:
-                    test_results += program_stdout
-                    # TODO: Decode vpp_echo output when JSON format is correct.
-                    # json_start = program_stdout.find(u"{")
-                    # vpp_echo_results = json.loads(program_stdout[json_start:])
-                    if u'"has_failed": "0"' not in program_stdout:
-                        bad_test_results = True
-                else:
-                    test_results += u"Invalid test data output!\n" + \
-                                    program_stdout
-                    bad_test_results = True
-            else:
-                test_results += program_stdout
-            if bad_test_results:
-                raise RuntimeError(test_results)
-        else:
-            no_results = True
-            test_results += f"\nNo {program} test data retrieved!\n"
-            cmd = u"ls -l /tmp/*.log"
-            ls_stdout, _ = exec_cmd_no_error(node, cmd, sudo=True)
-            test_results += f"{ls_stdout}\n"
-
         # TODO: Incorporate show error stats into results analysis
-        host = node[u"host"]
         test_results += \
-            f"\n{role} VPP 'show errors' on host {host}:\n" \
+            f"\n{role} VPP 'show errors' on host {node[u'host']}:\n" \
             f"{PapiSocketExecutor.run_cli_cmd(node, u'show error')}\n"
 
-        return no_results, test_results
+        if u"error" in program_stderr.lower():
+            test_results += f"ERROR DETECTED:\n{program_stderr}"
+            return (True, test_results)
+        if not program_stdout:
+            test_results += f"\nNo {program} test data retrieved!\n"
+            ls_stdout, _ = exec_cmd_no_error(node, u"ls -l /tmp/*.log",
+                                             sudo=True)
+            test_results += f"{ls_stdout}\n"
+            return (True, test_results)
+        if program[u"name"] == u"vpp_echo":
+            if u"JSON stats" in program_stdout and \
+                    u'"has_failed": "0"' in program_stdout:
+                json_start = program_stdout.find(u"{")
+                #TODO: Fix parsing once vpp_echo produces valid
+                # JSON output. Truncate for now.
+                json_end = program_stdout.find(u',\n  "closing"')
+                json_results = f"{program_stdout[json_start:json_end]}\n}}"
+                program_json = json.loads(json_results)
+            else:
+                test_results += u"Invalid test data output!\n" + program_stdout
+                return (True, test_results)
+        elif program[u"name"] == u"iperf3":
+            test_results += program_stdout
+            iperf3_json = json.loads(program_stdout)
+            program_json = iperf3_json[u"intervals"][0][u"sum"]
+        else:
+            test_results += u"Unknown HostStack Test Program!\n" + \
+                            program_stdout
+            return (True, program_stdout)
+        return (False, json.dumps(program_json))
 
     @staticmethod
-    def no_hoststack_test_program_results(server_no_results, client_no_results):
-        """Return True if no HostStack test program output was gathered.
+    def hoststack_test_program_defer_fail(server_defer_fail, client_defer_fail):
+        """Return True if either HostStack test program fail was deferred.
 
-        :param server_no_results: server no results value.
-        :param client_no_results: client no results value.
-        :type server_no_results: bool
-        :type client_no_results: bool
+        :param server_defer_fail: server no results value.
+        :param client_defer_fail: client no results value.
+        :type server_defer_fail: bool
+        :type client_defer_fail: bool
         :rtype: bool
         """
-        return server_no_results and client_no_results
+        return server_defer_fail and client_defer_fail
index 5cd8bcc..d40ae7c 100644 (file)
@@ -440,50 +440,24 @@ class Regenerator:
 
         min_frame_size = PROTOCOL_TO_MIN_FRAME_SIZE[protocol]
         default_kwargs_list = [
-            {u"frame_size": min_frame_size, u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": min_frame_size, u"phy_cores": 2, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": min_frame_size, u"phy_cores": 4, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 1518, u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 1518, u"phy_cores": 2, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 1518, u"phy_cores": 4, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 9000, u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 9000, u"phy_cores": 2, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 9000, u"phy_cores": 4, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 2, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 4, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"}
+            {u"frame_size": min_frame_size, u"phy_cores": 1},
+            {u"frame_size": min_frame_size, u"phy_cores": 2},
+            {u"frame_size": min_frame_size, u"phy_cores": 4},
+            {u"frame_size": 1518, u"phy_cores": 1},
+            {u"frame_size": 1518, u"phy_cores": 2},
+            {u"frame_size": 1518, u"phy_cores": 4},
+            {u"frame_size": 9000, u"phy_cores": 1},
+            {u"frame_size": 9000, u"phy_cores": 2},
+            {u"frame_size": 9000, u"phy_cores": 4},
+            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 1},
+            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 2},
+            {u"frame_size": u"IMIX_v4_1", u"phy_cores": 4}
         ]
-        hoststack_wrk_kwargs_list = [
-            {u"frame_size": 0, u"phy_cores": i, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"} for i in (1, 2, 4)
+        hs_wrk_kwargs_list = [
+            {u"frame_size": 0, u"phy_cores": i} for i in (1, 2, 4)
         ]
-        hoststack_iperf3_kwargs_list = [
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 1,
-             u"streams": 10, u"bytes_str": u"1G"},
-        ]
-        hoststack_quic_kwargs_list = [
-            {u"phy_cores": 1, u"frame_size": 0, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"10G"},
-            {u"phy_cores": 1, u"frame_size": 0, u"clients": 1,
-             u"streams": 10, u"bytes_str": u"1G"},
-            {u"phy_cores": 1, u"frame_size": 0, u"clients": 10,
-             u"streams": 1, u"bytes_str": u"1G"},
-            {u"phy_cores": 1, u"frame_size": 0, u"clients": 10,
-             u"streams": 10, u"bytes_str": u"100M"},
+        hs_bps_kwargs_list = [
+            {u"frame_size": 0, u"phy_cores": 1},
         ]
 
         for in_filename in glob(pattern):
@@ -510,14 +484,9 @@ class Regenerator:
             elif in_filename.endswith(u"-reconf.robot"):
                 write_reconf_files(in_filename, in_prolog, default_kwargs_list)
             elif in_filename[-10:] in (u"-cps.robot", u"-rps.robot"):
-                write_tcp_files(in_filename, in_prolog,
-                                hoststack_wrk_kwargs_list)
+                write_tcp_files(in_filename, in_prolog, hs_wrk_kwargs_list)
             elif in_filename[-10:] in (u"-bps.robot"):
-                if u"ldpreload-iperf3" in in_filename:
-                    hoststack_kwargs_list = hoststack_iperf3_kwargs_list
-                else:
-                    hoststack_kwargs_list = hoststack_quic_kwargs_list
-                write_tcp_files(in_filename, in_prolog, hoststack_kwargs_list)
+                write_tcp_files(in_filename, in_prolog, hs_bps_kwargs_list)
             else:
                 raise RuntimeError(
                     f"Error in {in_filename}: non-primary suite type found."
index c540d8c..d419b29 100644 (file)
@@ -34,8 +34,7 @@ class Testcase:
         """
         self.template = Template(template_string)
 
-    def generate(self, num, frame_size, phy_cores, clients, streams,
-                 bytes_str):
+    def generate(self, num, frame_size, phy_cores):
         """Return string of test case code with placeholders filled.
 
         Fail if there are placeholders left unfilled.
@@ -44,16 +43,9 @@ class Testcase:
         :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
         """
@@ -75,11 +67,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)
@@ -122,17 +109,9 @@ class Testcase:
 | | [Tags] | ${{cores_str}}C
 | | phy_cores=${{cores_num}}
 '''
-        elif u"iperf3" in suite_id:
-            template_string = f'''
-| ${{tc_num}}-9000B-${{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}}\n"
         else:
-            template_string = f'''
-| ${{tc_num}}-9000B-${{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"
+            template_string = \
+                f"\n| ${{tc_num}}-9000B-${{cores_str}}c-{suite_id[:-4]}" \
+                f"-{suite_id[-3:]}\n" \
+                f"| | [Tags] | ${{cores_str}}C\n| | phy_cores=${{cores_num}}\n"
         return cls(template_string)
index 16a390a..c6bc7de 100644 (file)
@@ -91,7 +91,7 @@
 | ... | vcl_config=vcl_iperf3.conf
 | ... | ld_preload=${True}
 | ... | transparent_tls=${False}
-| ... | json=${False}
+| ... | json=${True}
 | ... | ip_version=${4}
 | &{iperf3_client_attr}=
 | ... | role=client
 | ... | vcl_config=vcl_iperf3.conf
 | ... | ld_preload=${True}
 | ... | transparent_tls=${False}
-| ... | json=${False}
+| ... | json=${True}
 | ... | ip_version=${4}
 | ... | ip_address=${EMPTY}
 | ... | parallel=${1}
 | | [Documentation]
 | | ... | Configure IP address on the port, set it up and start the specified
 | | ... | HostStack test programs on the DUTs. Gather test program
-| | ... | output and append test results in message.
-| | ... | Return boolean indicating when no results were available from
-| | ... | both the server and client test programs.
+| | ... | output and append JSON formatted test data in message.
+| | ... | Return boolean indicating there was a defered failure of either the
+| | ... | server and/or client test programs.
 | |
 | | Set To Dictionary | ${vpp_echo_server_attr} | uri_ip4_addr
 | | ... | ${dut2_if1_ip4_addr}
 | | ... | ${vpp_echo_client_attr}[namespace] | ${core_list}
 | | ... | ${vpp_echo_client_attr}[cfg_vpp_feature] | ${vpp_echo_client}
 | | When Hoststack Test Program Finished | ${dut1} | ${client_pid}
-| | ${client_no_results} | ${client_output}=
+| | ${client_defer_fail} | ${client_output}=
 | | ... | Analyze hoststack test program output | ${dut1} | Client
 | | ... | ${vpp_nsim_attr} | ${vpp_echo_client}
 | | Then Set test message | ${client_output}
 | | And Hoststack Test Program Finished | ${dut2} | ${server_pid}
-| | ${server_no_results} | ${server_output}=
+| | ${server_defer_fail} | ${server_output}=
 | | ... | Analyze hoststack test program output | ${dut2} | Server
 | | ... | ${vpp_nsim_attr} | ${vpp_echo_server}
 | | Set test message | ${server_output} | append=True
-| | Run Keyword And Return | No Hoststack Test Program Results
-| | ... | ${server_no_results} | ${client_no_results}
+| | Run Keyword And Return | Hoststack Test Program Defer Fail
+| | ... | ${server_defer_fail} | ${client_defer_fail}
 
 | Get Test Results From Hoststack Iperf3 Test
 | | [Documentation]
 | | ... | Configure IP address on the port, set it up and start the specified
 | | ... | HostStack test programs on the DUTs. Gather test program
-| | ... | output and append test results in message.
-| | ... | Return boolean indicating when no results were available from
-| | ... | both the server and client test programs.
+| | ... | output and append JSON formatted test data in message.
+| | ... | Return boolean indicating there was a defered failure of either the
+| | ... | server and/or client test programs.
 | |
 | | Set To Dictionary | ${iperf3_client_attr} | ip_address
 | | ... | ${dut2_if1_ip4_addr}
 | | ... | ${iperf3_client_attr}[namespace] | ${core_list}
 | | ... | ${iperf3_client_attr}[cfg_vpp_feature] | ${iperf3_client}
 | | When Hoststack Test Program Finished | ${dut1} | ${client_pid}
-| | ${client_no_results} | ${client_output}=
+| | ${client_defer_fail} | ${client_output}=
 | | ... | Analyze hoststack test program output | ${dut1} | Client
 | | ... | ${vpp_nsim_attr} | ${iperf3_client}
 | | Then Set test message | ${client_output}
-| | Return From Keyword | ${client_no_results}
+| | Return From Keyword | ${client_defer_fail}
index 381e9b9..85d18d4 100644 (file)
@@ -186,12 +186,12 @@ def run_wrk(tg_node, profile_name, tg_numa, test_type, warm_up=False):
     if test_type == u"cps":
         log_msg += u"Connections/sec: Avg / Stdev / Max  / +/- Stdev\n"
         for item in stats[u"rps-stats-lst"]:
-            log_msg += f"{0} / {1} / {2} / {3}\n".format(*item)
+            log_msg += u" / ".join(map(str, item)) + u"\n"
         log_msg += f"Total cps: {stats[u'rps-sum']}cps\n"
     elif test_type == u"rps":
         log_msg += u"Requests/sec: Avg / Stdev / Max  / +/- Stdev\n"
         for item in stats[u"rps-stats-lst"]:
-            log_msg += f"{0} / {1} / {2} / {3}\n".format(*item)
+            log_msg += u" / ".join(map(str, item)) + u"\n"
         log_msg += f"Total rps: {stats[u'rps-sum']}rps\n"
     elif test_type == u"bw":
         log_msg += f"Transfer/sec: {stats[u'bw-sum']}Bps"
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-ldpreload-iperf3-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-ldpreload-iperf3-bps.robot
new file mode 100644 (file)
index 0000000..f2c7165
--- /dev/null
@@ -0,0 +1,60 @@
+# Copyright (c) 2020 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:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library  | resources.libraries.python.HoststackUtil
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | TCP | NIC_Intel-X710 | DRV_VFIO_PCI | HOSTSTACK
+| ... | LDPRELOAD | IPERF3 | 1CLIENT | 1STREAM | 9000B
+| ... | eth-ip4tcpbase-ldpreload-iperf3
+|
+| Suite Setup | Setup suite single link no tg
+| Suite Teardown | Tear down suite | hoststack
+| Test Setup | Setup test
+| Test Teardown | Tear down test
+|
+| Test Template | Local template
+|
+| Documentation | *Iperf3 client -> Iperf3 server throughput.
+|
+| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology
+| ... | with single link between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP
+| ... | *[Cfg] DUT configuration:*
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${overhead}= | ${0}
+| ${frame_size}= | ${9000}
+| ${crypto_type}= | ${None}
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores}
+| |
+| | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False}
+| | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
+| | ${defer_fail}= | Get Test Results From Hoststack Iperf3 Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack Iperf3 Test Program
+
+*** Test Cases ***
+| tc01-9000B-1c-eth-ip4tcpbase-ldpreload-iperf3-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-nsim-ldpreload-iperf3-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4tcpbase-nsim-ldpreload-iperf3-bps.robot
new file mode 100644 (file)
index 0000000..2eaed06
--- /dev/null
@@ -0,0 +1,62 @@
+# Copyright (c) 2020 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:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library  | resources.libraries.python.HoststackUtil
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | TCP | NIC_Intel-X710 | DRV_VFIO_PCI | HOSTSTACK
+| ... | NSIM | LDPRELOAD | IPERF3 | 1CLIENT | 1STREAM | 9000B
+| ... | eth-ip4tcpbase-nsim-ldpreload-iperf3
+|
+| Suite Setup | Setup suite single link no tg
+| Suite Teardown | Tear down suite
+| Test Setup | Setup test
+| Test Teardown | Tear down test
+|
+| Test Template | Local template
+|
+| Documentation | *Iperf3 client -> Iperf3 server throughput.
+|
+| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology
+| ... | with single link between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP
+| ... | *[Cfg] DUT configuration:*
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nsim_plugin.so
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${overhead}= | ${0}
+| ${frame_size}= | ${9000}
+| ${crypto_type}= | ${None}
+| ${pkts_per_drop}= | ${100}
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores}
+| |
+| | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
+| | Set VPP NSIM Attributes | output_feature_enable=${True} |
+| | ... | packets_per_drop=${pkts_per_drop}
+| | ${defer_fail}= | Get Test Results From Hoststack Iperf3 Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack Iperf3 Test Program
+
+*** Test Cases ***
+| tc01-9000B-1c-eth-ip4tcpbase-nsim-ldpreload-iperf3-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
@@ -18,7 +18,8 @@
 |
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
 | ... | TCP | NIC_Intel-X710 | DRV_VFIO_PCI | HOSTSTACK
-| ... | LDPRELOAD | IPERF3 | eth-ip4tcp-ldpreload-iperf3
+| ... | LDPRELOAD | IPERF3 | 1CLIENT | 10STREAM | 9000B
+| ... | eth-ip4tcpscale1cl10s-ldpreload-iperf3
 |
 | Suite Setup | Setup suite single link no tg
 | Suite Teardown | Tear down suite | hoststack
 | ${overhead}= | ${0}
 | ${frame_size}= | ${9000}
 | ${crypto_type}= | ${None}
+| ${streams} | ${10}
 
 *** Keywords ***
 | Local template
-| | [Arguments] | ${phy_cores} | ${clients} | ${streams}
+| | [Arguments] | ${phy_cores}
 | |
 | | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False}
 | | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
 | | Set Iperf3 Client Attributes | parallel=${streams}
-| | ${no_results}= | Get Test Results From Hoststack Iperf3 Test
-| | Run Keyword If | ${no_results}==True | FAIL
-| | ... | No Test Results From Iperf3 client
+| | ${defer_fail}= | Get Test Results From Hoststack Iperf3 Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack Iperf3 Test Program
 
 *** Test Cases ***
-| tc01-9000B-1c-eth-ip4tcp-ldpreload-iperf3-bps
-| | [Tags] | 1C | 1CLIENT | 1STREAM
-| | phy_cores=${1} | clients=${1} | streams=${1}
-
-| tc02-9000B-1c-eth-ip4tcp-ldpreload-iperf3-bps
-| | [Tags] | 1C | 1CLIENT | 10STREAM
-| | phy_cores=${1} | clients=${1} | streams=${10}
+| tc01-9000B-1c-eth-ip4tcpscale1cl10s-ldpreload-iperf3-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
@@ -18,7 +18,8 @@
 |
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
 | ... | TCP | NIC_Intel-X710 | DRV_VFIO_PCI | HOSTSTACK
-| ... | NSIM | LDPRELOAD | IPERF3 | eth-ip4tcp-nsim-ldpreload-iperf3
+| ... | NSIM | LDPRELOAD | IPERF3 | 1CLIENT | 10STREAM | 9000B
+| ... | eth-ip4tcpscale1cl10s-nsim-ldpreload-iperf3
 |
 | Suite Setup | Setup suite single link no tg
 | Suite Teardown | Tear down suite
 | ${frame_size}= | ${9000}
 | ${crypto_type}= | ${None}
 | ${pkts_per_drop}= | ${100}
+| ${streams}= | ${10}
 
 *** Keywords ***
 | Local template
-| | [Arguments] | ${phy_cores} | ${clients} |  ${streams}
+| | [Arguments] | ${phy_cores}
 | |
 | | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
 | | Set Iperf3 Client Attributes | parallel=${streams}
 | | Set VPP NSIM Attributes | output_feature_enable=${True} |
 | | ... | packets_per_drop=${pkts_per_drop}
-| | ${no_results}= | Get Test Results From Hoststack Iperf3 Test
-| | Run Keyword If | ${no_results}==True | FAIL
-| | ... | No Test Results From Iperf3 client
+| | ${defer_fail}= | Get Test Results From Hoststack Iperf3 Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack Iperf3 Test Program
 
 *** Test Cases ***
-| tc01-9000B-1c-eth-ip4tcp-nsim-ldpreload-iperf3-bps
-| | [Tags] | 1C | 1CLIENT | 1STREAM
-| | phy_cores=${1} | clients=${1} | streams=${1}
-
-| tc02-9000B-1c-eth-ip4tcp-nsim-ldpreload-iperf3-bps
-| | [Tags] | 1C | 1CLIENT | 10STREAM
-| | phy_cores=${1} | clients=${1} | streams=${10}
+| tc01-9000B-1c-eth-ip4tcpscale1cl10s-nsim-ldpreload-iperf3-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicbase-vppecho-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicbase-vppecho-bps.robot
new file mode 100644 (file)
index 0000000..564844e
--- /dev/null
@@ -0,0 +1,61 @@
+# Copyright (c) 2020 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:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library  | resources.libraries.python.HoststackUtil
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | NIC_Intel-X710 | DRV_VFIO_PCI | UDP | QUIC | VPPECHO
+| ... | 1CLIENT | 1STREAM | HOSTSTACK | 9000B | eth-ip4udpquicbase-vppecho
+|
+| Suite Setup | Setup suite single link no tg
+| Suite Teardown | Tear down suite
+| Test Setup | Setup test
+| Test Teardown | Tear down test
+|
+| Test Template | Local template
+|
+| Documentation | *QUIC Unidirectional Echo Client -> Echo Server throughput.
+|
+| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology
+| ... | with single link between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP-QUIC
+| ... | *[Cfg] DUT configuration:*
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | quic_plugin.so
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${overhead}= | ${0}
+| ${frame_size}= | ${9000}
+| ${crypto_type}= | ${None}
+| ${bytes}= | 10G
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores}
+| |
+| | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
+| | Set VPP Echo Server Attributes | cfg_vpp_feature=quic | rx_bytes=${bytes}
+| | Set VPP Echo Client Attributes | cfg_vpp_feature=quic | tx_bytes=${bytes}
+| | ${defer_fail}= | Get Test Results From Hoststack VPP Echo Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack VPP Echo Test Program
+
+*** Test Cases ***
+| tc01-9000B-1c-eth-ip4udpquicbase-vppecho-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
@@ -18,7 +18,8 @@
 |
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
 | ... | NIC_Intel-X710 | DRV_VFIO_PCI | UDP | QUIC | VPPECHO
-| ... | HOSTSTACK | eth-ip4udpquic-vppecho
+| ... | HOSTSTACK | 10CLIENT | 10STREAM | 9000B
+| ... | eth-ip4udpquicscale10cl10s-vppecho
 |
 | Suite Setup | Setup suite single link no tg
 | Suite Teardown | Tear down suite
 | ${overhead}= | ${0}
 | ${frame_size}= | ${9000}
 | ${crypto_type}= | ${None}
+| ${clients}= | ${10}
+| ${streams}= | ${10}
+| ${bytes}= | 100M
 
 *** Keywords ***
 | Local template
-| | [Arguments] | ${phy_cores} | ${clients} |  ${streams} | ${bytes}
+| | [Arguments] | ${phy_cores}
 | |
 | | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
 | | Set VPP Echo Server Attributes | cfg_vpp_feature=quic | nclients=${clients}
 | | ... | quic_streams=${streams} | rx_bytes=${bytes}
 | | Set VPP Echo Client Attributes | cfg_vpp_feature=quic | nclients=${clients}
 | | ... | quic_streams=${streams} | tx_bytes=${bytes}
-| | ${no_results}= | Get Test Results From Hoststack VPP Echo Test
-| | Run Keyword If | ${no_results}==True | FAIL
-| | ... | No Test Results From External Hoststack Apps
+| | ${defer_fail}= | Get Test Results From Hoststack VPP Echo Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack VPP Echo Test Program
 
 *** Test Cases ***
-| tc01-9000B-1c-eth-ip4udpquic-vppecho-bps
-| | [Tags] | 1C | 1CLIENT | 1STREAM
-| | phy_cores=${1} | clients=${1} | streams=${1} | bytes=10G
-
-| tc02-9000B-1c-eth-ip4udpquic-vppecho-bps
-| | [Tags] | 1C | 1CLIENT | 10STREAM
-| | phy_cores=${1} | clients=${1} | streams=${10} | bytes=1G
-
-| tc03-9000B-1c-eth-ip4udpquic-vppecho-bps
-| | [Tags] | 1C | 10CLIENT | 1STREAM
-| | phy_cores=${1} | clients=${10} | streams=${1} | bytes=1G
-
-| tc04-9000B-1c-eth-ip4udpquic-vppecho-bps
-| | [Tags] | 1C | 10CLIENT | 10STREAM
-| | phy_cores=${1} | clients=${10} | streams=${10} | bytes=100M
+| tc01-9000B-1c-eth-ip4udpquicscale10cl10s-vppecho-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale10cl1s-vppecho-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale10cl1s-vppecho-bps.robot
new file mode 100644 (file)
index 0000000..e160f05
--- /dev/null
@@ -0,0 +1,65 @@
+# Copyright (c) 2020 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:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library  | resources.libraries.python.HoststackUtil
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | NIC_Intel-X710 | DRV_VFIO_PCI | UDP | QUIC | VPPECHO
+| ... | HOSTSTACK | 10CLIENT | 1STREAM | 9000B
+| ... | eth-ip4udpquicscale10cl1s-vppecho
+|
+| Suite Setup | Setup suite single link no tg
+| Suite Teardown | Tear down suite
+| Test Setup | Setup test
+| Test Teardown | Tear down test
+|
+| Test Template | Local template
+|
+| Documentation | *QUIC Unidirectional Echo Client -> Echo Server throughput.
+|
+| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology
+| ... | with single link between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP-QUIC
+| ... | *[Cfg] DUT configuration:*
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | quic_plugin.so
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${overhead}= | ${0}
+| ${frame_size}= | ${9000}
+| ${crypto_type}= | ${None}
+| ${clients}= | ${10}
+| ${bytes}= | 1G
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores}
+| |
+| | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
+| | Set VPP Echo Server Attributes | cfg_vpp_feature=quic | nclients=${clients}
+| | ... | rx_bytes=${bytes}
+| | Set VPP Echo Client Attributes | cfg_vpp_feature=quic | nclients=${clients}
+| | ... | tx_bytes=${bytes}
+| | ${defer_fail}= | Get Test Results From Hoststack VPP Echo Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack VPP Echo Test Program
+
+*** Test Cases ***
+| tc01-9000B-1c-eth-ip4udpquicscale10cl1s-vppecho-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale1cl10s-vppecho-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquicscale1cl10s-vppecho-bps.robot
new file mode 100644 (file)
index 0000000..d03e247
--- /dev/null
@@ -0,0 +1,65 @@
+# Copyright (c) 2020 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:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library  | resources.libraries.python.HoststackUtil
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | NIC_Intel-X710 | DRV_VFIO_PCI | UDP | QUIC | VPPECHO
+| ... | HOSTSTACK | 1CLIENT | 10STREAM | 9000B
+| ... | eth-ip4udpquicscale1cl10s-vppecho
+|
+| Suite Setup | Setup suite single link no tg
+| Suite Teardown | Tear down suite
+| Test Setup | Setup test
+| Test Teardown | Tear down test
+|
+| Test Template | Local template
+|
+| Documentation | *QUIC Unidirectional Echo Client -> Echo Server throughput.
+|
+| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology
+| ... | with single link between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP-QUIC
+| ... | *[Cfg] DUT configuration:*
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | quic_plugin.so
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${overhead}= | ${0}
+| ${frame_size}= | ${9000}
+| ${crypto_type}= | ${None}
+| ${streams}= | ${10}
+| ${bytes}= | 1G
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores}
+| |
+| | Set VPP Hoststack Attributes | phy_cores=${phy_cores}
+| | Set VPP Echo Server Attributes | cfg_vpp_feature=quic
+| | ... | quic_streams=${streams} | rx_bytes=${bytes}
+| | Set VPP Echo Client Attributes | cfg_vpp_feature=quic
+| | ... | quic_streams=${streams} | tx_bytes=${bytes}
+| | ${defer_fail}= | Get Test Results From Hoststack VPP Echo Test
+| | Run Keyword If | ${defer_fail}==True | FAIL
+| | ... | Defered Failure From Hoststack VPP Echo Test Program
+
+*** Test Cases ***
+| tc01-9000B-1c-eth-ip4udpquicscale1cl10s-vppecho-bps
+| | [Tags] | 1C
+| | phy_cores=${1}
index d7a7e6c..6b4f3c3 100644 (file)
@@ -19,7 +19,7 @@
 | Resource | resources/libraries/robot/hoststack/tcp_setup.robot
 |
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
-| ... | HTTP | TCP | TCP_CPS | NIC_Intel-X710 | DRV_VFIO_PCI
+| ... | HTTP | TCP | TCP_CPS | NIC_Intel-X710 | DRV_VFIO_PCI | IMIX
 | ... | eth-ip4tcphttp-wrk8u8c50con
 |
 | Suite Setup | Setup suite single link | wrk
index 27469bb..b9b2226 100644 (file)
@@ -19,7 +19,7 @@
 | Resource | resources/libraries/robot/hoststack/tcp_setup.robot
 |
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
-| ... | HTTP | TCP | TCP_RPS | NIC_Intel-X710 | DRV_VFIO_PCI
+| ... | HTTP | TCP | TCP_RPS | NIC_Intel-X710 | DRV_VFIO_PCI | IMIX
 | ... | eth-ip4tcphttp-wrk8u8c50con
 |
 | Suite Setup | Setup suite single link | wrk