summaryrefslogtreecommitdiffstats
path: root/scripts/automation/regression/stateful_tests/trex_general_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/automation/regression/stateful_tests/trex_general_test.py')
-rwxr-xr-xscripts/automation/regression/stateful_tests/trex_general_test.py73
1 files changed, 62 insertions, 11 deletions
diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py
index f6d2b917..4453fd94 100755
--- a/scripts/automation/regression/stateful_tests/trex_general_test.py
+++ b/scripts/automation/regression/stateful_tests/trex_general_test.py
@@ -28,6 +28,7 @@ from nose.plugins.skip import SkipTest
import trex
from trex import CTRexScenario
import misc_methods
+import pprint
import sys
import os
# from CPlatformUnderTest import *
@@ -60,6 +61,7 @@ class CTRexGeneral_Test(unittest.TestCase):
self.trex_crashed = CTRexScenario.trex_crashed
self.modes = CTRexScenario.modes
self.GAManager = CTRexScenario.GAManager
+ self.elk = CTRexScenario.elk
self.no_daemon = CTRexScenario.no_daemon
self.skipping = False
self.fail_reasons = []
@@ -70,6 +72,21 @@ class CTRexGeneral_Test(unittest.TestCase):
self.is_VM = True if 'VM' in self.modes else False
if not CTRexScenario.is_init:
+ #update elk const object
+ if self.elk:
+ setup = CTRexScenario.elk_info['info']['setup']
+
+ if self.is_loopback :
+ setup['dut'] = 'loopback'
+ else:
+ setup['dut'] = 'router'
+
+ if self.is_VM:
+ setup['baremetal'] = False
+ setup['hypervisor'] = 'ESXi' #TBD
+ else:
+ setup['baremetal'] = True
+
if self.trex and not self.no_daemon: # stateful
CTRexScenario.trex_version = self.trex.get_trex_version()
if not self.is_loopback:
@@ -81,8 +98,12 @@ class CTRexGeneral_Test(unittest.TestCase):
CTRexScenario.router.load_platform_data_from_file(device_cfg)
CTRexScenario.router.launch_connection(device_cfg)
if CTRexScenario.router_cfg['forceImageReload']:
- running_image = CTRexScenario.router.get_running_image_details()['image']
+ image_d = CTRexScenario.router.get_running_image_details();
+ running_image = image_d['image']
print('Current router image: %s' % running_image)
+ if self.elk:
+ setup['dut'] = image_d.get('model','router');
+ print('Current router model : %s' % setup['dut'])
needed_image = device_cfg.get_image_name()
if not CTRexScenario.router.is_image_matches(needed_image):
print('Setting router image: %s' % needed_image)
@@ -107,7 +128,9 @@ class CTRexGeneral_Test(unittest.TestCase):
# raise RuntimeError('CTRexScenario class is not initialized!')
self.router = CTRexScenario.router
-
+ def get_elk_obj (self):
+ obj=trex.copy_elk_info ()
+ return (obj);
# def assert_dict_eq (self, dict, key, val, error=''):
# v1 = int(dict[key]))
@@ -142,9 +165,11 @@ class CTRexGeneral_Test(unittest.TestCase):
def check_CPU_benchmark (self, trex_res, err = 25, minimal_cpu = 10, maximal_cpu = 85):
cpu_util = trex_res.get_avg_steady_state_value('trex-global.data.m_cpu_util_raw')
trex_tx_bps = trex_res.get_avg_steady_state_value('trex-global.data.m_tx_bps')
+ trex_tx_pps = trex_res.get_avg_steady_state_value('trex-global.data.m_tx_pps')
expected_norm_cpu = self.get_benchmark_param('bw_per_core')
cores = self.get_benchmark_param('cores')
ports_count = trex_res.get_ports_count()
+ total_dp_cores = cores * (ports_count/2);
if not (cpu_util and ports_count and cores):
print("Can't calculate CPU benchmark, need to divide by zero: cpu util: %s, ports: %s, cores: %s" % (cpu_util, ports_count, cores))
test_norm_cpu = -1
@@ -172,16 +197,42 @@ class CTRexGeneral_Test(unittest.TestCase):
#if calc_error_precent > err and cpu_util > 10:
# self.fail('Excepted bw_per_core ratio: %s, got: %g' % (expected_norm_cpu, round(test_norm_cpu)))
+ trex_tx_gbps = trex_tx_bps/1e9
+ trex_tx_mpps = trex_tx_pps/1e6
+
+ trex_tx_gbps_pc = trex_tx_gbps*100.0/(cpu_util*total_dp_cores);
+ trex_tx_mpps_pc = trex_tx_mpps*100.0/(cpu_util*total_dp_cores)
+
+ trex_tx_pckt = trex_res.get_last_value("trex-global.data.m_total_tx_pkts")
+ trex_drops = trex_res.get_total_drops()
+ trex_drop_precent = trex_drops *100.0/trex_tx_pckt;
+
# report benchmarks
- if self.GAManager:
- try:
- pass
- #setup_test = '%s.%s' % (CTRexScenario.setup_name, self.get_name())
- #self.GAManager.gaAddAction(Event = 'stateful_test', action = setup_test, label = 'bw_per_core', value = int(test_norm_cpu))
- #self.GAManager.gaAddAction(Event = 'stateful_test', action = setup_test, label = 'bw_per_core_exp', value = int(expected_norm_cpu))
- #self.GAManager.emptyAndReportQ()
- except Exception as e:
- print('Sending GA failed: %s' % e)
+ if self.elk:
+ elk_obj = self.get_elk_obj()
+ print("Reporting to elk")
+ elk_obj['test']={ "name" : self.get_name(),
+ "type" : "stateful",
+ "cores" : total_dp_cores,
+ "cpu%" : cpu_util,
+ "mpps" : (trex_tx_mpps),
+ "streams_count" :1,
+ "mpps_pc" : (trex_tx_mpps_pc),
+ "gbps_pc" : (trex_tx_gbps_pc),
+ "gbps" : (trex_tx_gbps),
+ "kcps" : (trex_res.get_last_value("trex-global.data.m_tx_cps")/1000.0),
+ "avg-pktsize" : round((1000.0*trex_tx_gbps/(8.0*trex_tx_mpps))),
+ "latecny" : { "min" : min(trex_res.get_min_latency().values()),
+ "max" : max(trex_res.get_max_latency().values()),
+ "avr" : max(trex_res.get_avg_latency().values()),
+ "jitter" : max(trex_res.get_jitter_latency().values()),
+ "max-win" : max(trex_res.get_avg_window_latency ().values()),
+ "drop-rate" :trex_drop_precent
+ }
+ };
+ pprint.pprint(elk_obj['test']);
+ self.elk.perf.push_data(elk_obj)
+
def check_results_gt (self, res, name, val):
if res is None: