X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FTrafficGenerator.py;h=36a83851cb79636cd6c15ec0a00e03114be32997;hb=ada7009a3c826430e83a29c31bdf9a5973986ad9;hp=816b9463813cec2ce8769f232ec73dd4791756e7;hpb=0a0b9d81b7e46ac485d66e9aeb2c8def639680c6;p=csit.git diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 816b946381..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): @@ -613,7 +613,7 @@ class OptimizedSearch(object): maximum_transmit_rate, packet_loss_ratio=0.005, final_relative_width=0.005, final_trial_duration=30.0, initial_trial_duration=1.0, number_of_intermediate_phases=2, - timeout=600.0): + timeout=720.0, doublings=1): """Setup initialized TG, perform optimized search, return intervals. :param frame_size: Frame size identifier or value [B]. @@ -633,6 +633,9 @@ class OptimizedSearch(object): 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 @@ -643,7 +646,8 @@ class OptimizedSearch(object): :type initial_trial_duration: float :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. @@ -653,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, number_of_intermediate_phases=number_of_intermediate_phases, - initial_trial_duration=initial_trial_duration, timeout=timeout) + 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