diff options
author | Dave Wallace <dwallacelf@gmail.com> | 2020-01-08 21:14:25 +0000 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2020-01-29 15:51:45 +0000 |
commit | e14811302d567cb3faaf234edcd13aedaf01fe79 (patch) | |
tree | cd8003a594d3aa0b7a1577e96cdd5d5749e2f010 | |
parent | 676f4ae7d4df07dc41471e829f9d4c0b7a5bc8ca (diff) |
perf: QUIC transport hoststack test suite
Change-Id: I73f4be7ea315c7a5dcce46e1bd3034bcb0a97ee2
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
(cherry picked from commit 074ae9732d06f962a65d91147b55abf86b42b6d9)
4 files changed, 117 insertions, 14 deletions
diff --git a/resources/libraries/python/HoststackUtil.py b/resources/libraries/python/HoststackUtil.py index 670a81b19b..fe2034a680 100644 --- a/resources/libraries/python/HoststackUtil.py +++ b/resources/libraries/python/HoststackUtil.py @@ -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: diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py index 5b112f5a73..f065887da0 100644 --- a/resources/libraries/python/autogen/Regenerator.py +++ b/resources/libraries/python/autogen/Regenerator.py @@ -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"}, ] diff --git a/resources/libraries/robot/hoststack/hoststack.robot b/resources/libraries/robot/hoststack/hoststack.robot index ed1e7b7cb6..e765169e32 100644 --- a/resources/libraries/robot/hoststack/hoststack.robot +++ b/resources/libraries/robot/hoststack/hoststack.robot @@ -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 @@ -197,6 +201,8 @@ | | ... | *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 @@ -214,6 +220,8 @@ | | [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] @@ -226,6 +234,8 @@ | | 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} @@ -245,7 +255,10 @@ | | ... | *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 @@ -261,8 +274,10 @@ | | [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] @@ -273,6 +288,8 @@ | | 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 index 0000000000..a93afa974a --- /dev/null +++ b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpquic-vppecho-bps.robot @@ -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 |