From f2de7c48d20c2944a5b31a907ecef566e05aeaeb Mon Sep 17 00:00:00 2001 From: Dave Wallace Date: Thu, 15 Apr 2021 00:58:12 +0000 Subject: [PATCH] hoststack perf: iperf3 udp hoststack performance tests. Change-Id: Ie2e735971934d8aeac2d436505c120f09ce67ac7 Signed-off-by: Dave Wallace --- resources/libraries/python/HoststackUtil.py | 5 ++ .../libraries/robot/hoststack/hoststack.robot | 13 ++++ ...1x710-eth-ip4udpbase-ldpreload-iperf3-bps.robot | 70 +++++++++++++++++++++ ...th-ip4udpscale1cl10s-ldpreload-iperf3-bps.robot | 71 ++++++++++++++++++++++ 4 files changed, 159 insertions(+) create mode 100644 tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpbase-ldpreload-iperf3-bps.robot create mode 100644 tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpscale1cl10s-ldpreload-iperf3-bps.robot diff --git a/resources/libraries/python/HoststackUtil.py b/resources/libraries/python/HoststackUtil.py index e797c3c206..2f093ce843 100644 --- a/resources/libraries/python/HoststackUtil.py +++ b/resources/libraries/python/HoststackUtil.py @@ -100,6 +100,11 @@ class HoststackUtil(): if u"time" in iperf3_attributes: iperf3_cmd[u"args"] += \ f" --time {iperf3_attributes[u'time']}" + if iperf3_attributes[u"udp"]: + iperf3_cmd[u"args"] += u" --udp" + iperf3_cmd[u"args"] += f" --bandwidth {iperf3_attributes[u'bandwidth']}" + if iperf3_attributes[u"length"] > 0: + iperf3_cmd[u"args"] += f" --length {iperf3_attributes[u'length']}" return iperf3_cmd @staticmethod diff --git a/resources/libraries/robot/hoststack/hoststack.robot b/resources/libraries/robot/hoststack/hoststack.robot index 30363f9b91..e16ad997db 100644 --- a/resources/libraries/robot/hoststack/hoststack.robot +++ b/resources/libraries/robot/hoststack/hoststack.robot @@ -109,6 +109,9 @@ | ... | ip_address=${EMPTY} | ... | parallel=${1} | ... | time=${20} +| ... | udp=${False} +| ... | bandwidth=10000000 +| ... | length=${0} | &{nginx_server_attr}= | ... | role=server | ... | cpu_cnt=${1} @@ -353,11 +356,15 @@ | | ... | - ${transparent_tls} - Use VCL Transparent-TLS mode Type: boolean | | ... | - ${ip_version} - IP version (4 or 6) Type: int | | ... | - ${parallel} - Number of parallel streams Type: int +| | ... | - ${bandwidth} - Target bandwidth in bits/sec Type: int +| | ... | - ${udp} - UDP or TCP protocol Type: boolean +| | ... | - ${length} - Packet Length Type: int | | | | ... | *Example:* | | | | ... | \| Set Iperf3 Client Attributes \| vcl_config=${vcl_config} \| | | ... | \| ip_version=${ip_version} \| parallel=${streams} \| +| | ... | \| bandwidth=${bandwidth} | udp=${True} \| | | | | [Arguments] | | ... | ${vcl_config}=${iperf3_client_attr}[vcl_config] @@ -365,6 +372,9 @@ | | ... | ${transparent_tls}=${iperf3_client_attr}[transparent_tls] | | ... | ${ip_version}=${iperf3_client_attr}[ip_version] | | ... | ${parallel}=${iperf3_client_attr}[parallel] +| | ... | ${bandwidth}=${iperf3_client_attr}[bandwidth] +| | ... | ${udp}=${iperf3_client_attr}[udp] +| | ... | ${length}=${iperf3_client_attr}[length] | | | | Set To Dictionary | ${iperf3_client_attr} | vcl_config | ${vcl_config} | | Set To Dictionary | ${iperf3_client_attr} | ld_preload | ${ld_preload} @@ -372,6 +382,9 @@ | | ... | ${transparent_tls} | | Set To Dictionary | ${iperf3_client_attr} | ip_version | ${ip_version} | | Set To Dictionary | ${iperf3_client_attr} | parallel | ${parallel} +| | Set To Dictionary | ${iperf3_client_attr} | bandwidth | ${bandwidth} +| | Set To Dictionary | ${iperf3_client_attr} | udp | ${udp} +| | Set To Dictionary | ${iperf3_client_attr} | length | ${length} | Run hoststack test program on DUT | | [Documentation] diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpbase-ldpreload-iperf3-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpbase-ldpreload-iperf3-bps.robot new file mode 100644 index 0000000000..d255cd165b --- /dev/null +++ b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpbase-ldpreload-iperf3-bps.robot @@ -0,0 +1,70 @@ +# 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: +# +# 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 +| ... | UDP | NIC_Intel-X710 | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | HOSTSTACK +| ... | LDPRELOAD | IPERF3 | 1CLIENT | 1STREAM | 1460B +| ... | eth-ip4udpbase-ldpreload-iperf3 +| +| Suite Setup | Setup suite topology interfaces with 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 goodput. +| +| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology +| ... | with single link between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP +| ... | *[Cfg] DUT configuration:* +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${overhead}= | ${0} +| ${frame_size}= | ${9000} +| ${crypto_type}= | ${None} +| ${iperf3_packet_length}= | ${1460} + +*** Keywords *** +| Local template +| | [Arguments] | ${phy_cores} +| | +| | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False} +| | Set VPP Hoststack Attributes | phy_cores=${phy_cores} +| | ${bandwidth} = | Get From Dictionary +| | ... | ${NIC_NAME_TO_BPS_LIMIT} | ${nic_name} +| | Set Iperf3 Client Attributes | udp=${True} | bandwidth=${bandwidth} +| | ... | length=${iperf3_packet_length} +| | ${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 *** +| 1460B-1c-eth-ip4udpbase-ldpreload-iperf3-bps +| | [Tags] | 1C +| | phy_cores=${1} diff --git a/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpscale1cl10s-ldpreload-iperf3-bps.robot b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpscale1cl10s-ldpreload-iperf3-bps.robot new file mode 100644 index 0000000000..f748706b17 --- /dev/null +++ b/tests/vpp/perf/hoststack/10ge2p1x710-eth-ip4udpscale1cl10s-ldpreload-iperf3-bps.robot @@ -0,0 +1,71 @@ +# 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: +# +# 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 +| ... | UDP | NIC_Intel-X710 | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | HOSTSTACK +| ... | LDPRELOAD | IPERF3 | 1CLIENT | 10STREAM | 1460B +| ... | eth-ip4udpscale1cl10s-ldpreload-iperf3 +| +| Suite Setup | Setup suite topology interfaces with 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 goodput. +| +| ... | *[Top] Network Topologies:* DUT-DUT 2-node topology +| ... | with single link between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP +| ... | *[Cfg] DUT configuration:* +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${overhead}= | ${0} +| ${frame_size}= | ${9000} +| ${crypto_type}= | ${None} +| ${streams} | ${10} +| ${iperf3_packet_length}= | ${1460} + +*** Keywords *** +| Local template +| | [Arguments] | ${phy_cores} +| | +| | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False} +| | Set VPP Hoststack Attributes | phy_cores=${phy_cores} +| | ${bandwidth} = | Get From Dictionary +| | ... | ${NIC_NAME_TO_BPS_LIMIT} | ${nic_name} +| | Set Iperf3 Client Attributes | udp=${True} | bandwidth=${bandwidth} +| | ... | parallel=${streams} | length=${iperf3_packet_length} +| | ${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 *** +| 1460B-1c-eth-ip4udpscale1cl10s-ldpreload-iperf3-bps +| | [Tags] | 1C +| | phy_cores=${1} -- 2.16.6