VAT-to-PAPI: Fix HTTP/TCP tests 94/21094/21
authorDave Wallace <dwallacelf@gmail.com>
Tue, 6 Aug 2019 22:26:00 +0000 (22:26 +0000)
committerVratko Polak <vrpolak@cisco.com>
Wed, 14 Aug 2019 16:25:19 +0000 (16:25 +0000)
Change-Id: Ie728bc73eb7429d246e82dd195fc63191c3ac51d
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
14 files changed:
resources/libraries/bash/entry/check/tc_naming.sh
resources/libraries/python/Constants.py
resources/libraries/python/tcp.py
resources/libraries/robot/tcp/tcp_setup.robot
resources/libraries/robot/wrk/wrk_utils.robot
resources/templates/vat/start_http_server.vat [deleted file]
resources/templates/vat/start_http_server_params.vat [deleted file]
resources/tools/wrk/wrk.py
resources/tools/wrk/wrk_utils.sh
resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml
resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml
resources/traffic_profiles/wrk/www/empty.html [new file with mode: 0644]
tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-cps.robot [moved from tests/vpp/perf/tcp/10ge2p1x520-ethip4tcphttp-httpserver.robot with 52% similarity]
tests/vpp/perf/tcp/2n1l-10ge2p1x710-eth-ip4tcphttp-rps.robot [new file with mode: 0644]

index 1101fa5..b8a2775 100644 (file)
@@ -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
index c970d19..e820954 100644 (file)
@@ -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'
 
index e013a65..1b08912 100644 (file)
@@ -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:
 """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)
index 39a570c..9119263 100644 (file)
 | 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}
index fd18a5d..1c65228 100644 (file)
@@ -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 (file)
index 1d00285..0000000
+++ /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 (file)
index 28c4403..0000000
+++ /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
index b7989b8..84d17ee 100644 (file)
@@ -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:
index 1c77fea..16af614 100755 (executable)
@@ -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")
index 706cda0..2d059e7 100644 (file)
@@ -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
index c1ad9e4..d997e16 100644 (file)
@@ -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 (file)
index 0000000..e69de29
@@ -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
 | ...
 | 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}
 | | | 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 (file)
index 0000000..b5f405d
--- /dev/null
@@ -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}