From 420216e583706fbd7bf214818fcce0143a05e982 Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Thu, 12 Jan 2017 13:47:39 +0200 Subject: add elk Signed-off-by: Hanoh Haim --- .../regression/stateful_tests/trex_general_test.py | 66 ++++++++++++++++++---- 1 file changed, 56 insertions(+), 10 deletions(-) (limited to 'scripts/automation/regression/stateful_tests/trex_general_test.py') diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py index f6d2b917..24c38783 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 = [] @@ -69,6 +71,20 @@ class CTRexGeneral_Test(unittest.TestCase): self.is_virt_nics = True if 'virt_nics' in self.modes else False self.is_VM = True if 'VM' in self.modes else False + #update elk const object + 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 not CTRexScenario.is_init: if self.trex and not self.no_daemon: # stateful CTRexScenario.trex_version = self.trex.get_trex_version() @@ -82,6 +98,7 @@ class CTRexGeneral_Test(unittest.TestCase): CTRexScenario.router.launch_connection(device_cfg) if CTRexScenario.router_cfg['forceImageReload']: running_image = CTRexScenario.router.get_running_image_details()['image'] + setup['dut'] =CTRexScenario.router.get_running_image_details()['model'] print('Current router image: %s' % running_image) needed_image = device_cfg.get_image_name() if not CTRexScenario.router.is_image_matches(needed_image): @@ -107,7 +124,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,6 +161,7 @@ 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() @@ -172,16 +192,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*cores); + trex_tx_mpps_pc = trex_tx_mpps*100.0/(cpu_util*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" : 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: -- cgit 1.2.3-korg From 120746eda312b1dab0460b15c113261bcb34690f Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Sun, 15 Jan 2017 19:48:36 +0200 Subject: hotfix for get model - does not work on regression Signed-off-by: Hanoh Haim --- scripts/automation/regression/stateful_tests/trex_general_test.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'scripts/automation/regression/stateful_tests/trex_general_test.py') diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py index 24c38783..64f27141 100755 --- a/scripts/automation/regression/stateful_tests/trex_general_test.py +++ b/scripts/automation/regression/stateful_tests/trex_general_test.py @@ -97,9 +97,11 @@ 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'] - setup['dut'] =CTRexScenario.router.get_running_image_details()['model'] + image_d=CTRexScenario.router.get_running_image_details(); + running_image = image_d['image'] + setup['dut'] =image_d.get('model','router'); print('Current router image: %s' % running_image) + 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) -- cgit 1.2.3-korg From c376394c69788778a32da16e140369df53cc0f45 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Mon, 16 Jan 2017 02:46:06 +0200 Subject: another fix to elk @ regression Change-Id: I6c97c9e6c9ec9f5b12e586c03daf2b53a540cefc Signed-off-by: Yaroslav Brustinov --- .../regression/stateful_tests/trex_general_test.py | 32 ++++++++++++---------- scripts/automation/regression/trex_unit_test.py | 1 + 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'scripts/automation/regression/stateful_tests/trex_general_test.py') diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py index 64f27141..68dde009 100755 --- a/scripts/automation/regression/stateful_tests/trex_general_test.py +++ b/scripts/automation/regression/stateful_tests/trex_general_test.py @@ -71,21 +71,22 @@ class CTRexGeneral_Test(unittest.TestCase): self.is_virt_nics = True if 'virt_nics' in self.modes else False self.is_VM = True if 'VM' in self.modes else False - #update elk const object - setup = CTRexScenario.elk_info['info']['setup'] + 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_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.is_VM: + setup['baremetal'] = False + setup['hypervisor'] = 'ESXi' #TBD + else: + setup['baremetal'] = True - if not CTRexScenario.is_init: if self.trex and not self.no_daemon: # stateful CTRexScenario.trex_version = self.trex.get_trex_version() if not self.is_loopback: @@ -97,11 +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']: - image_d=CTRexScenario.router.get_running_image_details(); + image_d = CTRexScenario.router.get_running_image_details(); running_image = image_d['image'] - setup['dut'] =image_d.get('model','router'); print('Current router image: %s' % running_image) - print('Current router model : %s' % setup['dut']) + 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) diff --git a/scripts/automation/regression/trex_unit_test.py b/scripts/automation/regression/trex_unit_test.py index 5bfe8585..c1fc416b 100755 --- a/scripts/automation/regression/trex_unit_test.py +++ b/scripts/automation/regression/trex_unit_test.py @@ -30,6 +30,7 @@ import outer_packages import datetime import nose from nose.plugins import Plugin +from nose.plugins.xunit import escape_cdata from nose.selector import Selector from nose.exc import SkipTest from nose.pyversion import force_unicode, format_exception -- cgit 1.2.3-korg From e1538ec8fac6b17b609cad66fe2662df1b6cd20b Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Mon, 16 Jan 2017 14:18:09 +0200 Subject: fix statful total dp cores calculation Signed-off-by: Hanoh Haim --- scripts/automation/regression/stateful_tests/trex_general_test.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'scripts/automation/regression/stateful_tests/trex_general_test.py') diff --git a/scripts/automation/regression/stateful_tests/trex_general_test.py b/scripts/automation/regression/stateful_tests/trex_general_test.py index 68dde009..4453fd94 100755 --- a/scripts/automation/regression/stateful_tests/trex_general_test.py +++ b/scripts/automation/regression/stateful_tests/trex_general_test.py @@ -169,6 +169,7 @@ class CTRexGeneral_Test(unittest.TestCase): 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 @@ -199,8 +200,8 @@ class CTRexGeneral_Test(unittest.TestCase): 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*cores); - trex_tx_mpps_pc = trex_tx_mpps*100.0/(cpu_util*cores) + 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() @@ -212,7 +213,7 @@ class CTRexGeneral_Test(unittest.TestCase): print("Reporting to elk") elk_obj['test']={ "name" : self.get_name(), "type" : "stateful", - "cores" : cores, + "cores" : total_dp_cores, "cpu%" : cpu_util, "mpps" : (trex_tx_mpps), "streams_count" :1, -- cgit 1.2.3-korg