Commit ceda32b0 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Load Generator component:

- added feature for deactivating teardowns
- added feature to support infinite-loop request generation
parent 2beec004
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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

+5 −2
Original line number Diff line number Diff line
@@ -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,6 +100,7 @@ class RequestScheduler:
                slice_uuid, src_device_uuid, src_endpoint_uuid, dst_device_uuid, dst_endpoint_uuid)
            self._create_update(slice_=request)

        if self._parameters.do_teardown:
            self._schedule_request_teardown(request)

    def _request_teardown(self, request : Dict) -> None:
+3 −2
Original line number Diff line number Diff line
@@ -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