diff options
author | Tibor Frank <tifrank@cisco.com> | 2017-04-04 10:06:00 +0200 |
---|---|---|
committer | Tibor Frank <tifrank@cisco.com> | 2017-06-05 07:40:28 +0200 |
commit | b92b5be7d4bbbf523812f774bb2e539ab2081cf6 (patch) | |
tree | 61d967364e6eb9952616434b913648742e70fbc9 /resources/libraries/python/TrafficGenerator.py | |
parent | 78e999f1203dc8b7c29c24b0178bb8c23edf4c52 (diff) |
CSIT-524: Traffic generator using python profiles
Profile name structure:
[trex|ixia]-[sl|sf]-[topo]-[packet structure]-[scale]
- Traffic generator - T-rex (trex) or Ixia (ixia)
- Stateless (sl) or statefull (sf)
- Topology - 2-node topology (2n) or 3-node topology (3n)
- Packet structure - eth | ip4/6 | udp
- Scale - e.g. ip4dst1, ip6dst10000, 4000u15p
Traffic types changed to stream profiles:
- From: 2-node-bridge
To: trex-sl-2n-ethip4-ip4src253
- From: 3-node-bridge
To: trex-sl-3n-ethip4-ip4src254
- From: 3-node-IPv4-dst-1000000
To: trex-sl-3n-ethip4-ip4dst1000000
- From: 3-node-IPv4-dst-100000
To: trex-sl-3n-ethip4-ip4dst100000
- From: 3-node-IPv4-dst-10000
To: trex-sl-3n-ethip4-ip4dst10000
- From: 3-node-IPv4-dst-1000
To: trex-sl-3n-ethip4-ip4dst1000
- From: 3-node-IPv4-dst-100
To: trex-sl-3n-ethip4-ip4dst100
- From: 3-node-IPv4-dst-1
To: trex-sl-3n-ethip4-ip4dst1
- From: 3-node-IPv4
To: trex-sl-3n-ethip4-ip4src253
- From: 3-node-IPv6-dst-1000000
To: trex-sl-3n-ethip6-ip6dst1000000
- From: 3-node-IPv6-dst-100000
To: trex-sl-3n-ethip6-ip6dst100000
- From: 3-node-IPv6-dst-10000
To: trex-sl-3n-ethip6-ip6dst10000
- From: 3-node-IPv6
To: trex-sl-3n-ethip6-ip6src253
- From: 3-node-xconnect
To: trex-sl-3n-ethip4-ip4src254
- From: 3-node-IPv4-SNAT-1000u-15p
To: trex-sl-3n-ethip4udp-1000u15p
- From: 3-node-IPv4-SNAT-100u-15p
To: trex-sl-3n-ethip4udp-100u15p
- From: 3-node-IPv4-SNAT-10u-15p
To: trex-sl-3n-ethip4udp-10u15p
- From: 3-node-IPv4-SNAT-1u-15p
To: trex-sl-3n-ethip4udp-1u15p
- From: 3-node-IPv4-SNAT-1u-1p
To: trex-sl-3n-ethip4udp-1u1p
- From: 3-node-IPv4-SNAT-2000u-15p
To: trex-sl-3n-ethip4udp-2000u15p
- From: 3-node-IPv4-SNAT-4000u-15p
To: trex-sl-3n-ethip4udp-4000u15p
Change-Id: If6a3cf204c93ff9f2cdccc5fd395e26b05483b58
Signed-off-by: Tibor Frank <tifrank@cisco.com>
Diffstat (limited to 'resources/libraries/python/TrafficGenerator.py')
-rw-r--r-- | resources/libraries/python/TrafficGenerator.py | 408 |
1 files changed, 26 insertions, 382 deletions
diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 8fb9191063..0f25ebe42e 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -103,7 +103,7 @@ class TrafficGenerator(object): self._received = None self._node = None # T-REX interface order mapping - self._ifaces_reordered = 0 + self._ifaces_reordered = False @property def node(self): @@ -222,7 +222,7 @@ class TrafficGenerator(object): if1_mac, if2_mac = if2_mac, if1_mac if1_pci, if2_pci = if2_pci, if1_pci if1_adj_mac, if2_adj_mac = if2_adj_mac, if1_adj_mac - self._ifaces_reordered = 1 + self._ifaces_reordered = True if1_mac_hex = "0x"+if1_mac.replace(":", ",0x") if2_mac_hex = "0x"+if2_mac.replace(":", ",0x") @@ -283,7 +283,7 @@ class TrafficGenerator(object): # try again max_startup_retries -= 1 # after max retries T-rex is still not responding to API - # critical error occured + # critical error occurred raise RuntimeError('t-rex-64 startup failed') @staticmethod @@ -319,7 +319,7 @@ class TrafficGenerator(object): ssh = SSH() ssh.connect(node) - (ret, stdout, stderr) = ssh.exec_command( + (ret, _, _) = ssh.exec_command( "sh -c '{}/resources/tools/t-rex/" "t-rex-stateless-stop.py'".format(Constants.REMOTE_FW_DIR)) @@ -340,395 +340,39 @@ class TrafficGenerator(object): :param warmup_time: Warmup time period. :type duration: int :type rate: str - :type framesize: int + :type framesize: str :type traffic_type: str :type async_call: bool :type latency: bool :type warmup_time: int :returns: Nothing - :raises: NotImplementedError if traffic type is not supported. :raises: RuntimeError in case of TG driver issue. """ ssh = SSH() ssh.connect(self._node) - _p0 = 1 - _p1 = 2 _async = "--async" if async_call else "" _latency = "--latency" if latency else "" - - 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 '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.10.10.1 " - "--p{4}_src_end_ip 10.10.10.254 " - "--p{4}_dst_start_ip 20.20.20.1 " - "--p{5}_src_start_ip 20.20.20.1 " - "--p{5}_src_end_ip 20.20.20.254 " - "--p{5}_dst_start_ip 10.10.10.1 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.10.10.2 " - "--p{4}_src_end_ip 10.10.10.254 " - "--p{4}_dst_start_ip 20.20.20.2 " - "--p{5}_src_start_ip 20.20.20.2 " - "--p{5}_src_end_ip 20.20.20.254 " - "--p{5}_dst_start_ip 10.10.10.2 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4-dst-1"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.0.0.0 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.0.0.0 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4-dst-100"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.0.0.99 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.0.0.99 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4-dst-1000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.0.3.231 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.0.3.231 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-1u-1p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.0.0 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1024 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1028 " - "--p{5}_dst_end_udp_port 1028 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-1u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.0.0 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 1038 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-10u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.0.9 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 1173 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-100u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.0.99 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 2523 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration) + 60) - - elif traffic_type in ["3-node-IPv4-SNAT-1000u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.3.231 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 16023 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-2000u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.7.207 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 31022 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-SNAT-4000u-15p"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 20.0.0.0 " - "--p{4}_src_end_ip 20.0.15.159 " - "--p{4}_dst_start_ip 12.0.0.2 " - "--p{5}_src_start_ip 12.0.0.2 " - "--p{5}_src_end_ip 12.0.0.2 " - "--p{5}_dst_start_ip 200.0.0.0 " - "--p{4}_src_start_udp_port 1024 " - "--p{4}_src_end_udp_port 1038 " - "--p{4}_dst_start_udp_port 1024 " - "--p{5}_src_start_udp_port 1024 " - "--p{5}_dst_start_udp_port 1024 " - "--p{5}_dst_end_udp_port 61022 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - - elif traffic_type in ["3-node-IPv4-dst-10000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.0.39.15 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.0.39.15 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4-dst-100000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.1.134.159 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.1.134.159 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv4-dst-1000000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.0.0.1 " - "--p{4}_dst_start_ip 20.0.0.0 " - "--p{4}_dst_end_ip 20.15.66.63 " - "--p{5}_src_start_ip 20.0.0.1 " - "--p{5}_dst_start_ip 10.0.0.0 " - "--p{5}_dst_end_ip 10.15.66.63 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv6"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} -6 " - "--p{4}_src_start_ip 2001:1::2 " - "--p{4}_src_end_ip 2001:1::FE " - "--p{4}_dst_start_ip 2001:2::2 " - "--p{5}_src_start_ip 2001:2::2 " - "--p{5}_src_end_ip 2001:2::FE " - "--p{5}_dst_start_ip 2001:1::2 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv6-dst-10000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} -6 " - "--p{4}_src_start_ip 2001:1::1 " - "--p{4}_dst_start_ip 2001:2::0 " - "--p{4}_dst_end_ip 2001:2::270F " - "--p{5}_src_start_ip 2001:2::1 " - "--p{5}_dst_start_ip 2001:1::0 " - "--p{5}_dst_end_ip 2001:1::270F " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv6-dst-100000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} -6 " - "--p{4}_src_start_ip 2001:1::1 " - "--p{4}_dst_start_ip 2001:2::0 " - "--p{4}_dst_end_ip 2001:2::1:869F " - "--p{5}_src_start_ip 2001:2::1 " - "--p{5}_dst_start_ip 2001:1::0 " - "--p{5}_dst_end_ip 2001:1::1:869F " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["3-node-IPv6-dst-1000000"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} -6 " - "--p{4}_src_start_ip 2001:1::1 " - "--p{4}_dst_start_ip 2001:2::0 " - "--p{4}_dst_end_ip 2001:2::F:423F " - "--p{5}_src_start_ip 2001:2::1 " - "--p{5}_dst_start_ip 2001:1::0 " - "--p{5}_dst_end_ip 2001:1::F:423F " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - elif traffic_type in ["2-node-bridge"]: - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_src_start_ip 10.10.10.2 " - "--p{4}_src_end_ip 10.10.10.254 " - "--p{4}_dst_start_ip 20.20.20.2 " - "--p{5}_src_start_ip 20.20.20.2 " - "--p{5}_src_end_ip 20.20.20.254 " - "--p{5}_dst_start_ip 10.10.10.2 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout = int(duration) + 60) - elif traffic_type in ["3-node-IPv4-l3fwd"]: - # add for the DPDK l3fwd routing test - # please make sure the TG port 0 connect to the DUT port 0 - (ret, stdout, stderr) = ssh.exec_command( - "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py " - "--duration={1} -r {2} -s {3} " - "--p{4}_dst_start_ip 2.1.1.2 " - "--p{4}_dst_end_ip 2.1.1.254 " - "--p{4}_src_start_ip 20.20.20.2 " - "--p{5}_dst_start_ip 1.1.1.2 " - "--p{5}_dst_end_ip 1.1.1.254 " - "--p{5}_src_start_ip 10.10.10.2 " - "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR, - duration, rate, framesize, - _p0, _p1, _async, _latency, - warmup_time), - timeout=int(duration)+60) - else: - raise NotImplementedError('Unsupported traffic type') + _p0, _p1 = (2, 1) if self._ifaces_reordered else (1, 2) + + profile_path = ("{0}/resources/tools/t-rex/stream_profiles/" + "{1}.py".format(Constants.REMOTE_FW_DIR, + traffic_type)) + (ret, stdout, _) = ssh.exec_command( + "sh -c " + "'{0}/resources/tools/t-rex/t-rex-stateless-profile.py " + "--profile {1} " + "--duration {2} " + "--frame_size {3} " + "--rate {4} " + "--warmup_time {5} " + "--port_0 {6} " + "--port_1 {7} " + "{8} " # --async + "{9}'". # --latency + format(Constants.REMOTE_FW_DIR, profile_path, duration, framesize, + rate, warmup_time, _p0 - 1, _p1 - 1, _async, _latency), + timeout=int(duration) + 60) if int(ret) != 0: raise RuntimeError('T-rex stateless runtime error') @@ -800,7 +444,7 @@ class TrafficGenerator(object): if node['subtype'] is None: raise RuntimeError('TG subtype not defined') elif node['subtype'] == NodeSubTypeTG.TREX: - self.trex_stl_start_remote_exec(duration, rate, framesize, + self.trex_stl_start_remote_exec(int(duration), rate, framesize, traffic_type, async_call, latency, warmup_time=warmup_time) else: |