X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FTrafficGenerator.py;h=36a83851cb79636cd6c15ec0a00e03114be32997;hb=ada7009a3c826430e83a29c31bdf9a5973986ad9;hp=bf6383e52a12a7589c21f2093096e2ea002d79c6;hpb=a3d14e7cf128c5188a4e064042a64333ae64d191;p=csit.git diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index bf6383e52a..36a83851cb 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -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