def get_adj_mac(nodes_info, dut_node, dut_if1, dut_if2): """ Get adjacency MAC addresses of the DUT node. :param nodes_info: All the nodes info in the topology file. :param dut_node: Will execute the l3fwd on this node :param dut_if1: The test link interface 1. :param dut_if2: The test link interface 2. :type nodes_info: dict :type dut_node: dict :type dut_if1: str :type dut_if2: str :returns: Returns MAC addresses of adjacency DUT nodes. :rtype: str """ if_key0 = dut_if1 if_key1 = dut_if2 if_pci0 = Topology.get_interface_pci_addr(dut_node, if_key0) if_pci1 = Topology.get_interface_pci_addr(dut_node, if_key1) # detect which is the port 0 if min(if_pci0, if_pci1) != if_pci0: if_key0, if_key1 = if_key1, if_key0 adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface( \ nodes_info, dut_node, if_key0) adj_node1, adj_if_key1 = Topology.get_adjacent_node_and_interface( \ nodes_info, dut_node, if_key1) adj_mac0 = Topology.get_interface_mac(adj_node0, adj_if_key0) adj_mac1 = Topology.get_interface_mac(adj_node1, adj_if_key1) return adj_mac0, adj_mac1
def get_adj_mac(nodes, node, if1, if2): """ Get adjacency MAC addresses of the DUT node. :param nodes: All the nodes info in the topology file. :param node: DUT node. :param if1: The test link interface 1. :param if2: The test link interface 2. :type nodes: dict :type node: dict :type if1: str :type if2: str :returns: Returns MAC addresses of adjacency DUT nodes and PCI addresses. :rtype: str """ if_key0 = if1 if_key1 = if2 if_pci0 = Topology.get_interface_pci_addr(node, if_key0) if_pci1 = Topology.get_interface_pci_addr(node, if_key1) # 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(node, u"patch_l3fwd_flip_routes") adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface( nodes, node, if_key0 ) adj_node1, adj_if_key1 = Topology.get_adjacent_node_and_interface( nodes, node, if_key1 ) if_pci0 = Topology.get_interface_pci_addr(node, if_key0) if_pci1 = Topology.get_interface_pci_addr(node, if_key1) adj_mac0 = Topology.get_interface_mac(adj_node0, adj_if_key0) adj_mac1 = Topology.get_interface_mac(adj_node1, adj_if_key1) return adj_mac0, adj_mac1, if_pci0, if_pci1
def start_the_l3fwd_test(nodes_info, dut_node, dut_if1, dut_if2, nb_cores, lcores_list, queue_nums, jumbo_frames): """ Execute the l3fwd on the dut_node. :param nodes_info: All the nodes info in the topology file. :param dut_node: Will execute the l3fwd on this node :param dut_if1: The test link interface 1. :param dut_if2: The test link interface 2. :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 :type nodes_info: dict :type dut_node: dict :type dut_if1: str :type dut_if2: str :type nb_cores: str :type lcores_list: str :type queue_nums: str :type jumbo_frames: str :return: none """ if_key0 = dut_if1 if_key1 = dut_if2 if_pci0 = Topology.get_interface_pci_addr(dut_node, if_key0) if_pci1 = Topology.get_interface_pci_addr(dut_node, if_key1) # detect which is the port 0 if min(if_pci0, if_pci1) != if_pci0: if_key0, if_key1 = if_key1, if_key0 if_pci0, if_pci1 = if_pci1, if_pci0 adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface( \ nodes_info, dut_node, if_key0) adj_node1, adj_if_key1 = Topology.get_adjacent_node_and_interface( \ nodes_info, dut_node, if_key1) adj_mac0 = Topology.get_interface_mac(adj_node0, adj_if_key0) adj_mac1 = Topology.get_interface_mac(adj_node1, adj_if_key1) list_cores = lcores_list.split(',') # prepare the port config param index = 0 port_config = '' for port in range(0, 2): for queue in range(0, int(queue_nums)): if int(nb_cores) == 1: index = 0 temp_str = '({0}, {1}, {2}),'.format(port, queue, \ int(list_cores[index])) else: temp_str = '({0}, {1}, {2}),'.format(port, queue, \ int(list_cores[index])) port_config += temp_str index = index + 1 port_config_param = port_config.rstrip(',') ssh = SSH() ssh.connect(dut_node) cmd = 'cd {0}/tests/dpdk/dpdk_scripts/ && ./run_l3fwd.sh ' \ '"{1}" "{2}" {3} {4} {5}'.format(con.REMOTE_FW_DIR, lcores_list, \ port_config_param, adj_mac0, adj_mac1, jumbo_frames) (ret_code, _, stderr) = ssh.exec_command(cmd, timeout=600) if ret_code != 0: logger.error('Execute the l3fwd error: {0}'.format(stderr)) raise Exception('Failed to execute l3fwd test at node {0}'.format( dut_node['host']))