CSIT-412 replace latency (N/A) string by number -1
[csit.git] / resources / libraries / python / TrafficGenerator.py
index 33ff597..c28e8ec 100644 (file)
@@ -47,9 +47,6 @@ class TGDropRateSearchImpl(DropRateSearch):
             tg_instance.trex_stl_start_remote_exec(self.get_duration(),
                                                    unit_rate, frame_size,
                                                    traffic_type)
-            # Get latency stats from stream
-            self._latency_stats = tg_instance.get_latency()
-
             loss = tg_instance.get_loss()
             sent = tg_instance.get_sent()
             if self.loss_acceptance_type_is_percentage():
@@ -66,6 +63,16 @@ class TGDropRateSearchImpl(DropRateSearch):
         else:
             raise NotImplementedError("TG subtype not supported")
 
+    def get_latency(self):
+        """Return min/avg/max latency.
+
+        :return: Latency stats.
+        :rtype: list
+        """
+
+        tg_instance = BuiltIn().get_library_instance(
+            'resources.libraries.python.TrafficGenerator')
+        return tg_instance.get_latency_int()
 
 class TrafficGenerator(object):
     """Traffic Generator."""
@@ -107,8 +114,8 @@ class TrafficGenerator(object):
         """
         return self._received
 
-    def get_latency(self):
-        """Return min/avg/max latency.
+    def get_latency_int(self):
+        """Return rounded min/avg/max latency.
 
         :return: Latency stats.
         :rtype: list
@@ -148,7 +155,7 @@ class TrafficGenerator(object):
         self._node = tg_node
 
         if tg_node['subtype'] == NodeSubTypeTG.TREX:
-            trex_path = "/opt/trex-core-2.03"
+            trex_path = "/opt/trex-core-2.07"
 
             ssh = SSH()
             ssh.connect(tg_node)
@@ -346,6 +353,51 @@ class TrafficGenerator(object):
                                                     _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 "
@@ -361,6 +413,51 @@ class TrafficGenerator(object):
                                                     _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)
         else:
             raise NotImplementedError('Unsupported traffic type')
 
@@ -386,6 +483,7 @@ class TrafficGenerator(object):
             self._received = self._result.split(', ')[1].split('=')[1]
             self._sent = self._result.split(', ')[2].split('=')[1]
             self._loss = self._result.split(', ')[3].split('=')[1]
+
             self._latency = []
             self._latency.append(self._result.split(', ')[4].split('=')[1])
             self._latency.append(self._result.split(', ')[5].split('=')[1])