summaryrefslogtreecommitdiffstats
path: root/core/traffic_controller_rfc2544.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/traffic_controller_rfc2544.py')
-rw-r--r--core/traffic_controller_rfc2544.py108
1 files changed, 13 insertions, 95 deletions
diff --git a/core/traffic_controller_rfc2544.py b/core/traffic_controller_rfc2544.py
index af09deff..874c3ae7 100644
--- a/core/traffic_controller_rfc2544.py
+++ b/core/traffic_controller_rfc2544.py
@@ -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.
@@ -13,16 +13,12 @@
# limitations under the License.
"""RFC2544 Traffic Controller implementation.
"""
-import logging
-
-from core.traffic_controller import ITrafficController
-from core.results.results_constants import ResultsConstants
+from core.traffic_controller import TrafficController
from core.results.results import IResults
-from conf import settings
from conf import get_test_param
-class TrafficControllerRFC2544(ITrafficController, IResults):
+class TrafficControllerRFC2544(TrafficController, IResults):
"""Traffic controller for RFC2544 traffic
Used to setup and control a traffic generator for an RFC2544 deployment
@@ -34,60 +30,15 @@ class TrafficControllerRFC2544(ITrafficController, IResults):
:param traffic_gen_class: The traffic generator class to be used.
"""
- self._logger = logging.getLogger(__name__)
- self._logger.debug("__init__")
- self._traffic_gen_class = traffic_gen_class()
- self._traffic_started = False
- self._traffic_started_call_count = 0
+ super(TrafficControllerRFC2544, self).__init__(traffic_gen_class)
+ self._type = 'rfc2544'
self._tests = int(get_test_param('rfc2544_tests', 1))
- self._duration = int(get_test_param('duration', 30))
- self._lossrate = float(get_test_param('lossrate', 0.0))
- self._results = []
-
- # If set, comma separated packet_sizes value from --test_params
- # on cli takes precedence over value in settings file.
- self._packet_sizes = None
- packet_sizes_cli = get_test_param('pkt_sizes')
- if packet_sizes_cli:
- self._packet_sizes = [int(x.strip())
- for x in packet_sizes_cli.split(',')]
- else:
- self._packet_sizes = settings.getValue('TRAFFICGEN_PKT_SIZES')
-
- def __enter__(self):
- """Call initialisation function.
- """
- self._traffic_gen_class.connect()
-
- def __exit__(self, type_, value, traceback):
- """Stop traffic, clean up.
- """
- if self._traffic_started:
- self.stop_traffic()
-
- @staticmethod
- def _append_results(result_dict, packet_size):
- """Adds common values to traffic generator results.
-
- :param result_dict: Dictionary containing results from trafficgen
- :param packet_size: Packet size value.
-
- :returns: dictionary of results with additional entries.
- """
-
- ret_value = result_dict
-
- # TODO Old TOIT controller had knowledge about scenario beeing
- # executed, should new controller also fill Configuration & ID,
- # or this should be passed to TestCase?
- ret_value[ResultsConstants.TYPE] = 'rfc2544'
- ret_value[ResultsConstants.PACKET_SIZE] = str(packet_size)
-
- return ret_value
def send_traffic(self, traffic):
- """See ITrafficController for description
+ """See TrafficController for description
"""
+ if not self.traffic_required():
+ return
self._logger.debug('send_traffic with ' +
str(self._traffic_gen_class))
@@ -109,13 +60,14 @@ class TrafficControllerRFC2544(ITrafficController, IResults):
result = self._traffic_gen_class.send_rfc2544_throughput(
traffic, tests=self._tests, duration=self._duration, lossrate=self._lossrate)
- result = TrafficControllerRFC2544._append_results(result,
- packet_size)
+ result = self._append_results(result, packet_size)
self._results.append(result)
def send_traffic_async(self, traffic, function):
- """See ITrafficController for description
+ """See TrafficController for description
"""
+ if not self.traffic_required():
+ return
self._logger.debug('send_traffic_async with ' +
str(self._traffic_gen_class))
@@ -131,40 +83,6 @@ class TrafficControllerRFC2544(ITrafficController, IResults):
else:
function['function']()
result = self._traffic_gen_class.wait_rfc2544_throughput()
- result = TrafficControllerRFC2544._append_results(result,
- packet_size)
+ result = self._append_results(result, packet_size)
self._results.append(result)
- def stop_traffic(self):
- """Kills traffic being sent from the traffic generator.
- """
- self._logger.debug("stop_traffic()")
-
- def print_results(self):
- """IResult interface implementation.
- """
- counter = 0
- for item in self._results:
- logging.info("Record: " + str(counter))
- counter += 1
- for(key, value) in list(item.items()):
- logging.info(" Key: " + str(key) +
- ", Value: " + str(value))
-
- def get_results(self):
- """IResult interface implementation.
- """
- return self._results
-
- def validate_send_traffic(self, dummy_result, dummy_traffic):
- """Verify that send traffic has succeeded
- """
- if len(self._results):
- if 'b2b_frames' in self._results[-1]:
- return float(self._results[-1]['b2b_frames']) > 0
- elif 'throughput_rx_fps' in self._results[-1]:
- return float(self._results[-1]['throughput_rx_fps']) > 0
- else:
- return True
- else:
- return False