X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FDPDK%2FL3fwdTest.py;h=8c2596408d0d7d1f3c9ccc16abcafae26e250171;hp=15e656af0744b24ae49d6996790814bd25222af8;hb=24f7c6a4d22b8d26f0aa86669fc7aadad2108f2f;hpb=cb66ecc82b7491823c837e2cefbf50984fcae594 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