Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
2 merge requests!54Release 2.0.0,!34Context Scalability extensions using CockroachDB + Removal of Stateful database inside Device + other
......@@ -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
......
......@@ -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:
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment