+ if int(ret) != 0:
+ logger.error('pkill t-rex failed: {0}'.format(stdout + stderr))
+ raise RuntimeError('pkill t-rex failed')
+
+ def trex_stateless_remote_exec(self, duration, rate, framesize,
+ traffic_type):
+ """Execute stateless script on remote node over ssh
+
+ :param node: remote node
+ :param traffic_type: Traffic profile
+ :type node: dict
+ :type traffic_type: str
+ """
+ ssh = SSH()
+ ssh.connect(self._node)
+
+ _p0 = 1
+ _p1 = 2
+
+ if self._ifaces_reordered != 0:
+ _p0, _p1 = _p1, _p0
+
+ if traffic_type in ["3-node-xconnect", "3-node-bridge"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '/tmp/openvpp-testing/resources/tools/t-rex/"
+ "t-rex-stateless.py "
+ "-d {0} -r {1} -s {2} "
+ "--p{3}_src_start_ip 10.10.10.1 "
+ "--p{3}_src_end_ip 10.10.10.254 "
+ "--p{3}_dst_start_ip 20.20.20.1 "
+ "--p{4}_src_start_ip 20.20.20.1 "
+ "--p{4}_src_end_ip 20.20.20.254 "
+ "--p{4}_dst_start_ip 10.10.10.1'".\
+ format(duration, rate, framesize, _p0, _p1),\
+ timeout=int(duration)+60)
+ elif traffic_type in ["3-node-IPv4"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '/tmp/openvpp-testing/resources/tools/t-rex/"
+ "t-rex-stateless.py "
+ "-d {0} -r {1} -s {2} "
+ "--p{3}_src_start_ip 10.10.10.2 "
+ "--p{3}_src_end_ip 10.10.10.254 "
+ "--p{3}_dst_start_ip 20.20.20.2 "
+ "--p{4}_src_start_ip 20.20.20.2 "
+ "--p{4}_src_end_ip 20.20.20.254 "
+ "--p{4}_dst_start_ip 10.10.10.2'".\
+ format(duration, rate, framesize, _p0, _p1),\
+ timeout=int(duration)+60)
+ else:
+ raise NotImplementedError('Unsupported traffic type')
+
+ logger.trace(ret)
+ logger.trace(stdout)
+ logger.trace(stderr)
+
+ #last line from console output
+ line = stdout.splitlines()[-1]