summaryrefslogtreecommitdiffstats
path: root/core/loader/loader.py
diff options
context:
space:
mode:
authorSridhar K. N. Rao <sridhar.rao@spirent.com>2017-10-05 09:29:35 +0530
committerSridhar K. N. Rao <sridhar.rao@spirent.com>2017-11-03 19:40:48 +0530
commit485ac777fd9cded7c145917bfcbe701276f3c855 (patch)
treec78b8dd7d339f5e738f9b579a39d30f5c8da0f12 /core/loader/loader.py
parent0549aa1f1a694899fec3b16b44230b5c60d2fa29 (diff)
load_gen: Supporting loading of load_gen via loader.
Currently all tools are loaded via loader utility, except load_gen. Load_gens were loaded directly through component_factory. This patch adds support to load load_gens through loader utility. The changes are as follows: 1. Configuration changes:The common.conf include configuration of directory. testcases.conf includes changes to load configuration, where tool is no more part of the load-configuration. The custom.conf has configuration of LOADGEN to be used - this configuration replaces the earlier 'tool' configuration parameter. 2. loader_utility_changes: In loader.py, loadgen_loader is defined, which is used in new get_loadgen function. 3. component_factory changes: in create_loadgen, similar to other tools, the function just retuns the object of loadgen_class. 4. Renaming of Dummy load_gen: Loader fails to load properly a dummy loadgen due to name-clash with dummy in pkt_gen. To avoid this name clash dummy is renamed to dummyloadgen. 5. testcase changes: create_loadgen is now called with output of loader's get_loadgen_class. 6. Fixed Pylint Errors and extra-space at the end. 7. Included CLI options support for --loadgen and --list-loadgens. Thanks to Martin K. 8. Added the missing loadgen parameter in testcases.conf. 9. Fixed the missing comma error. 10. Added CI change in build-vsperf.sh 11. Fixed configuration reading in stress/stress.py JIRA: VSPERF-533 Change-Id: I3fbb259618825a12fef55320a748a4f02509190b Signed-off-by: Sridhar K. N. Rao <sridhar.rao@spirent.com> Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Diffstat (limited to 'core/loader/loader.py')
-rwxr-xr-xcore/loader/loader.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/core/loader/loader.py b/core/loader/loader.py
index b0990fa7..dcd77ced 100755
--- a/core/loader/loader.py
+++ b/core/loader/loader.py
@@ -18,11 +18,13 @@
from conf import settings
from core.loader.loader_servant import LoaderServant
from tools.collectors.collector import ICollector
+from tools.load_gen.load_gen import ILoadGenerator
from tools.pkt_fwd.pkt_fwd import IPktFwd
from tools.pkt_gen.trafficgen import ITrafficGenerator
from vswitches.vswitch import IVSwitch
from vnfs.vnf.vnf import IVnf
+# pylint: disable=too-many-public-methods
class Loader(object):
"""Loader class - main object context holder.
"""
@@ -30,6 +32,7 @@ class Loader(object):
_metrics_loader = None
_vswitch_loader = None
_vnf_loader = None
+ _loadgen_loader = None
def __init__(self):
"""Loader ctor - initialization method.
@@ -48,6 +51,11 @@ class Loader(object):
settings.getValue('COLLECTOR'),
ICollector)
+ self._loadgen_loader = LoaderServant(
+ settings.getValue('LOADGEN_DIR'),
+ settings.getValue('LOADGEN'),
+ ILoadGenerator)
+
self._vswitch_loader = LoaderServant(
settings.getValue('VSWITCH_DIR'),
settings.getValue('VSWITCH'),
@@ -126,6 +134,30 @@ class Loader(object):
"""
return self._metrics_loader.get_classes_printable()
+ def get_loadgen_class(self):
+ """Returns type of currently configured loadgen implementation.
+
+ :return: Type of ILoadGenerator implementation if available.
+ None otherwise.
+ """
+ return self._loadgen_loader.get_class()
+
+ def get_loadgens(self):
+ """Returns dictionary of all available loadgens
+
+ :return: Dictionary of loadgens
+ - key: name of the class which implements ILoadGenerator
+ - value: Type of class which implements ILoadGenerator
+ """
+ return self._loadgen_loader.get_classes()
+
+ def get_loadgens_printable(self):
+ """Returns all available loadgens in printable format
+
+ :return: String containing printable list of loadgens
+ """
+ return self._loadgen_loader.get_classes_printable()
+
def get_vswitch(self):
"""Returns instance of currently configured vswitch implementation.