aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/DPDK/L2fwdTest.py8
-rw-r--r--resources/libraries/python/DPDK/L3fwdTest.py34
-rw-r--r--resources/libraries/robot/dpdk/default.robot58
3 files changed, 79 insertions, 21 deletions
diff --git a/resources/libraries/python/DPDK/L2fwdTest.py b/resources/libraries/python/DPDK/L2fwdTest.py
index 65ad6a53a4..aaa44358c3 100644
--- a/resources/libraries/python/DPDK/L2fwdTest.py
+++ b/resources/libraries/python/DPDK/L2fwdTest.py
@@ -33,12 +33,13 @@ class L2fwdTest(object):
:param cpu_cores: The DPDK run cores.
:param nb_cores: The cores number for the forwarding.
:param queue_nums: The queues number for the NIC.
- :param jumbo_frames: Are jumbo frames used or not.
+ :param jumbo_frames: Indication if the jumbo frames are used (True) or
+ not (False).
:type dut_node: dict
:type cpu_cores: str
:type nb_cores: str
:type queue_nums: str
- :type jumbo_frames: str
+ :type jumbo_frames: bool
:raises RuntimeError: If the script "run_l2fwd.sh" fails.
"""
if dut_node['type'] == NodeType.DUT:
@@ -46,11 +47,12 @@ class L2fwdTest(object):
ssh.connect(dut_node)
arch = Topology.get_node_arch(dut_node)
+ jumbo = 'yes' if jumbo_frames else 'no'
cmd = '{fwdir}/tests/dpdk/dpdk_scripts/run_l2fwd.sh {cpu_cores} ' \
'{nb_cores} {queues} {jumbo} {arch}'.\
format(fwdir=Constants.REMOTE_FW_DIR, cpu_cores=cpu_cores,
nb_cores=nb_cores, queues=queue_nums,
- jumbo=jumbo_frames, arch=arch)
+ jumbo=jumbo, arch=arch)
ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600)
if ret_code != 0:
diff --git a/resources/libraries/python/DPDK/L3fwdTest.py b/resources/libraries/python/DPDK/L3fwdTest.py
index 15e656af07..8c2596408d 100644
--- a/resources/libraries/python/DPDK/L3fwdTest.py
+++ b/resources/libraries/python/DPDK/L3fwdTest.py
@@ -35,7 +35,8 @@ class L3fwdTest(object):
:param nb_cores: The cores number for the forwarding
:param lcores_list: The lcore list string for the l3fwd routing
:param queue_nums: The queues number for the NIC
- :param jumbo_frames: Is jumbo frames or not. Accepted: yes / no
+ :param jumbo_frames: Indication if the jumbo frames are used (True) or
+ not (False).
:type nodes_info: dict
:type dut_node: dict
:type dut_if1: str
@@ -43,7 +44,7 @@ class L3fwdTest(object):
:type nb_cores: str
:type lcores_list: str
:type queue_nums: str
- :type jumbo_frames: str
+ :type jumbo_frames: bool
"""
if dut_node['type'] == NodeType.DUT:
adj_mac0, adj_mac1 = L3fwdTest.get_adj_mac(nodes_info, dut_node,
@@ -72,11 +73,12 @@ class L3fwdTest(object):
ssh = SSH()
ssh.connect(dut_node)
+ jumbo = 'yes' if jumbo_frames else 'no'
cmd = '{fwdir}/tests/dpdk/dpdk_scripts/run_l3fwd.sh ' \
'"{lcores}" "{ports}" {mac1} {mac2} {jumbo}'.\
format(fwdir=Constants.REMOTE_FW_DIR, lcores=lcores_list,
ports=port_config.rstrip(','), mac1=adj_mac0,
- mac2=adj_mac1, jumbo=jumbo_frames)
+ mac2=adj_mac1, jumbo=jumbo)
ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600)
if ret_code != 0:
@@ -107,6 +109,7 @@ class L3fwdTest(object):
# detect which is the port 0
if min(if_pci0, if_pci1) != if_pci0:
if_key0, if_key1 = if_key1, if_key0
+ L3fwdTest.patch_l3fwd(dut_node, 'patch_l3fwd_flip_routes')
adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface( \
nodes_info, dut_node, if_key0)
@@ -117,3 +120,28 @@ class L3fwdTest(object):
adj_mac1 = Topology.get_interface_mac(adj_node1, adj_if_key1)
return adj_mac0, adj_mac1
+
+ @staticmethod
+ def patch_l3fwd(node, patch):
+ """
+ Patch l3fwd application and recompile.
+
+ :param node: Dictionary created from topology.
+ :param patch: Patch to apply.
+ :type node: dict
+ :type patch: str
+ :raises RuntimeError: Patching of l3fwd failed.
+ """
+ arch = Topology.get_node_arch(node)
+
+ ssh = SSH()
+ ssh.connect(node)
+
+ ret_code, _, _ = ssh.exec_command(
+ '{fwdir}/tests/dpdk/dpdk_scripts/patch_l3fwd.sh {arch} '
+ '{fwdir}/tests/dpdk/dpdk_scripts/{patch}'.
+ format(fwdir=Constants.REMOTE_FW_DIR, arch=arch, patch=patch),
+ timeout=600)
+
+ if ret_code != 0:
+ raise RuntimeError('Patch of l3fwd failed.') \ No newline at end of file
diff --git a/resources/libraries/robot/dpdk/default.robot b/resources/libraries/robot/dpdk/default.robot
index b890db7d31..32ddcce63f 100644
--- a/resources/libraries/robot/dpdk/default.robot
+++ b/resources/libraries/robot/dpdk/default.robot
@@ -27,12 +27,20 @@
| | [Documentation] | Start the l2fwd with M worker threads and rxqueues N and
| | ... | jumbo support frames on/off on all DUTs.
| | ...
-| | [Arguments] | ${cpu_cnt} | ${rx_queues} | ${jumbo_frames}
+| | ... | *Arguments:*
+| | ... | - phy_cores - Number of physical cores to use. Type: integer
+| | ... | - rx_queues - Number of RX queues. Type: integer
+| | ... | - jumbo_frames - Jumbo frames on/off: boolean
| | ...
-| | ${cpu_count_int} | Convert to Integer | ${cpu_cnt}
-| | ${thr_count_int} | Convert to Integer | ${cpu_cnt}
+| | ... | *Example:*
+| | ...
+| | ... | \| Start L2FWD on all DUTs \| ${1} \| ${1} \| ${False} \|
+| | ...
+| | [Arguments] | ${phy_cores} | ${rx_queues}=${None} | ${jumbo_frames}=${False}
+| | ...
+| | ${cpu_count_int} | Convert to Integer | ${phy_cores}
+| | ${thr_count_int} | Convert to Integer | ${phy_cores}
| | ${dp_cores}= | Evaluate | ${cpu_count_int}+1
-| | ${nb_cores}= | Set Variable | ${cpu_count_int}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
@@ -40,11 +48,17 @@
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu Range Per Node Str | ${nodes['${dut}']} | ${numa}
| | | ... | skip_cnt=${1} | cpu_cnt=${dp_cores} | smt_used=${smt_used}
-| | | Start the l2fwd test | ${nodes['${dut}']} | ${cpus} | ${nb_cores}
-| | | ... | ${rxqueues} | ${jumbo_frames}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
+| | | ${rxq_count_int}= | Run keyword if | ${rx_queues}
+| | | ... | Set variable | ${rx_queues}
+| | | ... | ELSE | Evaluate | int(${thr_count_int}/2)
+| | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
+| | | ... | Set variable | ${1}
+| | | ... | ELSE | Set variable | ${rxq_count_int}
+| | | Start the l2fwd test | ${nodes['${dut}']} | ${cpus} | ${thr_count_int}
+| | | ... | ${rxq_count_int} | ${jumbo_frames}
| | | Run keyword if | ${thr_count_int} > 1
| | | ... | Set Tags | MTHREAD | ELSE | Set Tags | STHREAD
| | | Set Tags | ${thr_count_int}T${cpu_count_int}C
@@ -53,25 +67,39 @@
| | [Documentation] | Start the l3fwd with M worker threads and rxqueues N and
| | ... | jumbo support frames on/off on all DUTs.
| | ...
-| | [Arguments] | ${cpu_cnt} | ${rx_queues} | ${jumbo_frames}
+| | ... | *Arguments:*
+| | ... | - phy_cores - Number of physical cores to use. Type: integer
+| | ... | - rx_queues - Number of RX queues. Type: integer
+| | ... | - jumbo_frames - Jumbo frames on/off: boolean
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Start L3FWD on all DUTs \| ${1} \| ${1} \| ${False} \|
+| | ...
+| | [Arguments] | ${phy_cores} | ${rx_queues}=${None} | ${jumbo_frames}=${False}
| | ...
-| | ${cpu_count_int} | Convert to Integer | ${cpu_cnt}
-| | ${thr_count_int} | Convert to Integer | ${cpu_cnt}
+| | ${cpu_count_int} | Convert to Integer | ${phy_cores}
+| | ${thr_count_int} | Convert to Integer | ${phy_cores}
| | ${dp_cores}= | Evaluate | ${cpu_count_int}+1
-| | ${nb_cores}= | Set Variable | ${cpu_count_int}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
| | | ... | ${${dut}_if1} | ${${dut}_if2}
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${nb_cores} | smt_used=${smt_used}
-| | | Start the l3fwd test | ${nodes} | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | ${${dut}_if2} | ${nb_cores} | ${cpus} | ${rxqueues}
-| | | ... | ${jumbo_frames}
+| | | ... | skip_cnt=${1} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
+| | | ${rxq_count_int}= | Run keyword if | ${rx_queues}
+| | | ... | Set variable | ${rx_queues}
+| | | ... | ELSE | Evaluate | int(${thr_count_int}/2)
+| | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
+| | | ... | Set variable | ${1}
+| | | ... | ELSE | Set variable | ${rxq_count_int}
+| | | Start the l3fwd test | ${nodes} | ${nodes['${dut}']} | ${${dut}_if1}
+| | | ... | ${${dut}_if2} | ${thr_count_int} | ${cpus} | ${rxq_count_int}
+| | | ... | ${jumbo_frames}
| | | Run keyword if | ${thr_count_int} > 1
| | | ... | Set Tags | MTHREAD | ELSE | Set Tags | STHREAD
-| | | Set Tags | ${thr_count_int}T${cpu_count_int}C \ No newline at end of file
+| | | Set Tags | ${thr_count_int}T${cpu_count_int}C