Fix Acl Plugin tests after update of Acl models
[csit.git] / resources / libraries / python / TrafficGenerator.py
index bf6383e..36a8385 100644 (file)
@@ -22,9 +22,9 @@ from .ssh import SSH
 from .topology import NodeType
 from .topology import NodeSubTypeTG
 from .topology import Topology
-from .search.AbstractRateProvider import AbstractRateProvider
-from .search.OptimizedSearchAlgorithm import OptimizedSearchAlgorithm
-from .search.ReceiveRateMeasurement import ReceiveRateMeasurement
+from .MLRsearch.AbstractMeasurer import AbstractMeasurer
+from .MLRsearch.MultipleLossRatioSearch import MultipleLossRatioSearch
+from .MLRsearch.ReceiveRateMeasurement import ReceiveRateMeasurement
 
 __all__ = ['TGDropRateSearchImpl', 'TrafficGenerator', 'OptimizedSearch']
 
@@ -101,15 +101,15 @@ class TGDropRateSearchImpl(DropRateSearch):
         return tg_instance.get_latency_int()
 
 
-class TrafficGenerator(AbstractRateProvider):
+class TrafficGenerator(AbstractMeasurer):
     """Traffic Generator.
 
     FIXME: Describe API."""
 
     # TODO: Decrease friction between various search and rate provider APIs.
-    # FIXME: Remove "trex" from lines which could work with other TGs.
+    # TODO: Remove "trex" from lines which could work with other TGs.
 
-    # use one instance of TrafficGenerator for all tests in test suite
+    # Use one instance of TrafficGenerator for all tests in test suite
     ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
 
     def __init__(self):
@@ -612,7 +612,8 @@ class OptimizedSearch(object):
             frame_size, traffic_type, minimum_transmit_rate,
             maximum_transmit_rate, packet_loss_ratio=0.005,
             final_relative_width=0.005, final_trial_duration=30.0,
-            initial_trial_duration=1.0, intermediate_phases=2, timeout=600.0):
+            initial_trial_duration=1.0, number_of_intermediate_phases=2,
+            timeout=720.0, doublings=1):
         """Setup initialized TG, perform optimized search, return intervals.
 
         :param frame_size: Frame size identifier or value [B].
@@ -628,10 +629,13 @@ class OptimizedSearch(object):
         :param final_trial_duration: Trial duration for the final phase [s].
         :param initial_trial_duration: Trial duration for the initial phase
             and also for the first intermediate phase [s].
-        :param intermediate_phases: Number of intermediate phases to perform
-            before the final phase [1].
+        :param number_of_intermediate_phases: Number of intermediate phases
+            to perform before the final phase [1].
         :param timeout: The search will fail itself when not finished
             before this overall time [s].
+        :param doublings: How many doublings to do in external search step.
+            Default 1 is suitable for fairly stable tests,
+            less stable tests might get better overal duration with 2 or more.
         :type frame_size: str or int
         :type traffic_type: str
         :type minimum_transmit_rate: float
@@ -640,9 +644,10 @@ class OptimizedSearch(object):
         :type final_relative_width: float
         :type final_trial_duration: float
         :type initial_trial_duration: float
-        :type intermediate_phases: int
+        :type number_of_intermediate_phases: int
         :type timeout: float
-        :returns: Structure containing narrowed down intervals
+        :type doublings: int
+        :returns: Structure containing narrowed down NDR and PDR intervals
             and their measurements.
         :rtype: NdrPdrResult
         :raises RuntimeError: If total duration is larger than timeout.
@@ -652,11 +657,12 @@ class OptimizedSearch(object):
         tg_instance = BuiltIn().get_library_instance(
             'resources.libraries.python.TrafficGenerator')
         tg_instance.set_rate_provider_defaults(frame_size, traffic_type)
-        algorithm = OptimizedSearchAlgorithm(
-            tg_instance, final_trial_duration=final_trial_duration,
+        algorithm = MultipleLossRatioSearch(
+            measurer=tg_instance, final_trial_duration=final_trial_duration,
             final_relative_width=final_relative_width,
-            intermediate_phases=intermediate_phases,
-            initial_trial_duration=initial_trial_duration, timeout=timeout)
+            number_of_intermediate_phases=number_of_intermediate_phases,
+            initial_trial_duration=initial_trial_duration, timeout=timeout,
+            doublings=doublings)
         result = algorithm.narrow_down_ndr_and_pdr(
             minimum_transmit_rate, maximum_transmit_rate, packet_loss_ratio)
         return result