aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconf/01_testcases.conf11
-rw-r--r--docs/NEWS.md1
-rw-r--r--testcases/testcase.py5
-rwxr-xr-xtools/pkt_gen/ixia/ixia.py12
-rwxr-xr-xtools/pkt_gen/ixnet/ixnet.py28
-rwxr-xr-xtools/pkt_gen/ixnet/ixnetrfc2544.tcl13
-rwxr-xr-xtools/pkt_gen/trafficgen/trafficgen.py14
7 files changed, 50 insertions, 34 deletions
diff --git a/conf/01_testcases.conf b/conf/01_testcases.conf
index 7b6c007c..cfe0b466 100755
--- a/conf/01_testcases.conf
+++ b/conf/01_testcases.conf
@@ -63,5 +63,16 @@ PERFORMANCE_TESTS = [
"Description": "RFC2544 Phy2Phy Continuous Stream",
"biDirectional": "True",
},
+ {
+ "Name": "phy2phy_scalability",
+ "Traffic Type": "rfc2544",
+ "Collector": "cpu",
+ "Deployment": "p2p",
+ "biDirectional": "True",
+ "Description": "LTD.Scalability.RFC2544.0PacketLoss",
+ # MultiStream defines number of flows simulated by traffic generator
+ # allowed range: 0-65535; value 0 disables MultiStream feature
+ "MultiStream": "8000",
+ },
]
diff --git a/docs/NEWS.md b/docs/NEWS.md
index 0e322580..8d92c2c5 100644
--- a/docs/NEWS.md
+++ b/docs/NEWS.md
@@ -20,6 +20,7 @@ once the community has digested the initial release.
* Verified on CentOS7
* Install & Quickstart documentation
+* Implementation of LTD.Scalability.RFC2544.0PacketLoss testcase
* Better support for mixing tests types with Deployment Scenarios
* Re-work based on community feedback of TOIT
* Framework support for other vSwitches
diff --git a/testcases/testcase.py b/testcases/testcase.py
index 83e038db..f5b35782 100644
--- a/testcases/testcase.py
+++ b/testcases/testcase.py
@@ -47,6 +47,7 @@ class TestCase(object):
if self._frame_mod:
self._frame_mod = self._frame_mod.lower()
self._results_dir = results_dir
+ self._multistream = cfg.get('MultiStream', 0)
def run(self):
"""Run the test
@@ -76,7 +77,9 @@ class TestCase(object):
with vswitch_ctl:
if vnf_ctl:
vnf_ctl.start()
- traffic = {'traffic_type': self._traffic_type, 'bidir': self._bidir}
+ traffic = {'traffic_type': self._traffic_type,
+ 'bidir': self._bidir,
+ 'multistream': self._multistream}
vswitch = vswitch_ctl.get_vswitch()
if self._frame_mod == "vlan":
flow = {'table':'2', 'priority':'1000', 'metadata':'2', 'actions': ['push_vlan:0x8100','goto_table:3']}
diff --git a/tools/pkt_gen/ixia/ixia.py b/tools/pkt_gen/ixia/ixia.py
index 92ef5203..992aff32 100755
--- a/tools/pkt_gen/ixia/ixia.py
+++ b/tools/pkt_gen/ixia/ixia.py
@@ -228,8 +228,7 @@ class Ixia(trafficgen.ITrafficGenerator):
#TODO - implement Burst results setting via TrafficgenResults.
- def send_cont_traffic(self, traffic=None, time=20, framerate=100,
- multistream=False):
+ def send_cont_traffic(self, traffic=None, time=20, framerate=100):
"""See ITrafficGenerator for description
"""
flow = {
@@ -237,15 +236,14 @@ class Ixia(trafficgen.ITrafficGenerator):
'time': time,
'type': 'contPacket',
'framerate': framerate,
- 'multipleStreams': multistream,
+ 'multipleStreams': traffic['multistream'],
}
result = self._send_traffic(flow, traffic)
return Ixia._create_result(result)
- def start_cont_traffic(self, traffic=None, time=20, framerate=100,
- multistream=False):
+ def start_cont_traffic(self, traffic=None, time=20, framerate=100):
"""See ITrafficGenerator for description
"""
return self.send_cont_traffic(traffic, 0, framerate)
@@ -256,7 +254,7 @@ class Ixia(trafficgen.ITrafficGenerator):
return self.run_tcl('stopTraffic')
def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""See ITrafficGenerator for description
"""
params = {}
@@ -265,7 +263,7 @@ class Ixia(trafficgen.ITrafficGenerator):
'trials': trials,
'duration': duration,
'lossrate': lossrate,
- 'multipleStreams': multistream,
+ 'multipleStreams': traffic['multistream'],
}
params['traffic'] = self.traffic_defaults.copy()
diff --git a/tools/pkt_gen/ixnet/ixnet.py b/tools/pkt_gen/ixnet/ixnet.py
index bb999f70..28ee8aaf 100755
--- a/tools/pkt_gen/ixnet/ixnet.py
+++ b/tools/pkt_gen/ixnet/ixnet.py
@@ -200,16 +200,14 @@ class IxNet(trafficgen.ITrafficGenerator):
"""
pass
- def send_cont_traffic(self, traffic=None, time=30, framerate=100,
- multistream=False):
+ def send_cont_traffic(self, traffic=None, time=30, framerate=100):
"""See ITrafficGenerator for description
"""
- self.start_cont_traffic(traffic, time, framerate, multistream)
+ self.start_cont_traffic(traffic, time, framerate)
return self.stop_cont_traffic()
- def start_cont_traffic(self, traffic=None, time=30, framerate=100,
- multistream=False):
+ def start_cont_traffic(self, traffic=None, time=30, framerate=100):
"""Start transmission.
"""
self._bidir = traffic['bidir']
@@ -219,7 +217,7 @@ class IxNet(trafficgen.ITrafficGenerator):
'binary': False, # don't do binary search and send one stream
'time': time,
'framerate': framerate,
- 'multipleStreams': multistream,
+ 'multipleStreams': traffic['multistream'],
'rfc2544TestType': 'throughput',
}
self._params['traffic'] = self.traffic_defaults.copy()
@@ -253,16 +251,15 @@ class IxNet(trafficgen.ITrafficGenerator):
return self._wait_result()
def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""See ITrafficGenerator for description
"""
- self.start_rfc2544_throughput(traffic, trials, duration, lossrate,
- multistream)
+ self.start_rfc2544_throughput(traffic, trials, duration, lossrate)
return self.wait_rfc2544_throughput()
def start_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""Start transmission.
"""
self._bidir = traffic['bidir']
@@ -273,7 +270,7 @@ class IxNet(trafficgen.ITrafficGenerator):
'trials': trials,
'duration': duration,
'lossrate': lossrate,
- 'multipleStreams': multistream,
+ 'multipleStreams': traffic['multistream'],
'rfc2544TestType': 'throughput',
}
self._params['traffic'] = self.traffic_defaults.copy()
@@ -385,16 +382,15 @@ class IxNet(trafficgen.ITrafficGenerator):
return parse_ixnet_rfc_results(parse_result_string(output[0]))
def send_rfc2544_back2back(self, traffic=None, trials=1, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""See ITrafficGenerator for description
"""
- self.start_rfc2544_back2back(traffic, trials, duration, lossrate,
- multistream)
+ self.start_rfc2544_back2back(traffic, trials, duration, lossrate)
return self.wait_rfc2544_back2back()
def start_rfc2544_back2back(self, traffic=None, trials=1, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""Start transmission.
"""
self._bidir = traffic['bidir']
@@ -405,7 +401,7 @@ class IxNet(trafficgen.ITrafficGenerator):
'trials': trials,
'duration': duration,
'lossrate': lossrate,
- 'multipleStreams': multistream,
+ 'multipleStreams': traffic['multistream'],
'rfc2544TestType': 'back2back',
}
self._params['traffic'] = self.traffic_defaults.copy()
diff --git a/tools/pkt_gen/ixnet/ixnetrfc2544.tcl b/tools/pkt_gen/ixnet/ixnetrfc2544.tcl
index d7472c07..2a156d3e 100755
--- a/tools/pkt_gen/ixnet/ixnetrfc2544.tcl
+++ b/tools/pkt_gen/ixnet/ixnetrfc2544.tcl
@@ -106,8 +106,17 @@ proc startRfc2544Test { testSpec trafficSpec } {
}
set multipleStreams [dict get $testSpec multipleStreams]
+ if {($multipleStreams < 0)} {
+ set multipleStreams 0
+ }
+ set numflows 64000
if {$multipleStreams} {
+ if {($multipleStreams > 65535)} {
+ set numflows 65535
+ } else {
+ set numflows $multipleStreams
+ }
set multipleStreams increment
} else {
set multipleStreams singleValue
@@ -2818,7 +2827,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
-valueType $multipleStreams \
-activeFieldChoice False \
-startValue {0} \
- -countValue {64000}
+ -countValue $numflows
sg_commit
set sg_field [lindex [ixNet remapIds $sg_field] 0]
@@ -4453,7 +4462,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
-valueType $multipleStreams \
-activeFieldChoice False \
-startValue {0} \
- -countValue {64000}
+ -countValue $numflows
sg_commit
set sg_field [lindex [ixNet remapIds $sg_field] 0]
diff --git a/tools/pkt_gen/trafficgen/trafficgen.py b/tools/pkt_gen/trafficgen/trafficgen.py
index 13af6b81..37f6c095 100755
--- a/tools/pkt_gen/trafficgen/trafficgen.py
+++ b/tools/pkt_gen/trafficgen/trafficgen.py
@@ -101,8 +101,7 @@ class ITrafficGenerator(object):
"""
raise NotImplementedError('Please call an implementation.')
- def send_cont_traffic(self, traffic=None, time=20, framerate=0,
- multistream=False):
+ def send_cont_traffic(self, traffic=None, time=20, framerate=0):
"""Send a continuous flow of traffic.
Send packets at ``framerate``, using ``traffic`` configuration,
@@ -127,8 +126,7 @@ class ITrafficGenerator(object):
"""
raise NotImplementedError('Please call an implementation.')
- def start_cont_traffic(self, traffic=None, time=20, framerate=0,
- multistream=False):
+ def start_cont_traffic(self, traffic=None, time=20, framerate=0):
"""Non-blocking version of 'send_cont_traffic'.
Start transmission and immediately return. Do not wait for
@@ -142,7 +140,7 @@ class ITrafficGenerator(object):
raise NotImplementedError('Please call an implementation.')
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.
Send packets at a variable rate, using ``traffic``
@@ -170,7 +168,7 @@ class ITrafficGenerator(object):
raise NotImplementedError('Please call an implementation.')
def start_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""Non-blocking version of 'send_rfc2544_throughput'.
Start transmission and immediately return. Do not wait for
@@ -184,7 +182,7 @@ class ITrafficGenerator(object):
raise NotImplementedError('Please call an implementation.')
def send_rfc2544_back2back(self, traffic=None, trials=1, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""Send traffic per RFC2544 back2back test specifications.
Send packets at a fixed rate, using ``traffic``
@@ -207,7 +205,7 @@ class ITrafficGenerator(object):
raise NotImplementedError('Please call an implementation.')
def start_rfc2544_back2back(self, traffic=None, trials=1, duration=20,
- lossrate=0.0, multistream=False):
+ lossrate=0.0):
"""Non-blocking version of 'send_rfc2544_back2back'.
Start transmission and immediately return. Do not wait for