summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorChristian Trautman <ctrautma@redhat.com>2017-01-23 10:21:53 -0500
committerChristian Trautman <ctrautma@redhat.com>2017-01-23 10:32:10 -0500
commit69751e8b32691c4e82cb83c98130b0d8e1934d75 (patch)
treed12a4a47a81761ed343dfb26bf5dfd4808508bf1 /tools
parent605742c4e23f8aa199395dea96d5758dc2616093 (diff)
xena_cont_accuracy_fix: Xena continuous traffic accuracy fixes
Second patch to help improve Xena continuous traffic accuracy. Increases delay before gathering statistics to allow packets in flight to be received. Changes bps and fps to be calculated based on total bytes and packets received versus capturing the data while port is transmitting from active statistics. Sets time limit on ports based on duration. JIRA: VSPerf-423 Change-Id: I574819694d3141edb539de64bc16dcd6c6fcf489 Signed-off-by: Christian Trautman <ctrautma@redhat.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/pkt_gen/xena/xena.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/tools/pkt_gen/xena/xena.py b/tools/pkt_gen/xena/xena.py
index 20577e8d..6e3444af 100755
--- a/tools/pkt_gen/xena/xena.py
+++ b/tools/pkt_gen/xena/xena.py
@@ -188,9 +188,10 @@ class Xena(ITrafficGenerator):
result_dict[ResultsConstants.TX_FRAMES] = self.tx_stats.data[
self.tx_stats.pt_stream_keys[0]]['packets']
result_dict[ResultsConstants.TX_RATE_FPS] = self.tx_stats.data[
- self.tx_stats.pt_stream_keys[0]]['pps']
- result_dict[ResultsConstants.TX_RATE_MBPS] = self.tx_stats.data[
- self.tx_stats.pt_stream_keys[0]]['bps'] / 1000000
+ self.tx_stats.pt_stream_keys[0]]['packets'] / self._duration
+ result_dict[ResultsConstants.TX_RATE_MBPS] = ((
+ self.tx_stats.data[self.tx_stats.pt_stream_keys[0]]['bytes']
+ * 8) / 1000000) / self._duration
result_dict[ResultsConstants.TX_BYTES] = self.tx_stats.data[
self.tx_stats.pt_stream_keys[0]]['bytes']
# tx rate percent may need to be halved if bi directional
@@ -214,10 +215,11 @@ class Xena(ITrafficGenerator):
'pr_tpldstraffic']['0']['packets']
result_dict[
ResultsConstants.THROUGHPUT_RX_FPS] = self.rx_stats.data[
- 'pr_tpldstraffic']['0']['pps']
+ 'pr_tpldstraffic']['0']['packets'] / self._duration
result_dict[
- ResultsConstants.THROUGHPUT_RX_MBPS] = self.rx_stats.data[
- 'pr_tpldstraffic']['0']['bps'] / 1000000
+ ResultsConstants.THROUGHPUT_RX_MBPS] = ((
+ self.rx_stats.data['pr_tpldstraffic']['0']['bytes']
+ *8) / 1000000) / self._duration
result_dict[ResultsConstants.RX_BYTES] = self.rx_stats.data[
'pr_tpldstraffic']['0']['bytes']
# throughput percent may need to be halved if bi directional
@@ -395,6 +397,8 @@ class Xena(ITrafficGenerator):
settings.getValue('TRAFFICGEN_XENA_PORT1_IP'),
settings.getValue('TRAFFICGEN_XENA_PORT1_CIDR'),
settings.getValue('TRAFFICGEN_XENA_PORT1_GATEWAY'))
+ self.xmanager.ports[0].set_port_time_limit(self._duration)
+ self.xmanager.ports[1].set_port_time_limit(self._duration)
def setup_stream(stream, port, payload_id, flip_addr=False):
"""
@@ -459,7 +463,7 @@ class Xena(ITrafficGenerator):
if not self.xmanager.ports[1].traffic_on():
self._logger.error(
"Failure to start port 1. Check settings and retry.")
- sleep(self._duration + 1)
+ sleep(self._duration + 5) # the extra 5 seconds is to allow packets in flight to complete
# getting results
if self._params['traffic']['bidir'] == 'True':
# need to aggregate out both ports stats and assign that data