summaryrefslogtreecommitdiffstats
path: root/scripts/automation
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/automation')
-rw-r--r--scripts/automation/regression/setups/trex17/benchmark.yaml62
-rw-r--r--scripts/automation/regression/setups/trex17/config.yaml39
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py81
3 files changed, 132 insertions, 50 deletions
diff --git a/scripts/automation/regression/setups/trex17/benchmark.yaml b/scripts/automation/regression/setups/trex17/benchmark.yaml
new file mode 100644
index 00000000..e5459dce
--- /dev/null
+++ b/scripts/automation/regression/setups/trex17/benchmark.yaml
@@ -0,0 +1,62 @@
+################################################################
+#### T-Rex benchmark configuration file ####
+################################################################
+
+
+test_rx_check :
+ multiplier : 0.8
+ cores : 1
+ rx_sample_rate : 128
+ exp_gbps : 0.5
+ cpu_to_core_ratio : 37270000
+ exp_bw : 1
+ exp_latency : 1
+
+
+test_routing_imix_64 :
+ multiplier : 28
+ cores : 1
+ cpu_to_core_ratio : 280
+ exp_latency : 1
+
+test_routing_imix :
+ multiplier : 0.5
+ cores : 1
+ cpu_to_core_ratio : 1800
+ exp_latency : 1
+
+test_static_routing_imix :
+ stat_route_dict :
+ clients_start : 16.0.0.1
+ servers_start : 48.0.0.1
+ dual_port_mask : 1.0.0.0
+ client_destination_mask : 255.0.0.0
+ server_destination_mask : 255.0.0.0
+ multiplier : 0.8
+ cores : 1
+ cpu_to_core_ratio : 1800
+ exp_latency : 1
+
+test_static_routing_imix_asymmetric:
+ stat_route_dict :
+ clients_start : 16.0.0.1
+ servers_start : 48.0.0.1
+ dual_port_mask : 1.0.0.0
+ client_destination_mask : 255.0.0.0
+ server_destination_mask : 255.0.0.0
+ multiplier : 0.8
+ cores : 1
+ cpu_to_core_ratio : 1800
+ exp_latency : 1
+
+test_ipv6_simple :
+ multiplier : 0.5
+ cores : 1
+ cpu_to_core_ratio : 30070000
+ cpu2core_custom_dev: YES
+ cpu2core_dev : 0.07
+
+
+test_jumbo:
+ multiplier : 2.8
+ cores : 1 \ No newline at end of file
diff --git a/scripts/automation/regression/setups/trex17/config.yaml b/scripts/automation/regression/setups/trex17/config.yaml
new file mode 100644
index 00000000..cf490b85
--- /dev/null
+++ b/scripts/automation/regression/setups/trex17/config.yaml
@@ -0,0 +1,39 @@
+################################################################
+#### T-Rex nightly test configuration file ####
+################################################################
+
+
+### T-Rex configuration:
+# hostname - can be DNS name or IP for the TRex machine for ssh to the box
+# password - root password for TRex machine
+# is_dual - should the TRex inject with -p ?
+# version_path - path to the t-rex version and executable
+# cores - how many cores should be used
+# latency - rate of latency packets injected by the Trex
+# modes - list of modes (tagging) of this setup (loopback, virtual etc.)
+# * loopback - Trex works via loopback. Router and TFTP configurations may be skipped.
+# * VM - Virtual OS (accept low CPU utilization in tests, latency can get spikes)
+# * virt_nics - NICs are virtual (VMXNET3 etc. have their limitations in tests)
+
+### Router configuration:
+# hostname - the router hostname as apears in ______# cli prefix
+# ip_address - the router's ip that can be used to communicate with
+# image - the desired imaged wished to be loaded as the router's running config
+# line_password - router password when access via Telent
+# en_password - router password when changing to "enable" mode
+# interfaces - an array of client-server pairs, representing the interfaces configurations of the router
+# configurations - an array of configurations that could possibly loaded into the router during the test.
+# The "clean" configuration is a mandatory configuration the router will load with to run the basic test bench
+
+### TFTP configuration:
+# hostname - the tftp hostname
+# ip_address - the tftp's ip address
+# images_path - the tftp's relative path in which the router's images are located
+
+### Test_misc configuration:
+# expected_bw - the "golden" bandwidth (in Gbps) results planned on receiving from the test
+
+trex:
+ hostname : csi-trex-17
+ cores : 2
+ modes : [loopback, virt_nics, VM]
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py
index 9289e513..fe89160a 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py
@@ -1,6 +1,7 @@
import sys
import os
import warnings
+import platform
# if not set - set it to default
TREX_STL_EXT_PATH = os.environ.get('TREX_STL_EXT_PATH')
@@ -20,9 +21,15 @@ CLIENT_UTILS_MODULES = ['dpkt-1.8.6',
]
-def import_module_list(modules_list):
+CLIENT_PLATFORM_MODULES = ['pyzmq-14.5.0']
+
+
+def import_module_list(modules_list, platform_modules_list):
+
assert(isinstance(modules_list, list))
+ assert(isinstance(platform_modules_list, list))
+ # regular modules
for p in modules_list:
full_path = os.path.join(TREX_STL_EXT_PATH, p)
fix_path = os.path.normcase(full_path)
@@ -30,57 +37,31 @@ def import_module_list(modules_list):
if not os.path.exists(fix_path):
print "Unable to find required module library: '{0}'".format(p)
print "Please provide the correct path using TREX_STL_EXT_PATH variable"
- print "current path used: '{0}'".format(TREX_STL_EXT_PATH)
+ print "current path used: '{0}'".format(fix_path)
exit(0)
sys.path.insert(1, full_path)
+ # platform depdendant modules
+ is_64bit = platform.architecture()[0] == '64bit'
+ is_python3 = (sys.version_info >= (3, 0))
+ is_cel = os.path.exists('/etc/system-profile')
+
+ platform_path = "{0}/{1}/{2}".format('cel59' if is_cel else 'fedora18',
+ 'python3' if is_python3 else 'python2',
+ '64bit' if is_64bit else '32bit')
+
+ for p in platform_modules_list:
+ full_path = os.path.join(TREX_STL_EXT_PATH, p, platform_path)
+ fix_path = os.path.normcase(full_path)
+
+ if not os.path.exists(fix_path):
+ print "Unable to find required platfrom dependant module library: '{0}'".format(p)
+ print "platform dependant path used was '{0}'".format(fix_path)
+ exit(0)
+
+ sys.path.insert(1, full_path)
+
+
-# TODO; REFACTOR THIS....it looks horrible
-def import_platform_dirs ():
- # handle platform dirs
-
- # try fedora 18 first and then cel5.9
- # we are using the ZMQ module to determine the right platform
-
- full_path = os.path.join(TREX_STL_EXT_PATH, 'platform/fedora18')
- fix_path = os.path.normcase(full_path)
- sys.path.insert(0, full_path)
- try:
- # try to import and delete it from the namespace
- import zmq
- del zmq
- return
- except:
- sys.path.pop(0)
- pass
-
- full_path = os.path.join(TREX_STL_EXT_PATH, 'platform/cel59')
- fix_path = os.path.normcase(full_path)
- sys.path.insert(0, full_path)
- try:
- # try to import and delete it from the namespace
- import zmq
- del zmq
- return
- except:
- sys.path.pop(0)
- pass
-
- full_path = os.path.join(TREX_STL_EXT_PATH, 'platform/cel59/32bit')
- fix_path = os.path.normcase(full_path)
- sys.path.insert(0, full_path)
- try:
- # try to import and delete it from the namespace
- import zmq
- del zmq
- return
-
- except:
- sys.path.pop(0)
- sys.modules['zmq'] = None
- warnings.warn("unable to determine platform type for ZMQ import")
-
-
-import_module_list(CLIENT_UTILS_MODULES)
-import_platform_dirs()
+import_module_list(CLIENT_UTILS_MODULES, CLIENT_PLATFORM_MODULES)