aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2019-08-06 22:26:00 +0000
committerVratko Polak <vrpolak@cisco.com>2019-08-14 16:25:19 +0000
commit6da7266754c28754c04cf37d1974e39766a261f6 (patch)
tree3fbbe99fd1e797946a888293d302d0f50ffbb96a /resources
parent669d320bc64e41f879c047a39a66b8ec99bf4b1e (diff)
VAT-to-PAPI: Fix HTTP/TCP tests
Change-Id: Ie728bc73eb7429d246e82dd195fc63191c3ac51d Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/bash/entry/check/tc_naming.sh4
-rw-r--r--resources/libraries/python/Constants.py3
-rw-r--r--resources/libraries/python/tcp.py61
-rw-r--r--resources/libraries/robot/tcp/tcp_setup.robot22
-rw-r--r--resources/libraries/robot/wrk/wrk_utils.robot3
-rw-r--r--resources/templates/vat/start_http_server.vat1
-rw-r--r--resources/templates/vat/start_http_server_params.vat1
-rw-r--r--resources/tools/wrk/wrk.py2
-rwxr-xr-xresources/tools/wrk/wrk_utils.sh6
-rw-r--r--resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-cps.yaml19
-rw-r--r--resources/traffic_profiles/wrk/wrk-sf-2n-ethip4tcphttp-8u8c50con-rps.yaml19
-rw-r--r--resources/traffic_profiles/wrk/www/empty.html0
12 files changed, 74 insertions, 67 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