diff options
Diffstat (limited to 'resources/libraries')
-rw-r--r-- | resources/libraries/python/DPDK/L2fwdTest.py | 8 | ||||
-rw-r--r-- | resources/libraries/python/DPDK/L3fwdTest.py | 34 | ||||
-rw-r--r-- | resources/libraries/robot/dpdk/default.robot | 58 |
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 |