aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/CpuUtils.py33
-rw-r--r--resources/libraries/robot/default.robot27
-rw-r--r--resources/libraries/robot/performance.robot68
-rwxr-xr-xresources/tools/t-rex/t-rex-stateless.py4
4 files changed, 84 insertions, 48 deletions
diff --git a/resources/libraries/python/CpuUtils.py b/resources/libraries/python/CpuUtils.py
index a8698dfd54..85c2e843e4 100644
--- a/resources/libraries/python/CpuUtils.py
+++ b/resources/libraries/python/CpuUtils.py
@@ -98,3 +98,36 @@ class CpuUtils(object):
raise RuntimeError("Node cpuinfo not available.")
return cpulist
+
+ @staticmethod
+ def cpu_list_per_node_str(node, cpu_node, skip_cnt=0,
+ cpu_cnt=0, sep=","):
+ """Return string of node related list of CPU numbers.
+
+ :param node: Node dictionary with cpuinfo.
+ :param cpu_node: Numa node number.
+ :param skip_cnt: Skip first "skip_cnt" CPUs.
+ :param cpu_cnt: Count of cpus to return, if 0 then return all.
+ :param sep: Separator, default: 1,2,3,4,....
+ :type node: dict
+ :type cpu_node: int
+ :type skip_cnt: int
+ :type cpu_cnt: int
+ :type sep: str
+ :return: Cpu numbers related to numa from argument.
+ :rtype: str
+ """
+
+ cpu_list = CpuUtils.cpu_list_per_node(node, cpu_node)
+ cpu_list_len = len(cpu_list)
+ cpu_flist = ""
+ if cpu_cnt == 0:
+ cpu_cnt = cpu_list_len - skip_cnt
+
+ if cpu_cnt + skip_cnt > cpu_list_len:
+ raise RuntimeError("cpu_cnt + skip_cnt > length(cpu list).")
+
+ cpu_flist = sep.join(str(a) for a in
+ cpu_list[skip_cnt:skip_cnt+cpu_cnt])
+
+ return cpu_flist
diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot
index 3135ef0041..742906e94a 100644
--- a/resources/libraries/robot/default.robot
+++ b/resources/libraries/robot/default.robot
@@ -14,6 +14,7 @@
*** Settings ***
| Variables | resources/libraries/python/topology.py
| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.CpuUtils
| Library | resources.libraries.python.DUTSetup
| Library | resources.libraries.python.TGSetup
| Library | resources/libraries/python/VppConfigGenerator.py
@@ -41,6 +42,32 @@
| | | Vpp api trace save | ${nodes['${dut}']}
| | | Vpp api trace dump | ${nodes['${dut}']}
+| Add '${m}' worker threads and rxqueues '${n}' in 3-node single-link topo
+| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup
+| | ... | configuration on all DUTs in 3-node single-link topology.
+| | ${m_int}= | Convert To Integer | ${m}
+| | ${dut1_numa}= | Get interfaces numa node | ${dut1}
+| | ... | ${dut1_if1} | ${dut1_if2}
+| | ${dut2_numa}= | Get interfaces numa node | ${dut2}
+| | ... | ${dut2_if1} | ${dut2_if2}
+| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa}
+| | ... | cpu_cnt=${1}
+| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa}
+| | ... | skip_cnt=${1} | cpu_cnt=${m_int}
+| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa}
+| | ... | cpu_cnt=${1}
+| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa}
+| | ... | skip_cnt=${1} | cpu_cnt=${m_int}
+| | ${dut1_cpu}= | Catenate | main-core | ${dut1_cpu_main}
+| | ... | corelist-workers | ${dut1_cpu_w}
+| | ${dut2_cpu}= | Catenate | main-core | ${dut2_cpu_main}
+| | ... | corelist-workers | ${dut2_cpu_w}
+| | ${rxqueues}= | Catenate | num-rx-queues | ${n}
+| | Add CPU config | ${dut1} | ${dut1_cpu}
+| | Add CPU config | ${dut2} | ${dut2_cpu}
+| | Add rxqueues config | ${dut1} | ${rxqueues}
+| | Add rxqueues config | ${dut2} | ${rxqueues}
+
| Add '${m}' worker threads and rxqueues '${n}' without HTT to all DUTs
| | [Documentation] | Setup M worker threads without HTT and rxqueues N in
| | ... | startup configuration of VPP to all DUTs
diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot
index 0ef07ebefc..62b175668d 100644
--- a/resources/libraries/robot/performance.robot
+++ b/resources/libraries/robot/performance.robot
@@ -75,6 +75,8 @@
| | ... | for 40GE with 9004B L2 Frame.
| | ... | - 40Ge_linerate_pps_9008B - Maximum number of packet per second
| | ... | for 40GE with 9008B L2 Frame.
+| | ... | - 40Ge_linerate_pps_IMIX_v4_1 - Maximum number of packet per second
+| | ... | for 40GE with IMIX_v4_1 profile.
| | ...
| | Set Suite Variable | ${10Ge_linerate_pps_64B} | 14880952
| | Set Suite Variable | ${10Ge_linerate_pps_68B} | 14204545
@@ -95,6 +97,26 @@
| | Set Suite Variable | ${40Ge_linerate_pps_9000B} | 554323
| | Set Suite Variable | ${40Ge_linerate_pps_9004B} | 554078
| | Set Suite Variable | ${40Ge_linerate_pps_9008B} | 553832
+| | Set Suite Variable | ${40Ge_linerate_pps_IMIX_v4_1} | 13374944
+
+| Calculate pps
+| | [Documentation]
+| | ... | Calculate pps for given rate and L2 frame size,
+| | ... | additional 20B are added to L2 frame size as padding.
+| | ...
+| | ... | *Arguments*
+| | ... | - bps - Rate in bps. Type: integer
+| | ... | - framesize - L2 frame size in Bytes. Type: integer
+| | ...
+| | ... | *Return*
+| | ... | - Calculated pps. Type: integer
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Calculate pps \| 10000000000 | 64
+| | [Arguments] | ${bps} | ${framesize}
+| | ${ret}= | Evaluate | (${bps}/((${framesize}+20)*8)).__trunc__()
+| | Return From Keyword | ${ret}
| Get Frame Size
| | [Documentation]
@@ -465,52 +487,6 @@
| | Vpp l2bd forwarding setup | ${dut2} | ${dut2_if1} | ${dut2_if2}
| | All Vpp Interfaces Ready Wait | ${nodes}
-| 2-node Performance Suite Setup
-| | [Documentation]
-| | ... | Suite preparation phase that setup default startup configuration of
-| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global
-| | ... | variables used in test cases. Initializes traffic generator.
-| | ...
-| | ... | *Arguments:*
-| | ... | - topology_type - Topology type. Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| 2-node Performance Suite Setup \| L2 \|
-| | [Arguments] | ${topology_type}
-| | Setup default startup configuration of VPP on all DUTs
-| | Show vpp version on all DUTs
-| | Setup performance rate Variables
-| | Setup performance global Variables
-| | 2-node circular Topology Variables Setup
-| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1}
-| | ... | ${dut1} | ${dut1_if2}
-| | ... | ${topology_type}
-
-| 3-node Performance Suite Setup
-| | [Documentation]
-| | ... | Suite preparation phase that setup default startup configuration of
-| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global
-| | ... | variables used in test cases. Initializes traffic generator.
-| | ...
-| | ... | *Arguments:*
-| | ... | - topology_type - Topology type. Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| 3-node Performance Suite Setup \| L2 \|
-| | [Arguments] | ${topology_type}
-| | Setup default startup configuration of VPP on all DUTs
-| | Show vpp version on all DUTs
-| | Setup performance rate Variables
-| | Setup performance global Variables
-| | 3-node circular Topology Variables Setup
-| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1}
-| | ... | ${dut2} | ${dut2_if2}
-| | ... | ${topology_type}
-
2-node Performance Suite Setup with DUT's NIC model
| | [Documentation]
| | ... | Suite preparation phase that setup default startup configuration of
diff --git a/resources/tools/t-rex/t-rex-stateless.py b/resources/tools/t-rex/t-rex-stateless.py
index 6c7579d0c3..f456b66316 100755
--- a/resources/tools/t-rex/t-rex-stateless.py
+++ b/resources/tools/t-rex/t-rex-stateless.py
@@ -380,7 +380,7 @@ def simple_burst(stream_a, stream_b, stream_lat_a, stream_lat_b, duration, rate,
if client.get_warnings():
for warning in client.get_warnings():
- print_error(warning)
+ print(warning)
# read the stats after the test
stats = client.get_stats()
@@ -408,7 +408,7 @@ def simple_burst(stream_a, stream_b, stream_lat_a, stream_lat_b, duration, rate,
if client.get_warnings():
for warning in client.get_warnings():
- print_error(warning)
+ print(warning)
# read the stats after the test
stats = client.get_stats()