diff options
Diffstat (limited to 'scripts/automation')
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) |