Skip to content
Snippets Groups Projects
Commit d041e8d6 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Load Generator component:

- Added parametrization for maximum number of workers
parent 6855e88b
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!92New features in Load Generator
...@@ -39,6 +39,7 @@ def main(): ...@@ -39,6 +39,7 @@ def main():
availability_ranges = [[0.0, 99.9999]], availability_ranges = [[0.0, 99.9999]],
capacity_gbps_ranges = [[0.1, 100.00]], capacity_gbps_ranges = [[0.1, 100.00]],
e2e_latency_ms_ranges = [[5.0, 100.00]], e2e_latency_ms_ranges = [[5.0, 100.00]],
max_workers = 10,
dry_mode = False, # in dry mode, no request is sent to TeraFlowSDN 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 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 dlt_domain_id = 'dlt-perf-eval', # domain used to uploaded entities, ignored when record_to_dlt = False
......
...@@ -27,4 +27,8 @@ ENDPOINT_COMPATIBILITY = { ...@@ -27,4 +27,8 @@ ENDPOINT_COMPATIBILITY = {
'PHOTONIC_MEDIA:DWDM:G_50GHZ:INPUT' : 'PHOTONIC_MEDIA:DWDM:G_50GHZ:OUTPUT', 'PHOTONIC_MEDIA:DWDM:G_50GHZ:INPUT' : 'PHOTONIC_MEDIA:DWDM:G_50GHZ:OUTPUT',
} }
MAX_WORKER_THREADS = 10 DEFAULT_AVAILABILITY_RANGES = [[0.0, 99.9999]]
\ No newline at end of file DEFAULT_CAPACITY_GBPS_RANGES = [[0.1, 100.00]]
DEFAULT_E2E_LATENCY_MS_RANGES = [[5.0, 100.00]]
DEFAULT_MAX_WORKERS = 10
...@@ -13,11 +13,10 @@ ...@@ -13,11 +13,10 @@
# limitations under the License. # limitations under the License.
from typing import List, Optional from typing import List, Optional
from load_generator.load_gen.Constants import (
DEFAULT_AVAILABILITY_RANGES, DEFAULT_CAPACITY_GBPS_RANGES, DEFAULT_E2E_LATENCY_MS_RANGES, DEFAULT_MAX_WORKERS)
from load_generator.tools.ListScalarRange import Type_ListScalarRange from load_generator.tools.ListScalarRange import Type_ListScalarRange
DEFAULT_AVAILABILITY_RANGES = [[0.0, 99.9999]]
DEFAULT_CAPACITY_GBPS_RANGES = [[0.1, 100.00]]
DEFAULT_E2E_LATENCY_MS_RANGES = [[5.0, 100.00]]
class Parameters: class Parameters:
def __init__( def __init__(
...@@ -26,7 +25,7 @@ class Parameters: ...@@ -26,7 +25,7 @@ class Parameters:
availability_ranges : Type_ListScalarRange = DEFAULT_AVAILABILITY_RANGES, availability_ranges : Type_ListScalarRange = DEFAULT_AVAILABILITY_RANGES,
capacity_gbps_ranges : Type_ListScalarRange = DEFAULT_CAPACITY_GBPS_RANGES, capacity_gbps_ranges : Type_ListScalarRange = DEFAULT_CAPACITY_GBPS_RANGES,
e2e_latency_ms_ranges : Type_ListScalarRange = DEFAULT_E2E_LATENCY_MS_RANGES, e2e_latency_ms_ranges : Type_ListScalarRange = DEFAULT_E2E_LATENCY_MS_RANGES,
do_teardown : bool = True, dry_mode : bool = False, max_workers : int = DEFAULT_MAX_WORKERS, do_teardown : bool = True, dry_mode : bool = False,
record_to_dlt : bool = False, dlt_domain_id : Optional[str] = None record_to_dlt : bool = False, dlt_domain_id : Optional[str] = None
) -> None: ) -> None:
self._num_requests = num_requests self._num_requests = num_requests
...@@ -37,6 +36,7 @@ class Parameters: ...@@ -37,6 +36,7 @@ class Parameters:
self._availability_ranges = availability_ranges self._availability_ranges = availability_ranges
self._capacity_gbps_ranges = capacity_gbps_ranges self._capacity_gbps_ranges = capacity_gbps_ranges
self._e2e_latency_ms_ranges = e2e_latency_ms_ranges self._e2e_latency_ms_ranges = e2e_latency_ms_ranges
self._max_workers = max_workers
self._do_teardown = do_teardown self._do_teardown = do_teardown
self._dry_mode = dry_mode self._dry_mode = dry_mode
self._record_to_dlt = record_to_dlt self._record_to_dlt = record_to_dlt
...@@ -80,6 +80,9 @@ class Parameters: ...@@ -80,6 +80,9 @@ class Parameters:
@property @property
def e2e_latency_ms_ranges(self): return self._e2e_latency_ms_ranges def e2e_latency_ms_ranges(self): return self._e2e_latency_ms_ranges
@property
def max_workers(self): return self._max_workers
@property @property
def do_teardown(self): return self._do_teardown def do_teardown(self): return self._do_teardown
......
...@@ -23,7 +23,6 @@ from common.proto.context_pb2 import Service, ServiceId, Slice, SliceId ...@@ -23,7 +23,6 @@ from common.proto.context_pb2 import Service, ServiceId, Slice, SliceId
from common.tools.grpc.Tools import grpc_message_to_json_string from common.tools.grpc.Tools import grpc_message_to_json_string
from service.client.ServiceClient import ServiceClient from service.client.ServiceClient import ServiceClient
from slice.client.SliceClient import SliceClient from slice.client.SliceClient import SliceClient
from .Constants import MAX_WORKER_THREADS
from .DltTools import explore_entities_to_record, record_entities from .DltTools import explore_entities_to_record, record_entities
from .Parameters import Parameters from .Parameters import Parameters
from .RequestGenerator import RequestGenerator from .RequestGenerator import RequestGenerator
...@@ -44,7 +43,7 @@ class RequestScheduler: ...@@ -44,7 +43,7 @@ class RequestScheduler:
self._scheduler = scheduler_class() self._scheduler = scheduler_class()
self._scheduler.configure( self._scheduler.configure(
jobstores = {'default': MemoryJobStore()}, jobstores = {'default': MemoryJobStore()},
executors = {'default': ThreadPoolExecutor(max_workers=MAX_WORKER_THREADS)}, executors = {'default': ThreadPoolExecutor(max_workers=parameters.max_workers)},
job_defaults = { job_defaults = {
'coalesce': False, 'coalesce': False,
'max_instances': 100, 'max_instances': 100,
......
...@@ -43,6 +43,7 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer): ...@@ -43,6 +43,7 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer):
availability_ranges = list_scalar_range__grpc_to_list(request.availability ), availability_ranges = list_scalar_range__grpc_to_list(request.availability ),
capacity_gbps_ranges = list_scalar_range__grpc_to_list(request.capacity_gbps ), capacity_gbps_ranges = list_scalar_range__grpc_to_list(request.capacity_gbps ),
e2e_latency_ms_ranges = list_scalar_range__grpc_to_list(request.e2e_latency_ms), e2e_latency_ms_ranges = list_scalar_range__grpc_to_list(request.e2e_latency_ms),
max_workers = request.max_workers,
do_teardown = request.do_teardown, # if set, schedule tear down of requests do_teardown = request.do_teardown, # if set, schedule tear down of requests
dry_mode = request.dry_mode, # in dry mode, no request is sent to TeraFlowSDN dry_mode = request.dry_mode, # in dry mode, no request is sent to TeraFlowSDN
record_to_dlt = request.record_to_dlt, # if set, upload changes to DLT record_to_dlt = request.record_to_dlt, # if set, upload changes to DLT
...@@ -80,6 +81,7 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer): ...@@ -80,6 +81,7 @@ class LoadGeneratorServiceServicerImpl(LoadGeneratorServiceServicer):
stat_pars.offered_load = params.offered_load # pylint: disable=no-member stat_pars.offered_load = params.offered_load # pylint: disable=no-member
stat_pars.holding_time = params.holding_time # pylint: disable=no-member stat_pars.holding_time = params.holding_time # pylint: disable=no-member
stat_pars.inter_arrival_time = params.inter_arrival_time # pylint: disable=no-member stat_pars.inter_arrival_time = params.inter_arrival_time # pylint: disable=no-member
stat_pars.max_workers = params.max_workers # pylint: disable=no-member
stat_pars.do_teardown = params.do_teardown # pylint: disable=no-member stat_pars.do_teardown = params.do_teardown # pylint: disable=no-member
stat_pars.dry_mode = params.dry_mode # pylint: disable=no-member stat_pars.dry_mode = params.dry_mode # pylint: disable=no-member
stat_pars.record_to_dlt = params.record_to_dlt # pylint: disable=no-member stat_pars.record_to_dlt = params.record_to_dlt # pylint: disable=no-member
......
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