diff options
Diffstat (limited to 'resources/libraries/python/DPDK')
-rw-r--r-- | resources/libraries/python/DPDK/DPDKTools.py | 53 | ||||
-rw-r--r-- | resources/libraries/python/DPDK/L2fwdTest.py | 27 | ||||
-rw-r--r-- | resources/libraries/python/DPDK/L3fwdTest.py | 58 |
3 files changed, 68 insertions, 70 deletions
diff --git a/resources/libraries/python/DPDK/DPDKTools.py b/resources/libraries/python/DPDK/DPDKTools.py index d7a780b223..ecb23fb4c3 100644 --- a/resources/libraries/python/DPDK/DPDKTools.py +++ b/resources/libraries/python/DPDK/DPDKTools.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -16,12 +16,12 @@ from robot.api import logger -from resources.libraries.python.ssh import SSH, exec_cmd_no_error from resources.libraries.python.Constants import Constants +from resources.libraries.python.ssh import SSH, exec_cmd_no_error from resources.libraries.python.topology import NodeType, Topology -class DPDKTools(object): +class DPDKTools: """This class implements: - Initialization of DPDK environment, - Cleanup of DPDK environment. @@ -41,7 +41,7 @@ class DPDKTools(object): :type dut_if2: str :raises RuntimeError: If it fails to bind the interfaces to igb_uio. """ - if dut_node['type'] == NodeType.DUT: + if dut_node[u"type"] == NodeType.DUT: pci_address1 = Topology.get_interface_pci_addr(dut_node, dut_if1) pci_address2 = Topology.get_interface_pci_addr(dut_node, dut_if2) @@ -49,17 +49,15 @@ class DPDKTools(object): ssh.connect(dut_node) arch = Topology.get_node_arch(dut_node) - cmd = '{fwdir}/tests/dpdk/dpdk_scripts/init_dpdk.sh '\ - '{pci1} {pci2} {arch}'.format(fwdir=Constants.REMOTE_FW_DIR, - pci1=pci_address1, - pci2=pci_address2, - arch=arch) + cmd = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \ + f"/init_dpdk.sh {pci_address1} {pci_address2} {arch}" ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600) if ret_code != 0: - raise RuntimeError('Failed to bind the interfaces to igb_uio ' - 'at node {name}'.\ - format(name=dut_node['host'])) + raise RuntimeError( + f"Failed to bind the interfaces to igb_uio at node " + f"{dut_node['host']}" + ) @staticmethod def cleanup_dpdk_environment(dut_node, dut_if1, dut_if2): @@ -75,7 +73,7 @@ class DPDKTools(object): :type dut_if2: str :raises RuntimeError: If it fails to cleanup the dpdk. """ - if dut_node['type'] == NodeType.DUT: + if dut_node[u"type"] == NodeType.DUT: pci_address1 = Topology.get_interface_pci_addr(dut_node, dut_if1) if1_driver = Topology.get_interface_driver(dut_node, dut_if1) pci_address2 = Topology.get_interface_pci_addr(dut_node, dut_if2) @@ -84,15 +82,15 @@ class DPDKTools(object): ssh = SSH() ssh.connect(dut_node) - cmd = '{fwdir}/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh ' \ - '{drv1} {pci1} {drv2} {pci2}'.\ - format(fwdir=Constants.REMOTE_FW_DIR, drv1=if1_driver, - pci1=pci_address1, drv2=if2_driver, pci2=pci_address2) + cmd = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \ + f"/cleanup_dpdk.sh {if1_driver} {pci_address1} {if2_driver} " \ + f"{pci_address2}" ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600) if ret_code != 0: - raise RuntimeError('Failed to cleanup the dpdk at node {name}'. - format(name=dut_node['host'])) + raise RuntimeError( + f"Failed to cleanup the dpdk at node {dut_node[u'host']}" + ) @staticmethod def install_dpdk_test(node): @@ -106,17 +104,16 @@ class DPDKTools(object): """ arch = Topology.get_node_arch(node) - command = ('{fwdir}/tests/dpdk/dpdk_scripts/install_dpdk.sh {arch}'. - format(fwdir=Constants.REMOTE_FW_DIR, arch=arch)) - message = 'Install the DPDK failed!' + command = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \ + f"/install_dpdk.sh {arch}" + message = u"Install the DPDK failed!" exec_cmd_no_error(node, command, timeout=600, message=message) - command = ('cat {fwdir}/dpdk*/VERSION'. - format(fwdir=Constants.REMOTE_FW_DIR)) - message = 'Get DPDK version failed!' + command = f"cat {Constants.REMOTE_FW_DIR}/dpdk*/VERSION" + message = u"Get DPDK version failed!" stdout, _ = exec_cmd_no_error(node, command, message=message) - logger.info('DPDK Version: {version}'.format(version=stdout)) + logger.info(f"DPDK Version: {stdout}") @staticmethod def install_dpdk_test_on_all_duts(nodes): @@ -127,6 +124,6 @@ class DPDKTools(object): :type nodes: dict :returns: nothing """ - for node in nodes.values(): - if node['type'] == NodeType.DUT: + for node in list(nodes.values()): + if node[u"type"] == NodeType.DUT: DPDKTools.install_dpdk_test(node) diff --git a/resources/libraries/python/DPDK/L2fwdTest.py b/resources/libraries/python/DPDK/L2fwdTest.py index 70ca93c512..56a055cfc5 100644 --- a/resources/libraries/python/DPDK/L2fwdTest.py +++ b/resources/libraries/python/DPDK/L2fwdTest.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -15,17 +15,17 @@ DUT nodes. """ -from resources.libraries.python.ssh import SSH from resources.libraries.python.Constants import Constants +from resources.libraries.python.ssh import SSH from resources.libraries.python.topology import NodeType, Topology -class L2fwdTest(object): +class L2fwdTest: """Setup the DPDK for l2fwd performance test.""" @staticmethod - def start_the_l2fwd_test(dut_node, cpu_cores, nb_cores, queue_nums, - jumbo_frames): + def start_the_l2fwd_test( + dut_node, cpu_cores, nb_cores, queue_nums, jumbo_frames): """ Execute the l2fwd on the dut_node. @@ -42,19 +42,18 @@ class L2fwdTest(object): :type jumbo_frames: bool :raises RuntimeError: If the script "run_l2fwd.sh" fails. """ - if dut_node['type'] == NodeType.DUT: + if dut_node[u"type"] == NodeType.DUT: ssh = SSH() 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, arch=arch) + jumbo = u"yes" if jumbo_frames else u"no" + cmd = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \ + f"/run_l2fwd.sh {cpu_cores} {nb_cores} {queue_nums} {jumbo} " \ + f"{arch}" ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600) if ret_code != 0: - raise RuntimeError('Failed to execute l2fwd test at node ' - '{name}'.format(name=dut_node['host'])) + raise RuntimeError( + f"Failed to execute l2fwd test at node {dut_node['host']}" + ) diff --git a/resources/libraries/python/DPDK/L3fwdTest.py b/resources/libraries/python/DPDK/L3fwdTest.py index 623075297b..0a045c01bf 100644 --- a/resources/libraries/python/DPDK/L3fwdTest.py +++ b/resources/libraries/python/DPDK/L3fwdTest.py @@ -15,17 +15,18 @@ This module exists to provide the l3fwd test for DPDK on topology nodes. """ -from resources.libraries.python.ssh import SSH from resources.libraries.python.Constants import Constants +from resources.libraries.python.ssh import SSH from resources.libraries.python.topology import NodeType, Topology -class L3fwdTest(object): +class L3fwdTest: """Test the DPDK l3fwd performance.""" @staticmethod - def start_the_l3fwd_test(nodes_info, dut_node, dut_if1, dut_if2, - nb_cores, lcores_list, queue_nums, jumbo_frames): + 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. @@ -47,11 +48,12 @@ class L3fwdTest(object): :type queue_nums: str :type jumbo_frames: bool """ - if dut_node['type'] == NodeType.DUT: - adj_mac0, adj_mac1 = L3fwdTest.get_adj_mac(nodes_info, dut_node, - dut_if1, dut_if2) + if dut_node[u"type"] == NodeType.DUT: + adj_mac0, adj_mac1 = L3fwdTest.get_adj_mac( + nodes_info, dut_node, dut_if1, dut_if2 + ) - list_cores = [int(item) for item in lcores_list.split(',')] + list_cores = [int(item) for item in lcores_list.split(u",")] # prepare the port config param nb_cores = int(nb_cores) @@ -60,23 +62,22 @@ class L3fwdTest(object): for port in range(0, 2): for queue in range(0, int(queue_nums)): index = 0 if nb_cores == 1 else index - port_config += '({port}, {queue}, {core}),'.\ - format(port=port, queue=queue, core=list_cores[index]) + port_config += f"({port}, {queue}, {list_cores[index]})," index += 1 ssh = SSH() ssh.connect(dut_node) - 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='yes' if jumbo_frames else 'no') + cmd = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \ + f"/run_l3fwd.sh \"{lcores_list}\" " \ + f"\"{port_config.rstrip(u',')}\" " \ + f"{adj_mac0} {adj_mac1} {u'yes' if jumbo_frames else u'no'}" ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=600) if ret_code != 0: - raise Exception('Failed to execute l3fwd test at node {name}' - .format(name=dut_node['host'])) + raise Exception( + f"Failed to execute l3fwd test at node {dut_node[u'host']}" + ) @staticmethod def get_adj_mac(nodes_info, dut_node, dut_if1, dut_if2): @@ -102,12 +103,14 @@ 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') + L3fwdTest.patch_l3fwd(dut_node, u"patch_l3fwd_flip_routes") - 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_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) @@ -131,11 +134,10 @@ class L3fwdTest(object): 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) + f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts/patch_l3fwd.sh " + f"{arch} {Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts/{patch}", + timeout=600 + ) if ret_code != 0: - raise RuntimeError('Patch of l3fwd failed.') - + raise RuntimeError(u"Patch of l3fwd failed.") |