test suite reviews and discussions
 help / color / Atom feed
* [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values
@ 2019-08-06  6:58 yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 1/5] conf/pktgen: remove un-used optons yufengmx
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx

 These commits meet with demand came from dpdk STV new demand. 
 
 *. add __get_single_throughput_statistic/__get_multi_throughput_statistic methods to realize 
 measure_throughput support return several throughput statistic data in a duration. 
 *. add test method(latency/loss/throughput/rfc2544) options parameter usage 
 comment in pktgen_base module. 
 *. add test method(latency/loss/throughput) delay/duration options new usage 
 definition and relevant process source code in pktgen_base module. 
 *. set delay option to the warm up time before start main traffic. 
 *. set pktgen duration default value to 10 second. 
 *. remove duration option used in trex/ixia module, move duration option in 
 testing scenario methods(latency/loss/throughput) in pktgen_base module. 
 *. remove un-used optons in pktgen.cfg. 
 *. remove un-used parameter in trex/ixia _start_transmission. 

yufengmx (5):
  conf/pktgen: remove un-used optons
  doc/dts_gsg/pktgen_prog_guide: update description
  framework/pktgen_base: measure throughput supports multiple return
    values
  framework/pktgen_ixia: measure throughput supports multiple return
    values
  framework/pktgen_trex: measure throughput supports multiple return
    values

 conf/pktgen.cfg                   |   7 +-
 doc/dts_gsg/pktgen_prog_guide.rst |  45 ++++++++----
 framework/pktgen_base.py          | 143 ++++++++++++++++++++++++++++++++++----
 framework/pktgen_ixia.py          |  29 +-------
 framework/pktgen_trex.py          |  42 +----------
 5 files changed, 171 insertions(+), 95 deletions(-)

-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH V1 1/5] conf/pktgen: remove un-used optons
  2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
@ 2019-08-06  6:58 ` yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 2/5] doc/dts_gsg/pktgen_prog_guide: update description yufengmx
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx


*. remove core_num, it is not used by pktgen.
*. remove warmup key, set it in suite script.
*. remove duration key, set it in suite script.
*. remove ip_src key, set it in suite script.
*. remove ip_dst key, set it in suite script.

Signed-off-by: yufengmx <yufengx.mo@intel.com>
---
 conf/pktgen.cfg | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/conf/pktgen.cfg b/conf/pktgen.cfg
index 14a58f5..e111459 100644
--- a/conf/pktgen.cfg
+++ b/conf/pktgen.cfg
@@ -27,13 +27,8 @@ trex_lib_path=/opt/trex/vx.xxx/automation/trex_control_plane/interactive
 config_file=/etc/trex_cfg.yaml
 server=10.67.111.143
 pcap_file=/opt/trex-core-2.26/scripts/stl/sample.pcap
-core_num=4
 core_mask=0x3,0x5
-ip_src=16.0.0.1
-ip_dst=10.0.0.1
-warmup=15
-duration=-1
-#start_trex=yes
+start_trex=yes
 
 # IXIA port Configuration
 # IxiaGroup: Group name for IXIA ports
-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH V1 2/5] doc/dts_gsg/pktgen_prog_guide: update description
  2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 1/5] conf/pktgen: remove un-used optons yufengmx
@ 2019-08-06  6:58 ` yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 3/5] framework/pktgen_base: measure throughput supports multiple yufengmx
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx


update test methods(latency/loss/throughput/rfc2544) input parameters description.

Signed-off-by: yufengmx <yufengx.mo@intel.com>
---
 doc/dts_gsg/pktgen_prog_guide.rst | 45 ++++++++++++++++++++++++++++-----------
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/doc/dts_gsg/pktgen_prog_guide.rst b/doc/dts_gsg/pktgen_prog_guide.rst
index 32d2082..39c55ee 100644
--- a/doc/dts_gsg/pktgen_prog_guide.rst
+++ b/doc/dts_gsg/pktgen_prog_guide.rst
@@ -145,7 +145,7 @@ define a stream transmit behavior.
 
 basic content including::
 
-   'rate':  0 ~ 100 int type
+   'rate':  0 ~ 100 int type, port line rate should set it.
    'transmit_mode': TRANSMIT_CONT/TRANSMIT_S_BURST
        TRANSMIT_CONT define a continuous transmit.
        TRANSMIT_S_BURST define a burst transmit with custom number of packets.
@@ -332,9 +332,18 @@ option
    traffic_option = {
       # test method name, if use `measure_throughput`, ignore this key
       'method': 'throughput',
-      # port rate percent
+      # port rate percent, float(0--100), default value is 100.(reserved)
       'rate': 100,
-      # transmit lasting time second
+      # warm up time before start main transmission. If it is set, it will start
+      # a custom time transmission to make sure packet generator under good
+      # status. It is an optional key.
+      'delay': 5,
+      # the interval time of get throughput statistic (second).
+      # If set this key value, pktgen will return several throughput statistic
+      # data in a duration. If not set this key value, only return one statistic
+      # data. It is used coupled with `duration` option.
+      'interval': 1,
+      # transmission lasting time(second), default value is 10 second.
       'duration': 5}
 
 return value
@@ -358,9 +367,13 @@ option
    traffic_option = {
       # test method name, if use `measure_loss`, ignore this key
       'method': 'loss',
-      # port rate percent
+      # port rate percent, float(0--100), default value is 100.(reserved)
       'rate': 100,
-      # transmit lasting time second
+      # warm up time before start main transmission. If it is set, it will start
+      # a custom time transmission to make sure packet generator under good
+      # status. It is an optional key.
+      'delay': 5,
+      # transmission lasting time(second), default value is 10 second.
       'duration': 5}
 
 return value
@@ -382,9 +395,13 @@ option
    traffic_option = {
       # test method name, if use `measure_latency`, ignore this key
       'method': 'latency',
-      # port rate percent
+      # port rate percent, float(0--100), default value is 100.(reserved)
       'rate': 100,
-      # transmit lasting time second
+      # warm up time before start main transmission. If it is set, it will start
+      # a custom time transmission to make sure packet generator under ready
+      # status. It is an optional key.
+      'delay': 5,
+      # transmission lasting time(second), default value is 10 second.
       'duration': 5}
 
 return value
@@ -406,15 +423,19 @@ option
 .. code-block:: python
 
    traffic_option = {
-      # test method name, if use `measure_rfc2544`, ignore this key
+      # test method name, if use `measure_rfc2544`, ignore this key.
       'method': 'rfc2544',
-      # port rate percent at first round testing, 0 ~ 100, default is 100
+      # port rate percent at first round testing, 0 ~ 100, default is 100.
       'rate': 100,
-      # permit packet drop rate
+      # permit packet drop rate, default is 0.001.
       'pdr': 0.001,
-      # port rate percent drop step, 0 ~ 100 , default is 1
+      # port rate percent drop step, 0 ~ 100 , default is 1.
       'drop_step': 1,
-      # transmit lasting time second
+      # warm up time before start main transmission. If it is set, it will start
+      # a custom time transmission to make sure packet generator under ready
+      # status. It is an optional key.
+      'delay': 5,
+      # transmission lasting time(second), default value is 10 second.
       'duration': 5}
 
 return value
-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH V1 3/5] framework/pktgen_base: measure throughput supports multiple
  2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 1/5] conf/pktgen: remove un-used optons yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 2/5] doc/dts_gsg/pktgen_prog_guide: update description yufengmx
@ 2019-08-06  6:58 ` yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 4/5] framework/pktgen_ixia: " yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 5/5] framework/pktgen_trex: " yufengmx
  4 siblings, 0 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx

 return values

*. add test method(latency/loss/throughput) delay/duration options new usage
   definition and relevant process source code.
*. set delay option to be the warm up time after start transmission.
*. add __get_single_throughput_statistic/__get_multi_throughput_statistic methods to realize
   measure_throughput support return several throughput numbers in a duration.
*. set duration option default value to 10 second.
*. add test method(latency/loss/throughput/rfc2544) options parameter usage comment,
   which is the same as doc pktgen_prog_guide.rst.

Signed-off-by: yufengmx <yufengx.mo@intel.com>
---
 framework/pktgen_base.py | 143 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 131 insertions(+), 12 deletions(-)

diff --git a/framework/pktgen_base.py b/framework/pktgen_base.py
index e9d3fcb..6bfc49a 100644
--- a/framework/pktgen_base.py
+++ b/framework/pktgen_base.py
@@ -163,18 +163,23 @@ class PacketGenerator(object):
     def reset_streams(self):
         self.__streams = []
 
-    def measure_throughput(self, stream_ids=[], options={}):
-        """
-        Measure throughput on each tx ports
-        """
+    def __warm_up_pktgen(self, stream_ids, options, delay):
+        ''' run warm up traffic before start main traffic '''
+        if not delay:
+            return
+        msg = 'run traffic {0}s to warm up {1} packet generator '.format(
+            delay, self.pktgen_type)
+        self.logger.info(msg)
+        self._start_transmission(stream_ids, options)
+        time.sleep(delay)
+        self._stop_transmission(stream_ids)
+
+    def __get_single_throughput_statistic(self, stream_ids):
         bps_rx = []
         pps_rx = []
-        self._prepare_transmission(stream_ids=stream_ids)
-        self._start_transmission(stream_ids)
-
-        delay = options.get('delay') or 5
-        time.sleep(delay)
         used_rx_port = []
+        msg = 'begin get port statistic ...'
+        self.logger.info(msg)
         for stream_id in stream_ids:
             if self.__streams[stream_id]['rx_port'] not in used_rx_port:
                 rxbps_rates, rxpps_rates = self._retrieve_port_statistic(
@@ -182,20 +187,80 @@ class PacketGenerator(object):
                 used_rx_port.append(self.__streams[stream_id]['rx_port'])
                 bps_rx.append(rxbps_rates)
                 pps_rx.append(rxpps_rates)
-        self._stop_transmission(stream_id)
-
         bps_rx_total = self._summary_statistic(bps_rx)
         pps_rx_total = self._summary_statistic(pps_rx)
         self.logger.info("throughput: pps_rx %f, bps_rx %f" % (pps_rx_total, bps_rx_total))
 
         return bps_rx_total, pps_rx_total
 
+    def __get_multi_throughput_statistic(self, stream_ids, duration, interval):
+        """
+        duration: define the measure duration (second)
+        interval: define the interval of get throughput number (second)
+
+        Return: a list of throughput instead of a single tuple of pps/bps rate
+        """
+        time_elapsed = 0
+        stats = []
+        while time_elapsed < duration:
+            time.sleep(interval)
+            stats.append(self.__get_single_throughput_statistic(stream_ids))
+            time_elapsed += interval
+        return stats
+
+    def measure_throughput(self, stream_ids=[], options={}):
+        """
+        Measure throughput on each tx ports
+
+        options usage:
+            rate:
+                port rate percent, float(0--100). Default value is 100.
+
+            delay:
+                warm up time before start main traffic. If it is set, it will start
+                a delay time traffic to make sure packet generator under good status.
+                Warm up flow is ignored by default.
+
+            interval:
+                a interval time of get throughput statistic (second)
+                If set this key value, pktgen will return several throughput statistic
+                data within a duration traffic. If not set this key value, only return one statistic
+                data. It is ignored by default.
+
+            duration:
+                traffic lasting time(second). Default value is 10 second.
+        """
+        interval = options.get('interval')
+        duration = options.get('duration') or 10
+        delay = options.get('delay')
+        self._prepare_transmission(stream_ids=stream_ids)
+        # start warm up traffic
+        self.__warm_up_pktgen(stream_ids, options, delay)
+        # main traffic
+        self._start_transmission(stream_ids)
+        # keep traffic within a duration time and get throughput statistic
+        if interval and duration:
+            stats = self.__get_multi_throughput_statistic(
+                stream_ids, duration, interval)
+        else:
+            time.sleep(duration)
+            stats = self.__get_single_throughput_statistic(stream_ids)
+        self._stop_transmission(stream_ids)
+        return stats
+
     def _measure_loss(self, stream_ids=[], options={}):
         """
         Measure lost rate on each tx/rx ports
         """
+        delay = options.get('delay')
+        duration = options.get('duration') or 10
         self._prepare_transmission(stream_ids=stream_ids)
+        # start warm up traffic
+        self.__warm_up_pktgen(stream_ids, options, delay)
+        # main traffic
         self._start_transmission(stream_ids, options)
+        # keep traffic within a duration time
+        time.sleep(duration)
         self._stop_transmission(None)
         result = {}
         used_rx_port = []
@@ -216,6 +281,19 @@ class PacketGenerator(object):
         return result
 
     def measure_loss(self, stream_ids=[], options={}):
+        '''
+        options usage:
+            rate:
+                port rate percent, float(0--100). Default value is 100.
+
+            delay:
+                warm up time before start main traffic. If it is set, it will
+                start a delay time traffic to make sure packet generator
+                under good status. Warm up flow is ignored by default.
+
+            duration:
+                traffic lasting time(second). Default value is 10 second.
+        '''
         result = self._measure_loss(stream_ids, options)
         # here only to make sure that return value is the same as dts/etgen format
         # In real testing scenario, this method can offer more data than it
@@ -224,9 +302,28 @@ class PacketGenerator(object):
     def measure_latency(self, stream_ids=[], options={}):
         """
         Measure latency on each tx/rx ports
+
+        options usage:
+            rate:
+                port rate percent, float(0--100). Default value is 100.
+
+            delay:
+                warm up time before start main traffic. If it is set, it will
+                start a delay time transmission to make sure packet generator
+                under correct status. Warm up flow is ignored by default.
+
+            duration:
+                traffic lasting time(second). Default value is 10 second.
         """
+        delay = options.get('delay')
+        duration = options.get('duration') or 10
         self._prepare_transmission(stream_ids=stream_ids, latency=True)
+        # start warm up traffic
+        self.__warm_up_pktgen(stream_ids, options, delay)
+        # main traffic
         self._start_transmission(stream_ids, options)
+        # keep traffic within a duration time
+        time.sleep(duration)
         self._stop_transmission(None)
 
         result = {}
@@ -254,7 +351,26 @@ class PacketGenerator(object):
             return True
 
     def measure_rfc2544(self, stream_ids=[], options={}):
-        """ check loss rate with rate percent dropping """
+        """ check loss rate with rate percent dropping 
+
+        options usage:
+            rate:
+                port rate percent at first round testing(0 ~ 100), default is 100.
+
+            pdr:
+                permit packet drop rate, , default is 0.
+
+            drop_step:
+                port rate percent drop step(0 ~ 100), default is 1.
+
+            delay:
+                warm up time before start main traffic. If it is set, it will
+                start a delay time traffic to make sure packet generator
+                under good status. Warm up flow is ignored by default.
+
+            duration:
+                traffic lasting time(second). Default value is 10 second.
+        """
         loss_rate_table = []
         rate_percent = float(100)
         permit_loss_rate = options.get('pdr') or 0
@@ -271,6 +387,9 @@ class PacketGenerator(object):
             # here only pick one
             return result.values()[0]
         _options = deepcopy(options)
+        # if warm up option  'delay' is set, ignore it in next work flow
+        if 'delay' in _options:
+            _options.pop('delay')
         while not status and rate_percent > 0:
             rate_percent = rate_percent - rate_step
             if rate_percent <= 0:
-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH V1 4/5] framework/pktgen_ixia: measure throughput supports multiple
  2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
                   ` (2 preceding siblings ...)
  2019-08-06  6:58 ` [dts] [PATCH V1 3/5] framework/pktgen_base: measure throughput supports multiple yufengmx
@ 2019-08-06  6:58 ` " yufengmx
  2019-08-06  6:58 ` [dts] [PATCH V1 5/5] framework/pktgen_trex: " yufengmx
  4 siblings, 0 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx

 return values

*. remove duration option used in ixia module, move duration option in
   testing scenario methods(latency/loss/throughput) in pktgen_base module.
*. remove un-used parameters in _start_transmission method.

Signed-off-by: yufengmx <yufengx.mo@intel.com>
---
 framework/pktgen_ixia.py | 29 +++--------------------------
 1 file changed, 3 insertions(+), 26 deletions(-)

diff --git a/framework/pktgen_ixia.py b/framework/pktgen_ixia.py
index 80481fe..467188c 100644
--- a/framework/pktgen_ixia.py
+++ b/framework/pktgen_ixia.py
@@ -1244,7 +1244,6 @@ class Ixia(SSHConnection):
         ''' start ixia ports '''
         self.configure_transmission(run_opt)
         self.start_transmission()
-        time.sleep(run_opt.get('duration') or 5)
 
     def remove_all_streams(self):
         ''' delete all streams on all ixia ports '''
@@ -1649,39 +1648,17 @@ class IxiaPacketGenerator(PacketGenerator):
         self._preset_ixia_port()
 
     def _start_transmission(self, stream_ids, options={}):
-        '''
-        :param sample_delay:
-        After traffic start ``sample_delay`` seconds, start get runtime statistics
-        '''
         # get rate percentage
         rate_percent = options.get('rate') or '100'
-        # get duration
-        duration = options.get("duration") or 5
-        duration = int(duration) if isinstance(duration, (str, unicode)) \
-                                      else duration
-        # get sample interval
-        _sample_delay = options.get("sample_delay") or duration/2
-        sample_delay = int(_sample_delay) \
-                            if isinstance(_sample_delay, (str, unicode)) \
-                            else _sample_delay
-        # get configuration from pktgen config file
-        warmup = int(self.conf["warmup"]) if self.conf.has_key("warmup") \
-                                          else 25
-        wait_interval, core_mask = (warmup+30, self.conf["core_mask"]) \
-                            if self.conf.has_key("core_mask") \
-                            else (warmup+5, None)
-        #-------------------------------------------------------------------
         # run ixia server
         try:
             ###########################################
             # Start traffic on port(s)
             self.logger.info("begin traffic ......")
             run_opt = {
-                'ports':    self._traffic_ports,
-                'mult':     rate_percent,
-                'duration': duration,
-                'core_mask':core_mask,
-                'force':    True,}
+                'ports':     self._traffic_ports,
+                'mult':      rate_percent,
+                'force':     True, }
             self._conn.start(**run_opt)
         except Exception as e:
             self.logger.error(e)
-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH V1 5/5] framework/pktgen_trex: measure throughput supports multiple
  2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
                   ` (3 preceding siblings ...)
  2019-08-06  6:58 ` [dts] [PATCH V1 4/5] framework/pktgen_ixia: " yufengmx
@ 2019-08-06  6:58 ` " yufengmx
  4 siblings, 0 replies; 6+ messages in thread
From: yufengmx @ 2019-08-06  6:58 UTC (permalink / raw)
  To: dts; +Cc: yufengmx

 return values

*. remove duration option in trex module, move duration option in
   testing scenario methods(latency/loss/throughput) in pktgen_base module.
*. remove sample_delay option in trex module.
*. remove runtim_stat in trex module.

Signed-off-by: yufengmx <yufengx.mo@intel.com>
---
 framework/pktgen_trex.py | 42 +++---------------------------------------
 1 file changed, 3 insertions(+), 39 deletions(-)

diff --git a/framework/pktgen_trex.py b/framework/pktgen_trex.py
index c05741b..26a802c 100644
--- a/framework/pktgen_trex.py
+++ b/framework/pktgen_trex.py
@@ -412,7 +412,6 @@ class TrexPacketGenerator(PacketGenerator):
         self._ports = []
         self._traffic_ports = []
         self._rx_ports = []
-        self.runtime_stats = {}
 
         conf_inst = self._get_generator_conf_instance()
         self.conf = conf_inst.load_pktgen_config()
@@ -672,7 +671,7 @@ class TrexPacketGenerator(PacketGenerator):
     def _throughput_stats(self, stream, stats):
         # tx packet
         tx_port_id = stream["tx_port"]
-        port_stats = self.runtime_stats.get(tx_port_id)
+        port_stats = stats.get(tx_port_id)
         if not port_stats:
             msg = "failed to get tx_port {0} statistics".format(tx_port_id)
             raise Exception(msg)
@@ -686,7 +685,7 @@ class TrexPacketGenerator(PacketGenerator):
         self.logger.info(os.linesep.join(msg))
         # rx bps/pps
         rx_port_id = stream["rx_port"]
-        port_stats = self.runtime_stats.get(rx_port_id)
+        port_stats = stats.get(rx_port_id)
         if not port_stats:
             msg = "failed to get rx_port {0} statistics".format(rx_port_id)
             raise Exception(msg)
@@ -788,57 +787,22 @@ class TrexPacketGenerator(PacketGenerator):
         self._preset_trex_port()
 
     def _start_transmission(self, stream_ids, options={}):
-        '''
-        :param sample_delay:
-        After traffic start ``sample_delay`` seconds, start get runtime statistics
-        '''
+        test_mode = options.get('method')
         # get rate percentage
         rate_percent = "{0}%".format(options.get('rate') or
                                      self._traffic_opt.get('rate') or
                                      '100')
-        # get duration
-        duration = options.get("duration") or 20
-        duration = int(duration) if isinstance(duration, (str, unicode)) \
-                                      else duration
-        # get sample interval
-        _sample_delay = options.get("sample_delay") or duration/2
-        sample_delay = int(_sample_delay) \
-                            if isinstance(_sample_delay, (str, unicode)) \
-                            else _sample_delay
-        # get configuration from pktgen config file
-        warmup = int(self.conf["warmup"]) if self.conf.has_key("warmup") \
-                                          else 25
-        # set trex coremask
-        wait_interval = warmup+30 \
-                        if self.conf.has_key("core_mask") \
-                        else warmup+5
-
         try:
-            ###########################################
             # clear the stats before injecting
             self._conn.clear_stats()
             # Start traffic on port(s)
             run_opt = {
                 'ports':    self._traffic_ports,
                 'mult':     rate_percent,
-                'duration': duration,
                 'core_mask': self.core_mask,
                 'force':    True,}
             self.logger.info("begin traffic ......")
             self._conn.start(**run_opt)
-            ###########################################
-            if sample_delay:
-                time.sleep(sample_delay) # wait
-                # get ports runtime statistics
-                self.runtime_stats = self._conn.get_stats()
-                self.logger.info(pformat(self.runtime_stats))
-            ###########################################
-            # Block until traffic on specified port(s) has ended
-            wait_opt = {'ports':  self._traffic_ports}
-            if duration:
-                time.sleep(wait_interval + 10)
-                wait_opt['timeout'] = wait_interval + duration
-            self._conn.wait_on_traffic(**wait_opt)
         except Exception as e:
             self.logger.error(e)
 
-- 
1.9.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-06  6:58 [dts] [PATCH V1 0/5] dts/pktgen: measure throughput supports multiple return values yufengmx
2019-08-06  6:58 ` [dts] [PATCH V1 1/5] conf/pktgen: remove un-used optons yufengmx
2019-08-06  6:58 ` [dts] [PATCH V1 2/5] doc/dts_gsg/pktgen_prog_guide: update description yufengmx
2019-08-06  6:58 ` [dts] [PATCH V1 3/5] framework/pktgen_base: measure throughput supports multiple yufengmx
2019-08-06  6:58 ` [dts] [PATCH V1 4/5] framework/pktgen_ixia: " yufengmx
2019-08-06  6:58 ` [dts] [PATCH V1 5/5] framework/pktgen_trex: " yufengmx

test suite reviews and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dts/0 dts/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dts dts/ http://inbox.dpdk.org/dts \
		dts@dpdk.org
	public-inbox-index dts


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dts


AGPL code for this site: git clone https://public-inbox.org/ public-inbox