aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/TrafficGenerator.py
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python/TrafficGenerator.py')
-rw-r--r--resources/libraries/python/TrafficGenerator.py408
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: