perf: QUIC transport hoststack test suite 54/24254/36
authorDave Wallace <dwallacelf@gmail.com>
Wed, 8 Jan 2020 21:14:25 +0000 (21:14 +0000)
committerDave Wallace <dwallacelf@gmail.com>
Wed, 29 Jan 2020 13:59:03 +0000 (13:59 +0000)
Change-Id: I73f4be7ea315c7a5dcce46e1bd3034bcb0a97ee2
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
resources/libraries/python/HoststackUtil.py
resources/libraries/python/autogen/Regenerator.py
resources/libraries/robot/hoststack/hoststack.robot
tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquic-vppecho-bps.robot [new file with mode: 0644]

index f95a6a6..dde5cf6 100644 (file)
@@ -44,6 +44,8 @@ class HoststackUtil():
             f"socket-name {vpp_echo_attributes[u'vpp_api_socket']} " \
             f"{vpp_echo_attributes[u'json_output']} " \
             f"uri {proto}://{addr}/{port} " \
+            f"nthreads {vpp_echo_attributes[u'nthreads']} " \
+            f"mq-size {vpp_echo_attributes[u'mq_size']} " \
             f"nclients {vpp_echo_attributes[u'nclients']} " \
             f"quic-streams {vpp_echo_attributes[u'quic_streams']} " \
             f"time {vpp_echo_attributes[u'time']} " \
@@ -299,10 +301,20 @@ class HoststackUtil():
             raise RuntimeError(test_results)
         if program_stdout:
             bad_test_results = False
-            if program == u"vpp_echo" and u"JSON stats" not in program_stdout:
-                test_results += u"Invalid test data output!\n"
-                bad_test_results = True
-            test_results += program_stdout
+            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:
index 5b112f5..f065887 100644 (file)
@@ -476,13 +476,13 @@ class Regenerator:
              u"streams": 10, u"bytes_str": u"1G"},
         ]
         hoststack_quic_kwargs_list = [
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 1,
-             u"streams": 1, u"bytes_str": u"100M"},
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 1,
-             u"streams": 10, u"bytes_str": u"100M"},
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 10,
-             u"streams": 1, u"bytes_str": u"100M"},
-            {u"frame_size": 0, u"phy_cores": 1, u"clients": 10,
+            {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"},
         ]
 
index ed1e7b7..e765169 100644 (file)
@@ -35,8 +35,8 @@
 | ... | api_seg_api_size=1G
 | ... | tcp_cc_algo=cubic
 | ... | sess_evt_q_seg_size=64M
-| ... | sess_evt_q_length=2048
-| ... | sess_prealloc_sess=128
+| ... | sess_evt_q_length=16384
+| ... | sess_prealloc_sess=1024
 | ... | sess_v4_tbl_buckets=20000
 | ... | sess_v4_tbl_mem=64M
 | ... | sess_v4_hopen_buckets=20000
@@ -53,6 +53,8 @@
 | ... | uri_protocol=quic
 | ... | uri_ip4_addr=${EMPTY}
 | ... | uri_port=1234
+| ... | nthreads=1
+| ... | mq_size=${vpp_hoststack_attr}[sess_evt_q_length]
 | ... | nclients=1
 | ... | quic_streams=1
 | ... | time=sconnect:lastbyte
@@ -71,6 +73,8 @@
 | ... | uri_protocol=quic
 | ... | uri_ip4_addr=${EMPTY}
 | ... | uri_port=1234
+| ... | nthreads=1
+| ... | mq_size=${vpp_hoststack_attr}[sess_evt_q_length]
 | ... | nclients=1
 | ... | quic_streams=1
 | ... | time=sconnect:lastbyte
 | | ... | *Arguments:*
 | | ... | - ${cfg_vpp_feature} - VPP Feature requiring config Type: string
 | | ... | - ${namespace} - Namespace Type: string
+| | ... | - ${nthreads} - Number of threads Type: string
+| | ... | - ${mq_size} - Number of threads Type: string
 | | ... | - ${nclients} - Number of clients Type: string
 | | ... | - ${quic_streams} - Number of quic streams Type: string
 | | ... | - ${fifo_size} - Session Fifo Size Type: integer
 | | [Arguments]
 | | ... | ${cfg_vpp_feature}=${vpp_echo_server_attr}[cfg_vpp_feature]
 | | ... | ${namespace}=${vpp_echo_server_attr}[namespace]
+| | ... | ${nthreads}=${vpp_echo_server_attr}[nthreads]
+| | ... | ${mq_size}=${vpp_echo_server_attr}[mq_size]
 | | ... | ${nclients}=${vpp_echo_server_attr}[nclients]
 | | ... | ${quic_streams}=${vpp_echo_server_attr}[quic_streams]
 | | ... | ${time}=${vpp_echo_server_attr}[time]
 | | Set To Dictionary | ${vpp_echo_server_attr} | cfg_vpp_feature
 | | ... | ${cfg_vpp_feature}
 | | Set To Dictionary | ${vpp_echo_server_attr} | namespace | ${namespace}
+| | Set To Dictionary | ${vpp_echo_server_attr} | nthreads | ${nthreads}
+| | Set To Dictionary | ${vpp_echo_server_attr} | mq_size | ${mq_size}
 | | Set To Dictionary | ${vpp_echo_server_attr} | nclients | ${nclients}
 | | Set To Dictionary | ${vpp_echo_server_attr} | quic_streams | ${quic_streams}
 | | Set To Dictionary | ${vpp_echo_server_attr} | time | ${time}
 | | ... | *Arguments:*
 | | ... | - ${cfg_vpp_feature} - VPP Feature requiring config Type: string
 | | ... | - ${namespace} - Namespace Type: string
+| | ... | - ${nthreads} - Number of threads Type: string
+| | ... | - ${mq_size} - Number of threads Type: string
 | | ... | - ${nclients} - Number of clients Type: string
+| | ... | - ${quic_streams} - Number of quic streams Type: string
 | | ... | - ${fifo_size} - Session Fifo Size Type: integer
 | | ... | - ${time} - Timing events (start:end) Type: string
 | | ... | - ${rx_bytes} - Number of Bytes to receive Type: string
 | | [Arguments]
 | | ... | ${cfg_vpp_feature}=${vpp_echo_client_attr}[cfg_vpp_feature]
 | | ... | ${namespace}=${vpp_echo_client_attr}[namespace]
+| | ... | ${nthreads}=${vpp_echo_client_attr}[nthreads]
+| | ... | ${mq_size}=${vpp_echo_client_attr}[mq_size]
 | | ... | ${nclients}=${vpp_echo_client_attr}[nclients]
-| | ... | ${quic_streams}=${vpp_echo_server_attr}[quic_streams]
+| | ... | ${quic_streams}=${vpp_echo_client_attr}[quic_streams]
 | | ... | ${time}=${vpp_echo_client_attr}[time]
 | | ... | ${fifo_size}=${vpp_echo_client_attr}[fifo_size]
 | | ... | ${rx_bytes}=${vpp_echo_client_attr}[rx_bytes]
 | | Set To Dictionary | ${vpp_echo_client_attr} | cfg_vpp_feature
 | | ... | ${cfg_vpp_feature}
 | | Set To Dictionary | ${vpp_echo_client_attr} | namespace | ${namespace}
+| | Set To Dictionary | ${vpp_echo_client_attr} | nthreads | ${nthreads}
+| | Set To Dictionary | ${vpp_echo_client_attr} | mq_size | ${mq_size}
 | | Set To Dictionary | ${vpp_echo_client_attr} | nclients | ${nclients}
 | | Set To Dictionary | ${vpp_echo_client_attr} | quic_streams | ${quic_streams}
 | | Set To Dictionary | ${vpp_echo_client_attr} | time | ${time}
diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquic-vppecho-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquic-vppecho-bps.robot
new file mode 100644 (file)
index 0000000..a93afa9
--- /dev/null
@@ -0,0 +1,74 @@
+# 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 | eth-ip4udpquic-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}
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${phy_cores} | ${clients} |  ${streams} | ${bytes}
+| |
+| | 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
+
+*** 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