Merge "docs: Enhancement of IxNetwork configuration guide"
[vswitchperf.git] / tools / pkt_gen / dummy / dummy.py
index dab59be..d3d7997 100755 (executable)
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2016 Intel Corporation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -133,7 +133,7 @@ class Dummy(trafficgen.ITrafficGenerator):
 
         return trafficgen.BurstResult(*results)
 
-    def send_cont_traffic(self, traffic=None, duration=30, multistream=False):
+    def send_cont_traffic(self, traffic=None, duration=30):
         """
         Send a continuous flow of traffic.
         """
@@ -145,31 +145,32 @@ class Dummy(trafficgen.ITrafficGenerator):
 
         results = get_user_traffic(
             'continuous',
-            '%dmpps, multistream %s duration %d' % (traffic['frame_rate'],
-                                                    multistream, duration), traffic_,
-            ('frames tx', 'frames rx', 'min latency', 'max latency',
-             'avg latency'))
+            '%dmpps, multistream %s, duration %d' % (traffic['frame_rate'],
+                                                    traffic['multistream'],
+                                                    duration), traffic_,
+            ('frames tx', 'frames rx', 'tx rate %', 'rx rate %', 'min latency',
+             'max latency', 'avg latency', 'frameloss %'))
 
         framesize = traffic_['l2']['framesize']
 
-        # builds results by using user-supplied values where possible
+        # builds results by using user-supplied values
         # and guessing remainder using available info
         result[ResultsConstants.TX_RATE_FPS] = float(results[0]) / duration
         result[ResultsConstants.THROUGHPUT_RX_FPS] = float(results[1]) / duration
-        result[ResultsConstants.TX_RATE_MBPS] = (float(results[0]) \
-                                                      * framesize) / duration
-        result[ResultsConstants.THROUGHPUT_RX_MBPS] = (float(results[1]) \
-                                                      * framesize) / duration
-        result[ResultsConstants.TX_RATE_PERCENT] = 0.0
-        result[ResultsConstants.THROUGHPUT_RX_PERCENT] = 0.0
-        result[ResultsConstants.MIN_LATENCY_NS] = float(results[2])
-        result[ResultsConstants.MAX_LATENCY_NS] = float(results[3])
-        result[ResultsConstants.AVG_LATENCY_NS] = float(results[4])
-
+        result[ResultsConstants.TX_RATE_MBPS] = (float(results[0]) / duration) \
+                                                 * (framesize * 8 / 1000000)
+        result[ResultsConstants.THROUGHPUT_RX_MBPS] = (float(results[1]) / duration) \
+                                                 * (framesize * 8 / 1000000)
+        result[ResultsConstants.TX_RATE_PERCENT] = float(results[2])
+        result[ResultsConstants.THROUGHPUT_RX_PERCENT] = float(results[3])
+        result[ResultsConstants.MIN_LATENCY_NS] = float(results[4])
+        result[ResultsConstants.MAX_LATENCY_NS] = float(results[5])
+        result[ResultsConstants.AVG_LATENCY_NS] = float(results[6])
+        result[ResultsConstants.FRAME_LOSS_PERCENT] = float(results[7])
         return result
 
     def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
-                                lossrate=0.0, multistream=False):
+                                lossrate=0.0):
         """
         Send traffic per RFC2544 throughput test specifications.
         """
@@ -182,32 +183,30 @@ class Dummy(trafficgen.ITrafficGenerator):
         results = get_user_traffic(
             'throughput',
             '%d trials, %d seconds iterations, %f packet loss, multistream '
-            '%s' % (trials, duration, lossrate,
-                    'enabled' if multistream else 'disabled'),
+            '%s' % (trials, duration, lossrate, traffic['multistream']),
             traffic_,
-            ('frames tx', 'frames rx', 'min latency', 'max latency',
-             'avg latency'))
+            ('frames tx', 'frames rx', 'tx rate %', 'rx rate %', 'min latency',
+             'max latency', 'avg latency', 'frameloss %'))
 
         framesize = traffic_['l2']['framesize']
 
-        # builds results by using user-supplied values where possible
+        # builds results by using user-supplied values
         # and guessing remainder using available info
-        result[ResultsConstants.TX_RATE_FPS] = float(results[0]) \
-                                                     / duration
-        result[ResultsConstants.THROUGHPUT_RX_FPS] = float(results[1]) \
-                                                     / duration
-        result[ResultsConstants.TX_RATE_MBPS] = (float(results[0]) \
-                                                      * framesize) / duration
-        result[ResultsConstants.THROUGHPUT_RX_MBPS] = (float(results[1]) \
-                                                      * framesize) / duration
-        result[ResultsConstants.TX_RATE_PERCENT] = 0.0
-        result[ResultsConstants.THROUGHPUT_RX_PERCENT] = 0.0
-        result[ResultsConstants.MIN_LATENCY_NS] = float(results[2])
-        result[ResultsConstants.MAX_LATENCY_NS] = float(results[3])
-        result[ResultsConstants.AVG_LATENCY_NS] = float(results[4])
-
+        result[ResultsConstants.TX_RATE_FPS] = float(results[0]) / duration
+        result[ResultsConstants.THROUGHPUT_RX_FPS] = float(results[1]) / duration
+        result[ResultsConstants.TX_RATE_MBPS] = (float(results[0]) / duration) \
+                                                 * (framesize * 8 / 1000000)
+        result[ResultsConstants.THROUGHPUT_RX_MBPS] = (float(results[1]) / duration) \
+                                                 * (framesize * 8 / 1000000)
+        result[ResultsConstants.TX_RATE_PERCENT] = float(results[2])
+        result[ResultsConstants.THROUGHPUT_RX_PERCENT] = float(results[3])
+        result[ResultsConstants.MIN_LATENCY_NS] = float(results[4])
+        result[ResultsConstants.MAX_LATENCY_NS] = float(results[5])
+        result[ResultsConstants.AVG_LATENCY_NS] = float(results[6])
+        result[ResultsConstants.FRAME_LOSS_PERCENT] = float(results[7])
         return result
 
+
 if __name__ == '__main__':
     TRAFFIC = {
         'l3': {