#pylint: disable=too-many-arguments, too-many-locals
def initialize_traffic_generator(self, tg_node, tg_if1, tg_if2,
- dut1_node, dut1_if1, dut1_if2,
- dut2_node, dut2_if1, dut2_if2,
+ tg_if1_adj_node, tg_if1_adj_if,
+ tg_if2_adj_node, tg_if2_adj_if,
test_type):
"""TG initialization.
:param tg_node: Traffic generator node.
:param tg_if1: TG - name of first interface.
:param tg_if2: TG - name of second interface.
- :param dut1_node: DUT1 node.
- :param dut1_if1: DUT1 - name of first interface.
- :param dut1_if2: DUT1 - name of second interface.
- :param dut2_node: DUT2 node.
- :param dut2_if1: DUT2 - name of first interface.
- :param dut2_if2: DUT2 - name of second interface.
+ :param tg_if1_adj_node: TG if1 adjecent node.
+ :param tg_if1_adj_if: TG if1 adjecent interface.
+ :param tg_if2_adj_node: TG if2 adjecent node.
+ :param tg_if2_adj_if: TG if2 adjecent interface.
:test_type: 'L2' or 'L3' - src/dst MAC address.
:type tg_node: dict
:type tg_if1: str
:type tg_if2: str
- :type dut1_node: dict
- :type dut1_if1: str
- :type dut1_if2: str
- :type dut2_node: dict
- :type dut2_if1: str
- :type dut2_if2: str
+ :type tg_if1_adj_node: dict
+ :type tg_if1_adj_if: str
+ :type tg_if2_adj_node: dict
+ :type tg_if2_adj_if: str
:type test_type: str
:return: nothing
"""
if1_adj_mac = if2_mac
if2_adj_mac = if1_mac
elif test_type == 'L3':
- if1_adj_mac = topo.get_interface_mac(dut1_node, dut1_if1)
- if2_adj_mac = topo.get_interface_mac(dut2_node, dut2_if2)
+ if1_adj_mac = topo.get_interface_mac(tg_if1_adj_node,
+ tg_if1_adj_if)
+ if2_adj_mac = topo.get_interface_mac(tg_if2_adj_node,
+ tg_if2_adj_if)
else:
raise Exception("test_type unknown")
logger.error('trex-cfg failed: {0}'.format(stdout + stderr))
raise RuntimeError('trex-cfg failed')
- (ret, _, _) = ssh.exec_command(
- "sh -c 'pgrep t-rex && sudo pkill t-rex'")
+ max_startup_retries = 3
+ while max_startup_retries > 0:
+ # kill T-rex only if it is already running
+ (ret, _, _) = ssh.exec_command(
+ "sh -c 'pgrep t-rex && sudo pkill t-rex'")
+
+ # start T-rex
+ (ret, _, _) = ssh.exec_command(
+ "sh -c 'cd {0}/scripts/ && "
+ "sudo nohup ./t-rex-64 -i -c 7 --iom 0 > /dev/null 2>&1 &'"
+ "> /dev/null"\
+ .format(trex_path))
+ if int(ret) != 0:
+ raise RuntimeError('t-rex-64 startup failed')
+
+ # get T-rex server info
+ (ret, _, _) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-server-info.py'"\
+ .format(Constants.REMOTE_FW_DIR),
+ timeout=120)
+ if int(ret) == 0:
+ # If we get info T-rex is running
+ return
+ # try again
+ max_startup_retries -= 1
+ # after max retries T-rex is still not responding to API
+ # critical error occured
+ raise RuntimeError('t-rex-64 startup failed')
- (ret, _, _) = ssh.exec_command(
- "sh -c 'cd {0}/scripts/ && "
- "sudo nohup ./t-rex-64 -i -c 7 --iom 0 > /dev/null 2>&1 &'"
- "> /dev/null"\
- .format(trex_path))
- if int(ret) != 0:
- raise RuntimeError('t-rex-64 startup failed')
@staticmethod
def teardown_traffic_generator(node):