aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/DPDK
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2019-11-12 05:27:43 +0100
committerJan Gelety <jgelety@cisco.com>2019-11-28 18:26:21 +0100
commitd68951ac245150eeefa6e0f4156e4c1b5c9e9325 (patch)
tree487554a7547218d27f0a61ec02b70502c32cdcb4 /resources/libraries/python/DPDK
parented0258a440cfad7023d643f717ab78ac568dc59b (diff)
Python3: resources and libraries
Change-Id: I1392c06b1d64f62b141d24c0d42a8e36913b15e2 Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'resources/libraries/python/DPDK')
-rw-r--r--resources/libraries/python/DPDK/DPDKTools.py53
-rw-r--r--resources/libraries/python/DPDK/L2fwdTest.py27
-rw-r--r--resources/libraries/python/DPDK/L3fwdTest.py58
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.")