diff options
-rwxr-xr-x | conf/01_testcases.conf | 23 | ||||
-rw-r--r-- | testcases/testcase.py | 7 | ||||
-rwxr-xr-x | tools/pkt_gen/dummy/dummy.py | 7 | ||||
-rwxr-xr-x | tools/pkt_gen/ixia/ixia.py | 15 | ||||
-rwxr-xr-x | tools/pkt_gen/ixnet/ixnet.py | 10 | ||||
-rwxr-xr-x | tools/pkt_gen/trafficgen/trafficgen.py | 13 |
6 files changed, 48 insertions, 27 deletions
diff --git a/conf/01_testcases.conf b/conf/01_testcases.conf index 88001459..a35c395e 100755 --- a/conf/01_testcases.conf +++ b/conf/01_testcases.conf @@ -37,6 +37,10 @@ # # "port" - flow is defined by ingress ports # # "IP" - flow is defined by ingress ports # # and src and dst IP addresses +# "iLoad": 0-100 # Optional. Defines desired percentage +# # of frame rate used during continuous stream +# # tests. Can be overridden by cli option +# # iload. # "Load": dictionary # Optional. Configures background load # # during testcase execution. # Description of "Load" dictionary keys, their meanings and available values: @@ -96,8 +100,25 @@ PERFORMANCE_TESTS = [ "Name": "phy2phy_cont", "Traffic Type": "continuous", "Deployment": "p2p", - "Description": "RFC2544 Phy2Phy Continuous Stream", + "Description": "Phy2Phy Continuous Stream", "biDirectional": "True", + "iLoad": "90", + }, + { + "Name": "pvp_cont", + "Traffic Type": "continuous", + "Deployment": "pvp", + "Description": "PVP Continuous Stream", + "biDirectional": "True", + "iLoad": "90", + }, + { + "Name": "pvvp_cont", + "Traffic Type": "continuous", + "Deployment": "pvvp", + "Description": "PVVP Continuous Stream", + "biDirectional": "True", + "iLoad": "90", }, { "Name": "phy2phy_scalability", diff --git a/testcases/testcase.py b/testcases/testcase.py index 78f65239..608a316b 100644 --- a/testcases/testcase.py +++ b/testcases/testcase.py @@ -25,6 +25,7 @@ from core.loader import Loader from tools.report import report from conf import settings as S from tools.pkt_gen.trafficgen.trafficgenhelper import TRAFFIC_DEFAULTS +from conf import get_test_param class TestCase(object): """TestCase base class @@ -44,6 +45,9 @@ class TestCase(object): self.desc = cfg.get('Description', 'No description given.') self.deployment = cfg['Deployment'] self._frame_mod = cfg.get('Frame Modification', None) + framerate = get_test_param('iload', None) + if framerate == None: + framerate = cfg.get('iLoad', 100) # check if test requires background load and which generator it uses self._load_cfg = cfg.get('Load', None) @@ -62,7 +66,8 @@ class TestCase(object): self._traffic.update({'traffic_type': cfg['Traffic Type'], 'flow_type': cfg.get('Flow Type', 'port'), 'bidir': cfg['biDirectional'], - 'multistream': cfg.get('MultiStream', 0)}) + 'multistream': cfg.get('MultiStream', 0), + 'frame_rate': int(framerate)}) def run(self): """Run the test diff --git a/tools/pkt_gen/dummy/dummy.py b/tools/pkt_gen/dummy/dummy.py index f9ad1c8c..bf5a8f3c 100755 --- a/tools/pkt_gen/dummy/dummy.py +++ b/tools/pkt_gen/dummy/dummy.py @@ -104,7 +104,7 @@ class Dummy(trafficgen.ITrafficGenerator): """ pass - def send_burst_traffic(self, traffic=None, numpkts=100, time=20, framerate=100): + def send_burst_traffic(self, traffic=None, numpkts=100, time=20): """ Send a burst of traffic. """ @@ -133,8 +133,7 @@ class Dummy(trafficgen.ITrafficGenerator): return trafficgen.BurstResult(*results) - def send_cont_traffic(self, traffic=None, time=20, framerate=0, - multistream=False): + def send_cont_traffic(self, traffic=None, time=20, multistream=False): """ Send a continuous flow of traffic. """ @@ -146,7 +145,7 @@ class Dummy(trafficgen.ITrafficGenerator): results = get_user_traffic( 'continuous', - '%dmS, %dmpps, multistream %s' % (time, framerate, + '%dmS, %dmpps, multistream %s' % (time, traffic['frame_rate'], multistream), traffic_, ('frames tx', 'frames rx', 'min latency', 'max latency', 'avg latency')) diff --git a/tools/pkt_gen/ixia/ixia.py b/tools/pkt_gen/ixia/ixia.py index 992aff32..3a4f8442 100755 --- a/tools/pkt_gen/ixia/ixia.py +++ b/tools/pkt_gen/ixia/ixia.py @@ -211,15 +211,14 @@ class Ixia(trafficgen.ITrafficGenerator): return result - def send_burst_traffic(self, traffic=None, numpkts=100, time=20, - framerate=100): + def send_burst_traffic(self, traffic=None, numpkts=100, time=20): """See ITrafficGenerator for description """ flow = { 'numpkts': numpkts, 'time': time, 'type': 'stopStream', - 'framerate': framerate, + 'framerate': traffic['frame_rate'], } result = self._send_traffic(flow, traffic) @@ -228,14 +227,14 @@ class Ixia(trafficgen.ITrafficGenerator): #TODO - implement Burst results setting via TrafficgenResults. - def send_cont_traffic(self, traffic=None, time=20, framerate=100): + def send_cont_traffic(self, traffic=None, time=20, multistream=False): """See ITrafficGenerator for description """ flow = { 'numpkts': 100, 'time': time, 'type': 'contPacket', - 'framerate': framerate, + 'framerate': traffic['frame_rate'], 'multipleStreams': traffic['multistream'], } @@ -243,10 +242,10 @@ class Ixia(trafficgen.ITrafficGenerator): return Ixia._create_result(result) - def start_cont_traffic(self, traffic=None, time=20, framerate=100): + def start_cont_traffic(self, traffic=None, time=20): """See ITrafficGenerator for description """ - return self.send_cont_traffic(traffic, 0, framerate) + return self.send_cont_traffic(traffic, 0) def stop_cont_traffic(self): """See ITrafficGenerator for description @@ -254,7 +253,7 @@ class Ixia(trafficgen.ITrafficGenerator): return self.run_tcl('stopTraffic') def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20, - lossrate=0.0): + lossrate=0.0, multistream=False): """See ITrafficGenerator for description """ params = {} diff --git a/tools/pkt_gen/ixnet/ixnet.py b/tools/pkt_gen/ixnet/ixnet.py index 866a803e..52300b1e 100755 --- a/tools/pkt_gen/ixnet/ixnet.py +++ b/tools/pkt_gen/ixnet/ixnet.py @@ -200,14 +200,14 @@ class IxNet(trafficgen.ITrafficGenerator): """ pass - def send_cont_traffic(self, traffic=None, time=30, framerate=100): + def send_cont_traffic(self, traffic=None, time=30, multistream=False): """See ITrafficGenerator for description """ - self.start_cont_traffic(traffic, time, framerate) + self.start_cont_traffic(traffic, time) return self.stop_cont_traffic() - def start_cont_traffic(self, traffic=None, time=30, framerate=100): + def start_cont_traffic(self, traffic=None, time=30): """Start transmission. """ self._bidir = traffic['bidir'] @@ -216,7 +216,7 @@ class IxNet(trafficgen.ITrafficGenerator): self._params['config'] = { 'binary': False, # don't do binary search and send one stream 'time': time, - 'framerate': framerate, + 'framerate': traffic['frame_rate'], 'multipleStreams': traffic['multistream'], 'rfc2544TestType': 'throughput', } @@ -251,7 +251,7 @@ class IxNet(trafficgen.ITrafficGenerator): return self._wait_result() def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20, - lossrate=0.0): + lossrate=0.0, multistream=False): """See ITrafficGenerator for description """ self.start_rfc2544_throughput(traffic, trials, duration, lossrate) diff --git a/tools/pkt_gen/trafficgen/trafficgen.py b/tools/pkt_gen/trafficgen/trafficgen.py index 37f6c095..ff4aca0a 100755 --- a/tools/pkt_gen/trafficgen/trafficgen.py +++ b/tools/pkt_gen/trafficgen/trafficgen.py @@ -79,8 +79,7 @@ class ITrafficGenerator(object): """ raise NotImplementedError('Please call an implementation.') - def send_burst_traffic(self, traffic=None, numpkts=100, - time=20, framerate=100): + def send_burst_traffic(self, traffic=None, numpkts=100, time=20): """Send a burst of traffic. Send a ``numpkts`` packets of traffic, using ``traffic`` @@ -89,7 +88,6 @@ class ITrafficGenerator(object): Attributes: :param traffic: Detailed "traffic" spec, i.e. IP address, VLAN tags :param numpkts: Number of packets to send - :param framerate: Expected framerate :param time: Time to wait to receive packets :returns: dictionary of strings with following data: @@ -101,15 +99,14 @@ class ITrafficGenerator(object): """ raise NotImplementedError('Please call an implementation.') - def send_cont_traffic(self, traffic=None, time=20, framerate=0): + def send_cont_traffic(self, traffic=None, time=20, multistream=False): """Send a continuous flow of traffic. - Send packets at ``framerate``, using ``traffic`` configuration, + Send packets at given framerate, using ``traffic`` configuration, until timeout ``time`` occurs. :param traffic: Detailed "traffic" spec, i.e. IP address, VLAN tags :param time: Time to wait to receive packets (secs) - :param framerate: Expected framerate :param multistream: Enable multistream output by overriding the UDP port number in ``traffic`` with values from 1 to 64,000 @@ -126,7 +123,7 @@ class ITrafficGenerator(object): """ raise NotImplementedError('Please call an implementation.') - def start_cont_traffic(self, traffic=None, time=20, framerate=0): + def start_cont_traffic(self, traffic=None, time=20): """Non-blocking version of 'send_cont_traffic'. Start transmission and immediately return. Do not wait for @@ -140,7 +137,7 @@ class ITrafficGenerator(object): raise NotImplementedError('Please call an implementation.') def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20, - lossrate=0.0): + lossrate=0.0, multistream=False): """Send traffic per RFC2544 throughput test specifications. Send packets at a variable rate, using ``traffic`` |