diff --git a/src/load_generator/load_gen/Parameters.py b/src/load_generator/load_gen/Parameters.py index c74d18248c6000cd6da18d5c7e0e55ef2be41730..abe297039cb08c0397b9064aca81883a6de37d06 100644 --- a/src/load_generator/load_gen/Parameters.py +++ b/src/load_generator/load_gen/Parameters.py @@ -17,7 +17,7 @@ from typing import List, Optional class Parameters: def __init__( self, num_requests : int, request_types : List[str], offered_load : Optional[float] = None, - inter_arrival_time : Optional[float] = None, holding_time : Optional[float] = None, + inter_arrival_time : Optional[float] = None, holding_time : Optional[float] = None, do_teardown : bool = True, dry_mode : bool = False, record_to_dlt : bool = False, dlt_domain_id : Optional[str] = None ) -> None: self._num_requests = num_requests @@ -25,6 +25,7 @@ class Parameters: self._offered_load = offered_load self._inter_arrival_time = inter_arrival_time self._holding_time = holding_time + self._do_teardown = do_teardown self._dry_mode = dry_mode self._record_to_dlt = record_to_dlt self._dlt_domain_id = dlt_domain_id @@ -58,6 +59,9 @@ class Parameters: @property def holding_time(self): return self._holding_time + @property + def do_teardown(self): return self._do_teardown + @property def dry_mode(self): return self._dry_mode diff --git a/src/load_generator/load_gen/RequestScheduler.py b/src/load_generator/load_gen/RequestScheduler.py index 408e0125fb63b867d2a5054b74c2841d9fea368b..e2a804d7f73c584d3d71bf7801a330705712eeae 100644 --- a/src/load_generator/load_gen/RequestScheduler.py +++ b/src/load_generator/load_gen/RequestScheduler.py @@ -48,7 +48,9 @@ class RequestScheduler: self._generator = generator def _schedule_request_setup(self) -> None: - if self._generator.num_requests_generated >= self._parameters.num_requests: + infinite_loop = self._parameters.num_requests == 0 + num_requests_generated = self._generator.num_requests_generated - 1 # because it first increases, then checks + if not infinite_loop and (num_requests_generated >= self._parameters.num_requests): LOGGER.info('Generation Done!') #self._scheduler.shutdown() return @@ -98,7 +100,8 @@ class RequestScheduler: slice_uuid, src_device_uuid, src_endpoint_uuid, dst_device_uuid, dst_endpoint_uuid) self._create_update(slice_=request) - self._schedule_request_teardown(request) + if self._parameters.do_teardown: + self._schedule_request_teardown(request) def _request_teardown(self, request : Dict) -> None: if 'service_id' in request: diff --git a/src/load_generator/service/LoadGeneratorServiceServicerImpl.py b/src/load_generator/service/LoadGeneratorServiceServicerImpl.py index d5adb492d67d43ca38a7213fb50f2b1bfa20ec29..4957625bc5095b6be6855d21f2cb448ae2fabb34 100644 --- a/src/load_generator/service/LoadGeneratorServiceServicerImpl.py +++ b/src/load_generator/service/LoadGeneratorServiceServicerImpl.py @@ -28,7 +28,7 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer): def __init__(self): LOGGER.debug('Creating Servicer...') self._parameters = Parameters( - num_requests = 100, + num_requests = 1, request_types = [ RequestType.SERVICE_L2NM, RequestType.SERVICE_L3NM, @@ -38,7 +38,8 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer): RequestType.SLICE_L3NM, ], offered_load = 50, - holding_time = 3600, + holding_time = 10, + do_teardown = False, dry_mode = False, # in dry mode, no request is sent to TeraFlowSDN record_to_dlt = False, # if record_to_dlt, changes in device/link/service/slice are uploaded to DLT dlt_domain_id = 'dlt-perf-eval', # domain used to uploaded entities, ignored when record_to_dlt = False