diff options
Diffstat (limited to 'core/traffic_controller_rfc2544.py')
-rw-r--r-- | core/traffic_controller_rfc2544.py | 111 |
1 files changed, 14 insertions, 97 deletions
diff --git a/core/traffic_controller_rfc2544.py b/core/traffic_controller_rfc2544.py index af09deff..980205f6 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 - 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 + super(TrafficControllerRFC2544, self).__init__(traffic_gen_class) + self._type = 'rfc2544' + self._tests = int(settings.getValue('TRAFFICGEN_RFC2544_TESTS')) 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,5 @@ 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 |