-# Copyright (c) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2021 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:
from resources.libraries.python.Constants import Constants
from resources.libraries.python.DpdkUtil import DpdkUtil
-from resources.libraries.python.ssh import exec_cmd_no_error
+from resources.libraries.python.ssh import exec_cmd_no_error, exec_cmd
from resources.libraries.python.topology import NodeType, Topology
+NB_PORTS = 2
+
class L3fwdTest:
"""Test the DPDK l3fwd performance."""
nodes, node, if1, if2
)
- list_cores = [int(item) for item in lcores_list.split(u",")]
+ lcores = [int(item) for item in lcores_list.split(u",")]
# prepare the port config param
nb_cores = int(nb_cores)
index = 0
port_config = ''
- for port in range(0, 2):
+ for port in range(0, NB_PORTS):
for queue in range(0, int(queue_nums)):
index = 0 if nb_cores == 1 else index
- port_config += f"({port}, {queue}, {list_cores[index]}),"
+ port_config += \
+ f"({port}, {queue}, {lcores[index % NB_PORTS]}),"
index += 1
if jumbo_frames:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"0,{lcores_list}",
+ eal_corelist=f"1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
)
else:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"0,{lcores_list}",
+ eal_corelist=f"1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
"""
command = f"{Constants.REMOTE_FW_DIR}/{Constants.RESOURCES_LIB_SH}"\
f"/entry/patch_l3fwd.sh " \
- f"{Constants.REMOTE_FW_DIR}/{Constants.RESOURCES_LIB_SH}/{patch}"
+ f"{Constants.REMOTE_FW_DIR}/{Constants.RESOURCES_LIB_SH}"\
+ f"/entry/{patch}"
message = f"Failed to patch l3fwd at node {node['host']}"
- exec_cmd_no_error(node, command, timeout=1800, message=message)
+ ret_code, stdout, _ = exec_cmd(node, command, timeout=1800)
+ if ret_code != 0 and u"Skipping patch." not in stdout:
+ raise RuntimeError(message)