diff options
author | Dave Wallace <dwallacelf@gmail.com> | 2019-08-06 22:26:00 +0000 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2019-08-14 16:25:19 +0000 |
commit | 6da7266754c28754c04cf37d1974e39766a261f6 (patch) | |
tree | 3fbbe99fd1e797946a888293d302d0f50ffbb96a | |
parent | 669d320bc64e41f879c047a39a66b8ec99bf4b1e (diff) |
VAT-to-PAPI: Fix HTTP/TCP tests
Change-Id: Ie728bc73eb7429d246e82dd195fc63191c3ac51d
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
-rw-r--r-- | resources/libraries/bash/entry/check/tc_naming.sh | 4 | ||||
-rw-r--r-- | resources/libraries/python/Constants.py | 3 | ||||
-rw-r--r-- | resources/libraries/python/tcp.py | 61 | ||||
-rw-r--r-- | resources/libraries/robot/tcp/tcp_setup.robot | 22 | ||||
-rw-r--r-- | resources/libraries/robot/wrk/wrk_utils.robot | 3 | ||||
-rw-r--r-- | resources/templates/vat/start_http_server.vat | 1 | ||||
-rw-r--r-- | resources/templates/vat/start_http_server_params.vat | 1 | ||||
-rw-r--r-- | resources/tools/wrk/wrk.py | 2 | ||||
-rwxr-xr-x | resources/tools/wrk/wrk_utils.sh | 6 | ||||
-rw-r--r-- | resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml | 19 | ||||
-rw-r--r-- | resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml | 19 | ||||
-rw-r--r-- | resources/traffic_profiles/wrk/www/empty.html | 0 | ||||
-rw-r--r-- | tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-cps.robot (renamed from tests/vpp/perf/tcp/10ge2p1x520-ethip4tcphttp-httpserver.robot) | 83 | ||||
-rw-r--r-- | tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-rps.robot | 93 |
14 files changed, 190 insertions, 127 deletions
diff --git a/resources/libraries/bash/entry/check/tc_naming.sh b/resources/libraries/bash/entry/check/tc_naming.sh index 1101fa5a16..b8a2775035 100644 --- a/resources/libraries/bash/entry/check/tc_naming.sh +++ b/resources/libraries/bash/entry/check/tc_naming.sh @@ -66,7 +66,7 @@ r_testc_rules=( #'(ipsec[[:digit:]]+tnlhw|ipsec[[:digit:]]+tnlsw|' #'srhip6|tcp|udp|lispip6|lispip4|vxlan){0,1}' #'(http){0,1}-' - '(.*)-(dev|ndrpdr|cps)$' + '(.*)-(dev|ndrpdr|cps|rps)$' ) s_suite_rules=( 'number of SUT nodes' @@ -85,7 +85,7 @@ r_suite_rules=( #'(ipsec[[:digit:]]+tnlhw|ipsec[[:digit:]]+tnlsw|' #'srhip6|tcp|udp|lispip6|lispip4|vxlan){0,1}' #'(http){0,1}-' - '(.*)-(dev|ndrpdr|cps)$' + '(.*)-(dev|ndrpdr|cps|rps)$' ) rm -f "tc_naming.log" || die diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py index c970d19027..e8209544e8 100644 --- a/resources/libraries/python/Constants.py +++ b/resources/libraries/python/Constants.py @@ -43,6 +43,9 @@ class Constants(object): # Container templates location RESOURCES_TPL_CONTAINER = 'resources/templates/container' + # HTTP Server www root directory + RESOURCES_TP_WRK_WWW = 'resources/traffic_profiles/wrk/www' + # OpenVPP VAT binary name VAT_BIN_NAME = 'vpp_api_test' diff --git a/resources/libraries/python/tcp.py b/resources/libraries/python/tcp.py index e013a65539..1b08912b7e 100644 --- a/resources/libraries/python/tcp.py +++ b/resources/libraries/python/tcp.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 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: @@ -14,36 +14,35 @@ """TCP util library. """ -from resources.libraries.python.VatExecutor import VatTerminal +from resources.libraries.python.PapiExecutor import PapiSocketExecutor +from resources.libraries.python.Constants import Constants class TCPUtils(object): """Implementation of the TCP utilities. """ + www_root_dir = '{rmt_fw_dir}/{wrk_www}'\ + .format(rmt_fw_dir=Constants.REMOTE_FW_DIR, + wrk_www=Constants.RESOURCES_TP_WRK_WWW) def __init__(self): pass - @staticmethod - def start_http_server(node): - """Start HTTP server on the given node. - - :param node: Node to start HTTP server on. - :type node: dict - """ - - with VatTerminal(node) as vat: - vat.vat_terminal_exec_cmd_from_template( - "start_http_server.vat") - - @staticmethod - def start_http_server_params(node, prealloc_fifos, fifo_size, - private_segment_size): - """Start HTTP server on the given node. + @classmethod + def start_vpp_http_server_params(cls, node, http_static_plugin, + prealloc_fifos, fifo_size, + private_segment_size): + """Start the test HTTP server internal application or + the HTTP static server plugin internal applicatoin on the given node. + http static server www-root <www-root-dir> prealloc-fifos <N> + fifo-size <size in kB> + private-segment-size <seg_size expressed as number + unit, e.g. 100m> + -- or -- test http server static prealloc-fifos <N> fifo-size <size in kB> private-segment-size <seg_size expressed as number + unit, e.g. 100m> + Where N is the max number of connections you expect to handle at one time and <size> should be small if you test for CPS and exchange few bytes, say 4, if each connection just exchanges few packets. Or it @@ -55,28 +54,36 @@ class TCPUtils(object): Example: For CPS - test http server static prealloc-fifos 10000 fifo-size 64 - private-segment-size 4000m + http static server www-root <www-root-dir> prealloc-fifos 10000 + fifo-size 64 private-segment-size 4000m For RPS test http server static prealloc-fifos 500000 fifo-size 4 - test http server static prealloc-fifos 500000 fifo-size 4 private-segment-size 4000m :param node: Node to start HTTP server on. + :param http_static_plugin: Run HTTP static server plugin :param prealloc_fifos: Max number of connections you expect to handle at one time. :param fifo_size: FIFO size in kB. :param private_segment_size: Private segment size. Number + unit. :type node: dict + :type http_static_plugin: boolean :type prealloc_fifos: str :type fifo_size: str :type private_segment_size: str """ + if http_static_plugin == True: + cmd='http static server www-root {www_root} '\ + 'prealloc-fifos {prealloc_fifos} fifo-size {fifo_size}'\ + ' private-segment-size {pvt_seg_size}'\ + .format(www_root=cls.www_root_dir, + prealloc_fifos=prealloc_fifos, fifo_size=fifo_size, + pvt_seg_size=private_segment_size) + else: + cmd='test http server static prealloc-fifos {prealloc_fifos} '\ + 'fifo-size {fifo_size} private-segment-size {pvt_seg_size}'\ + .format(prealloc_fifos=prealloc_fifos, fifo_size=fifo_size, + pvt_seg_size=private_segment_size) + PapiSocketExecutor.run_cli_cmd(node, cmd) - with VatTerminal(node, json_param=False) as vat: - vat.vat_terminal_exec_cmd_from_template( - "start_http_server_params.vat", - prealloc_fifos=prealloc_fifos, - fifo_size=fifo_size, - private_segment_size=private_segment_size) diff --git a/resources/libraries/robot/tcp/tcp_setup.robot b/resources/libraries/robot/tcp/tcp_setup.robot index 39a570c20a..91192639c1 100644 --- a/resources/libraries/robot/tcp/tcp_setup.robot +++ b/resources/libraries/robot/tcp/tcp_setup.robot @@ -21,24 +21,27 @@ | Documentation | L2 keywords to set up VPP to test tcp. *** Keywords *** -| Set up HTTP server with paramters on the VPP node +| Set up HTTP server with parameters on the VPP node | | [Documentation] | | ... | Configure IP address on the port, set it up and start HTTP server on | | ... | the VPP. | | ... | | ... | *Arguments:* -| | ... | - ${prealloc_fifos} - Max number of connections you expect to handle +| | ... | - http_static_plugin - Use the HTTP static plugin http server. +| | ... | Type: boolean +| | ... | - prealloc_fifos - Max number of connections you expect to handle | | ... | at one time. Type: string -| | ... | - ${fifo_size} - FIFO size in kB. Type: string -| | ... | - ${private_segment_size} - Private segment size. Number + unit. +| | ... | - fifo_size - FIFO size in kB. Type: string +| | ... | - private_segment_size - Private segment size. Number + unit. | | ... | Type: string | | ... | | ... | *Example:* | | ... -| | ... | \| Set up HTTP server with paramters on the VPP node \| 400 \| 4096\ -| | ... | \| 2g \| +| | ... | \| Set up HTTP server with paramters on the VPP node \| ${true}\ +| | ... | \| 400 \| 4096 \| 2g \| | | ... -| | [Arguments] | ${prealloc_fifos} | ${fifo_size} | ${private_segment_size} +| | [Arguments] | ${http_static_plugin} | ${prealloc_fifos} | ${fifo_size} +| | ... | ${private_segment_size} | | ... | | Set Interface State | ${dut1} | ${dut1_if1} | up | | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 192.168.10.2 | 24 @@ -50,6 +53,5 @@ | | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 192.168.70.2 | 24 | | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 192.168.80.2 | 24 | | Vpp Node Interfaces Ready Wait | ${dut1} -| | Start HTTP server params | ${dut1} | ${prealloc_fifos} | ${fifo_size} -| | ... | ${private_segment_size} -| | Sleep | 30 +| | Start VPP HTTP server params | ${dut1} | ${http_static_plugin} +| | ... | ${prealloc_fifos} | ${fifo_size} | ${private_segment_size} diff --git a/resources/libraries/robot/wrk/wrk_utils.robot b/resources/libraries/robot/wrk/wrk_utils.robot index fd18a5d686..1c65228130 100644 --- a/resources/libraries/robot/wrk/wrk_utils.robot +++ b/resources/libraries/robot/wrk/wrk_utils.robot @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 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: @@ -17,7 +17,6 @@ | Library | resources.libraries.python.DUTSetup | Library | resources.libraries.python.TrafficGenerator | Library | resources.libraries.python.topology.Topology -| Resource | resources/libraries/robot/performance/performance_setup.robot | ... | Documentation | L2 keywords to set up wrk and to measure performance | ... | parameters using wrk. diff --git a/resources/templates/vat/start_http_server.vat b/resources/templates/vat/start_http_server.vat deleted file mode 100644 index 1d00285a91..0000000000 --- a/resources/templates/vat/start_http_server.vat +++ /dev/null @@ -1 +0,0 @@ -exec test http server static
\ No newline at end of file diff --git a/resources/templates/vat/start_http_server_params.vat b/resources/templates/vat/start_http_server_params.vat deleted file mode 100644 index 28c4403079..0000000000 --- a/resources/templates/vat/start_http_server_params.vat +++ /dev/null @@ -1 +0,0 @@ -exec test http server static prealloc-fifos {prealloc_fifos} fifo-size {fifo_size} private-segment-size {private_segment_size}
\ No newline at end of file diff --git a/resources/tools/wrk/wrk.py b/resources/tools/wrk/wrk.py index b7989b8852..84d17ee7a1 100644 --- a/resources/tools/wrk/wrk.py +++ b/resources/tools/wrk/wrk.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 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: diff --git a/resources/tools/wrk/wrk_utils.sh b/resources/tools/wrk/wrk_utils.sh index 1c77fea731..16af61416b 100755 --- a/resources/tools/wrk/wrk_utils.sh +++ b/resources/tools/wrk/wrk_utils.sh @@ -74,7 +74,7 @@ function wrk_utils.traffic_1_url_1_core { if [ "${header}" != "None" ]; then header="${header}" else - header="" + header="''" fi taskset --cpu-list ${cpu} \ @@ -134,7 +134,7 @@ function wrk_utils.traffic_n_urls_n_cores { if [ "${header}" != "None" ]; then header="${header}" else - header="" + header="''" fi urls=$(echo ${urls} | tr ";" "\n") @@ -204,7 +204,7 @@ function wrk_utils.traffic_n_urls_m_cores { if [ "${header}" != "None" ]; then header="${header}" else - header="" + header="''" fi urls=$(echo ${urls} | tr ";" "\n") diff --git a/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml b/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml index 706cda01b5..2d059e7b6e 100644 --- a/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml +++ b/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml @@ -1,18 +1,17 @@ -# This is an example wrk traffic profile. +# wrk-sf-2n-ethip4tcphttp-8u8c50con-cps traffic profile. # List of urls for requests. Each url is requested in a separate instance of # wrk. # Type: list urls: - # There must be an empty file (0B) requested but vpp does not support it. - - "http://192.168.10.2" - - "http://192.168.20.2" - - "http://192.168.30.2" - - "http://192.168.40.2" - - "http://192.168.50.2" - - "http://192.168.60.2" - - "http://192.168.70.2" - - "http://192.168.80.2" + - "http://192.168.10.2/empty.html" + - "http://192.168.20.2/empty.html" + - "http://192.168.30.2/empty.html" + - "http://192.168.40.2/empty.html" + - "http://192.168.50.2/empty.html" + - "http://192.168.60.2/empty.html" + - "http://192.168.70.2/empty.html" + - "http://192.168.80.2/empty.html" # Index of the first CPU on the numa used to run wrk. # Type: integer diff --git a/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml b/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml index c1ad9e4217..d997e16ed2 100644 --- a/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml +++ b/resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml @@ -1,18 +1,17 @@ -# This is an example wrk traffic profile. +# wrk-sf-2n-ethip4tcphttp-8u8c50con-rps traffic profile. # List of urls for requests. Each url is requested in a separate instance of # wrk. # Type: list urls: - # There must be a file (1kB - 1MB) requested but vpp does not support it. - - "http://192.168.10.2" - - "http://192.168.20.2" - - "http://192.168.30.2" - - "http://192.168.40.2" - - "http://192.168.50.2" - - "http://192.168.60.2" - - "http://192.168.70.2" - - "http://192.168.80.2" + - "http://192.168.10.2/empty.html" + - "http://192.168.20.2/empty.html" + - "http://192.168.30.2/empty.html" + - "http://192.168.40.2/empty.html" + - "http://192.168.50.2/empty.html" + - "http://192.168.60.2/empty.html" + - "http://192.168.70.2/empty.html" + - "http://192.168.80.2/empty.html" # Index of the first CPU on the numa used to run wrk. # Type: integer diff --git a/resources/traffic_profiles/wrk/www/empty.html b/resources/traffic_profiles/wrk/www/empty.html new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/resources/traffic_profiles/wrk/www/empty.html diff --git a/tests/vpp/perf/tcp/10ge2p1x520-ethip4tcphttp-httpserver.robot b/tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-cps.robot index c995a586af..7dd6a5d132 100644 --- a/tests/vpp/perf/tcp/10ge2p1x520-ethip4tcphttp-httpserver.robot +++ b/tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-cps.robot @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 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: @@ -18,7 +18,8 @@ | Resource | resources/libraries/robot/shared/default.robot | Resource | resources/libraries/robot/tcp/tcp_setup.robot | ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | HTTP | TCP +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV +| ... | HTTP | TCP | TCP_CPS | NIC_Intel-X710 | ... | Suite Setup | Setup suite single link | wrk | Suite Teardown | Tear down suite @@ -27,27 +28,28 @@ | ... | Test Template | Local template | ... -| Documentation | *HTTP requests per seconds, connections per seconds and -| ... | throughput measurement.* +| Documentation | *HTTP connections per seconds.* | ... | ... | *[Top] Network Topologies:* TG-DUT-TG 2-node topology | ... | with single link between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP-HTTP for TCP Host Stack | ... | *[Cfg] DUT configuration:* | ... | *[Ver] TG verification:* | ... | *[Ref] Applicable standard specifications:* *** Variables *** -| @{plugins_to_enable}= | dpdk_plugin.so +| @{plugins_to_enable}= | dpdk_plugin.so | http_static_plugin.so +| ... | hs_apps_plugin.so +| ${nic_name}= | Intel-X710 +| ${traffic_profile}= | wrk-sf-2n-ethip4tcphttp-8u8c50con-cps +| ${http_static_plugin}= | ${false} *** Keywords *** | Local template -| | [Arguments] | ${traffic_profile} | ${phy_cores} | ${test_type} -| | ... | ${rxq}=${None} +| | [Arguments] | ${phy_cores} | ${rxq}=${None} | | ... | | Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} | | Add PCI devices to all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* | | :FOR | ${dut} | IN | @{duts} | | | Import Library | resources.libraries.python.VppConfigGenerator | | | ... | WITH NAME | ${dut} @@ -64,67 +66,28 @@ | | | Run keyword | ${dut}.Add session local endpoints table buckets | 2500000 | | | Run keyword | ${dut}.Add session local endpoints table memory | 3g | | Apply startup configuration on all VPP DUTs -| | Run Keyword If | '${test_type}' == 'bw' -| | ... | Run keywords -| | ... | Set up HTTP server with paramters on the VPP node -| | ... | 500000 | 4 | 4000m | AND -| | ... | Measure throughput | ${traffic_profile} -| | ... | ELSE IF | '${test_type}' == 'rps' -| | ... | Run keywords -| | ... | Set up HTTP server with paramters on the VPP node -| | ... | 500000 | 4 | 4000m | AND -| | ... | Measure requests per second | ${traffic_profile} -| | ... | ELSE IF | '${test_type}' == 'cps' -| | ... | Run keywords -| | ... | Set up HTTP server with paramters on the VPP node -| | ... | 31000 | 64 | 4000m | AND -| | ... | Measure connections per second | ${traffic_profile} +| | When Set up HTTP server with parameters on the VPP node +| | ... | ${http_static_plugin} | 31000 | 64 | 4000m +| | Then Measure connections per second | ${traffic_profile} *** Test Cases *** -| tc01-1t1c-ethip4tcphttp-httpserver-cps +| tc01-IMIX-1c-eth-ip4tcphttp-wrk8u8c50con-cps | | [Documentation] | | ... | Measure number of connections per second using wrk. | | ... -| | [Tags] | 1C | TCP_CPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-cps | phy_cores=${1} -| | ... | test_type=cps +| | [Tags] | 1C +| | phy_cores=${1} -| tc02-2t2c-ethip4tcphttp-httpserver-cps +| tc02-IMIX-2c-eth-ip4tcphttp-wrk8u8c50con-cps | | [Documentation] | | ... | Measure number of connections per second using wrk. | | ... -| | [Tags] | 2C | TCP_CPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-cps | phy_cores=${2} -| | ... | test_type=cps +| | [Tags] | 2C +| | phy_cores=${2} -| tc03-4t4c-ethip4tcphttp-httpserver-cps +| tc03-IMIX-4c-eth-ip4tcphttp-wrk8u8c50con-cps | | [Documentation] | | ... | Measure number of connections per second using wrk. | | ... -| | [Tags] | 4C | TCP_CPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-cps | phy_cores=${4} -| | ... | test_type=cps - -| tc04-1t1c-ethip4tcphttp-httpserver-rps -| | [Documentation] -| | ... | Measure and report number of requests per second using wrk. -| | ... -| | [Tags] | 1C | TCP_RPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-rps | phy_cores=${1} -| | ... | test_type=rps - -| tc05-2t2c-ethip4tcphttp-httpserver-rps -| | [Documentation] -| | ... | Measure and report number of requests per second using wrk. -| | ... -| | [Tags] | 2C | TCP_RPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-rps | phy_cores=${2} -| | ... | test_type=rps - -| tc06-4t4c-ethip4tcphttp-httpserver-rps -| | [Documentation] -| | ... | Measure and report number of requests per second using wrk. -| | ... -| | [Tags] | 4C | TCP_RPS -| | traffic_profile=wrk-sf-2n-ethip4tcphttp-8u8c50con-rps | phy_cores=${4} -| | ... | test_type=rps +| | [Tags] | 4C +| | phy_cores=${4} diff --git a/tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-rps.robot b/tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-rps.robot new file mode 100644 index 0000000000..b5f405d738 --- /dev/null +++ b/tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-rps.robot @@ -0,0 +1,93 @@ +# Copyright (c) 2019 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.tools.wrk.wrk +| Resource | resources/libraries/robot/wrk/wrk_utils.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/tcp/tcp_setup.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV +| ... | HTTP | TCP | TCP_RPS | NIC_Intel-X710 +| ... +| Suite Setup | Setup suite single link | wrk +| Suite Teardown | Tear down suite +| Test Setup | Setup test +| Test Teardown | Tear down test +| ... +| Test Template | Local template +| ... +| Documentation | *HTTP requests per seconds.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT-TG 2-node topology +| ... | with single link between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP-HTTP for TCP Host Stack +| ... | *[Cfg] DUT configuration:* +| ... | *[Ver] TG verification:* +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | http_static_plugin.so +| ... | hs_apps_plugin.so +| ${nic_name}= | Intel-X710 +| ${traffic_profile}= | wrk-sf-2n-ethip4tcphttp-8u8c50con-rps +| ${http_static_plugin}= | ${true} + +*** Keywords *** +| Local template +| | [Arguments] | ${phy_cores} | ${rxq}=${None} +| | ... +| | Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | Add PCI devices to all DUTs +| | :FOR | ${dut} | IN | @{duts} +| | | Import Library | resources.libraries.python.VppConfigGenerator +| | | ... | WITH NAME | ${dut} +| | | Run keyword | ${dut}.Add api segment global size | 2G +| | | Run keyword | ${dut}.Add api segment api size | 1G +| | | Run keyword | ${dut}.Add TCP preallocated connections | 1000000 +| | | Run keyword | ${dut}.Add TCP preallocated half open connections | 1000000 +| | | Run keyword | ${dut}.Add session event queue length | 1000000 +| | | Run keyword | ${dut}.Add session preallocated sessions | 1000000 +| | | Run keyword | ${dut}.Add session v4 session table buckets | 500000 +| | | Run keyword | ${dut}.Add session v4 session table memory | 1g +| | | Run keyword | ${dut}.Add session v4 halfopen table buckets | 2500000 +| | | Run keyword | ${dut}.Add session v4 halfopen table memory | 3g +| | | Run keyword | ${dut}.Add session local endpoints table buckets | 2500000 +| | | Run keyword | ${dut}.Add session local endpoints table memory | 3g +| | Apply startup configuration on all VPP DUTs +| | When Set up HTTP server with parameters on the VPP node +| | ... | ${http_static_plugin} | 500000 | 4 | 4000m +| | Then Measure requests per second | ${traffic_profile} + +*** Test Cases *** +| tc01-IMIX-1c-eth-ip4tcphttp-wrk8u8c50con-rps +| | [Documentation] +| | ... | Measure number of requests per second using wrk. +| | ... +| | [Tags] | 1C +| | phy_cores=${1} + +| tc02-IMIX-2c-eth-ip4tcphttp-wrk8u8c50con-rps +| | [Documentation] +| | ... | Measure number of requests per second using wrk. +| | ... +| | [Tags] | 2C +| | phy_cores=${2} + +| tc03-IMIX-4c-eth-ip4tcphttp-wrk8u8c50con-rps +| | [Documentation] +| | ... | Measure number of requests per second using wrk. +| | ... +| | [Tags] | 4C +| | phy_cores=${4} |