From 50c367912e140117c6fb9f8a409fc1e75659d1cb Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 14:33:10 -0600 Subject: [PATCH 01/79] ct_us_001.json : update the wificapacity to more then 1 station Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 34 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 477e8d44..8d9bc496 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -15,7 +15,7 @@ "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", "dut_bssid": "3c:7c:3f:55:4d:64", - "test_timeout": 200, + "test_timeout": 360, "load_blank_db": false, "load_factory_default_db": true, "load_custom_db": false, @@ -75,8 +75,8 @@ "suite_l3":{ "test_l3_longevity":{"enabled":"TRUE","load_db":"skip","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, - "suite_wc_dp":{ - "CT-US-001_create_chamberview_dut_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "ct_us_001":{ + "CT-US-001_create_chamberview_dut_asus11ax_5":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", @@ -84,25 +84,32 @@ " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ] }, - "CT-US-001_create_chamberview_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy1_sta16":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy3,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 16 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_wifi_capacity_ATH10K(9984)":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta16":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", - " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan1", + " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_dataplane_ATH10K(9984)":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-001_create_chamberview_wiphy1_ATH10K(9984)_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ct-us-001-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" + ] + }, + "CT-US-001_dataplane_wiphy1_ATH10K(9984)_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan1", @@ -113,7 +120,7 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_create_chamberview_dut_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-001_create_chamberview_dut_asus11ax_5_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ "--lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", @@ -121,16 +128,15 @@ " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ] }, - "CT-US-001_create_chamberview_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy3,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\" " ] }, - "CT-US-001_wifi_capacity_AX210":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-001_wifi_capacity_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", @@ -139,7 +145,7 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_dataplane_AX210":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-001_dataplane_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan3", From 3efcac76fbf10adfedb7fb6462a5c3915648dacf Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 15:48:24 -0600 Subject: [PATCH 02/79] lf_check.py : added ability to set timeout on individual tests Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 5fe9fd9a..76eef354 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -121,6 +121,7 @@ class lf_check(): self.csv_results_column_headers = "" self.logger = logging.getLogger(__name__) self.test_timeout = 120 + self.test_timeout_default = 120 self.use_blank_db = "FALSE" self.use_factory_default_db = "FALSE" self.use_custom_db = "FALSE" @@ -386,6 +387,7 @@ blog: http://{blog}:2368 def read_test_parameters(self): if "test_timeout" in self.json_data["test_parameters"]: self.test_timeout = self.json_data["test_parameters"]["test_timeout"] + self.test_timeout_default = self.test_timeout else: self.logger.info("test_timeout not in test_parameters json") exit(1) @@ -725,7 +727,7 @@ blog: http://{blog}:2368 self.logger.info("test: {} skipped".format(test)) # load the default database elif self.test_dict[test]['enabled'] == "TRUE": - # if args key has a value of an empty scring then need to manipulate the args_list to args + # if args key has a value of an empty string then need to manipulate the args_list to args # list does not have replace only stings do to args_list will be joined and converted to a string and placed # in args. Then the replace below will work. if self.test_dict[test]['args'] == "": @@ -819,6 +821,12 @@ blog: http://{blog}:2368 if 'BLOG_FLAG' in self.test_dict[test]['args']: self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('BLOG_FLAG',self.blog_flag) + if 'timeout' in self.test_dict[test]: + self.logger.info("timeout : {}".format(self.test_dict[test]['timeout'])) + self.test_timeout = int(self.test_dict[test]['timeout']) + else: + self.test_timeout = self.test_timeout_default + if 'load_db' in self.test_dict[test]: self.logger.info("load_db : {}".format(self.test_dict[test]['load_db'])) if str(self.test_dict[test]['load_db']).lower() != "none" and str(self.test_dict[test]['load_db']).lower() != "skip": From 38fefdd1003e6f7cd45289e2a240846290f4c2c4 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 16:17:53 -0600 Subject: [PATCH 03/79] ct_us_001.json : wave2 radio ATH10K 9984 set to 64 sttations Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 8d9bc496..9c74a54e 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -88,7 +88,7 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 16 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, From 4a172f7655d6aa1ab5f0a8f02e9fe3d58dec633c Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 16:48:25 -0600 Subject: [PATCH 04/79] ct_us_001.json : testing the individual timeout per test Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 9c74a54e..4c5743d4 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -15,7 +15,7 @@ "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", "dut_bssid": "3c:7c:3f:55:4d:64", - "test_timeout": 360, + "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, "load_custom_db": false, @@ -84,7 +84,7 @@ " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ] }, - "CT-US-001_create_chamberview_wiphy1_sta16":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy1_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", @@ -92,7 +92,7 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta16":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta64":{"enabled":"TRUE","timeout":"360","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", From 907155c6df1d2a2f9b6455b214634721dfa7e0a4 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 17:56:21 -0600 Subject: [PATCH 05/79] lf_check.py : added support for bssid_2g bssid_5g bssid_6g Also added support of the specific dut parameters as hw, sw, serial number updated ct_us_001.json for these parameters Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 12 +++---- py-scripts/tools/lf_check.py | 58 ++++++++++++++++++++++++++++++--- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 4c5743d4..40e58fec 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -14,7 +14,7 @@ "lf_mgr_ip": "192.168.100.116", "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", - "dut_bssid": "3c:7c:3f:55:4d:64", + "dut_bssid_5G": "3c:7c:3f:55:4d:64", "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, @@ -79,9 +79,9 @@ "CT-US-001_create_chamberview_dut_asus11ax_5":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", - " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", - " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", - " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version '' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ] }, "CT-US-001_create_chamberview_wiphy1_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", @@ -123,8 +123,8 @@ "CT-US-001_create_chamberview_dut_asus11ax_5_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ "--lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", - " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", - " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=3c:7c:3f:55:4d:64'", + " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ] }, diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 76eef354..b99a000e 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -131,13 +131,22 @@ class lf_check(): self.host_ip_test = None self.email_title_txt = "" self.email_txt = "" + + # lanforge configuration self.lf_mgr_ip = "192.168.0.102" self.lf_mgr_port = "" self.lf_mgr_user = "lanforge" self.lf_mgr_pass = "lanforge" - self.dut_name = "" # "ASUSRT-AX88U" note this is not dut_set_name - self.dut_bssid = "" #"3c:7c:3f:55:4d:64" - this is the mac for the radio this may be seen with a scan + # dut configuration + self.dut_name = "DUT_NAME" # "ASUSRT-AX88U" note this is not dut_set_name + self.dut_hw = "DUT_HW" + self.dut_sw = "DUT_SW" + self.dut_model = "DUT_MODEL" + self.dut_serial = "DUT_SERIAL" + self.dut_bssid_2G = "BSSID_2G" #"3c:7c:3f:55:4d:64" - this is the mac for the 2.4G radio this may be seen with a scan + self.dut_bssid_5G = "BSSID_5G" #"3c:7c:3f:55:4d:64" - this is the mac for the 5G radio this may be seen with a scan + self.dut_bssid_6G = "BSSID_6G" #"3c:7c:3f:55:4d:64" - this is the mac for the 6G radio this may be seen with a scan #NOTE: My influx token is unlucky and starts with a '-', but using the syntax below # with '=' right after the argument keyword works as hoped. # --influx_token= @@ -452,10 +461,34 @@ blog: http://{blog}:2368 self.dut_name = self.json_data["test_parameters"]["dut_name"] else: self.logger.info("dut_name not in test_parameters json") - if "dut_bssid" in self.json_data["test_parameters"]: - self.dut_bssid = self.json_data["test_parameters"]["dut_bssid"] + if "dut_hw" in self.json_data["test_parameters"]: + self.dut_hw = self.json_data["test_parameters"]["dut_hw"] else: - self.logger.info("dut_bssid not in test_parameters json") + self.logger.info("dut_hw not in test_parameters json") + if "dut_sw" in self.json_data["test_parameters"]: + self.dut_sw = self.json_data["test_parameters"]["dut_sw"] + else: + self.logger.info("dut_sw not in test_parameters json") + if "dut_model" in self.json_data["test_parameters"]: + self.dut_model = self.json_data["test_parameters"]["dut_model"] + else: + self.logger.info("dut_model not in test_parameters json") + if "dut_serial" in self.json_data["test_parameters"]: + self.dut_serial = self.json_data["test_parameters"]["dut_serial"] + else: + self.logger.info("dut_serial not in test_parameters json") + if "dut_bssid_2G" in self.json_data["test_parameters"]: + self.dut_bssid_2G = self.json_data["test_parameters"]["dut_bssid_2G"] + else: + self.logger.info("dut_bssid_2G not in test_parameters json") + if "dut_bssid_5G" in self.json_data["test_parameters"]: + self.dut_bssid_5G = self.json_data["test_parameters"]["dut_bssid_5G"] + else: + self.logger.info("dut_bssid_5G not in test_parameters json") + if "dut_bssid_6G" in self.json_data["test_parameters"]: + self.dut_bssid_6G = self.json_data["test_parameters"]["dut_bssid_6G"] + else: + self.logger.info("dut_bssid_6G not in test_parameters json") def read_test_network(self): if "http_test_ip" in self.json_data["test_network"]: @@ -753,8 +786,23 @@ blog: http://{blog}:2368 self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('LF_MGR_IP',self.lf_mgr_ip) if 'LF_MGR_PORT' in self.test_dict[test]['args']: self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('LF_MGR_PORT',self.lf_mgr_port) + if 'DUT_NAME' in self.test_dict[test]['args']: self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_NAME',self.dut_name) + if 'DUT_HW' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_HW',self.dut_hw) + if 'DUT_SW' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_SW',self.dut_sw) + if 'DUT_MODEL' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_MODEL',self.dut_model) + if 'DUT_SERIAL' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_SERIAL',self.dut_serial) + if 'DUT_BSSID_2G' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_BSSID_2G',self.dut_bssid_2g) + if 'DUT_BSSID_5G' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_BSSID_5G',self.dut_bssid_5g) + if 'DUT_BSSID_6G' in self.test_dict[test]['args']: + self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('DUT_BSSID_6G',self.dut_bssid_6g) if 'RADIO_USED' in self.test_dict[test]['args']: self.test_dict[test]['args'] = self.test_dict[test]['args'].replace('RADIO_USED',self.radio_lf) From 407505abfab5c7369bb1b54cbc3e5c3df3681ef8 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 17:59:50 -0600 Subject: [PATCH 06/79] lf_check.py : fixed parameters for snake case Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index b99a000e..e2b51594 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -144,9 +144,9 @@ class lf_check(): self.dut_sw = "DUT_SW" self.dut_model = "DUT_MODEL" self.dut_serial = "DUT_SERIAL" - self.dut_bssid_2G = "BSSID_2G" #"3c:7c:3f:55:4d:64" - this is the mac for the 2.4G radio this may be seen with a scan - self.dut_bssid_5G = "BSSID_5G" #"3c:7c:3f:55:4d:64" - this is the mac for the 5G radio this may be seen with a scan - self.dut_bssid_6G = "BSSID_6G" #"3c:7c:3f:55:4d:64" - this is the mac for the 6G radio this may be seen with a scan + self.dut_bssid_2g = "BSSID_2G" #"3c:7c:3f:55:4d:64" - this is the mac for the 2.4G radio this may be seen with a scan + self.dut_bssid_5g = "BSSID_5G" #"3c:7c:3f:55:4d:64" - this is the mac for the 5G radio this may be seen with a scan + self.dut_bssid_6g = "BSSID_6G" #"3c:7c:3f:55:4d:64" - this is the mac for the 6G radio this may be seen with a scan #NOTE: My influx token is unlucky and starts with a '-', but using the syntax below # with '=' right after the argument keyword works as hoped. # --influx_token= @@ -477,18 +477,18 @@ blog: http://{blog}:2368 self.dut_serial = self.json_data["test_parameters"]["dut_serial"] else: self.logger.info("dut_serial not in test_parameters json") - if "dut_bssid_2G" in self.json_data["test_parameters"]: + if "dut_bssid_2g" in self.json_data["test_parameters"]: self.dut_bssid_2G = self.json_data["test_parameters"]["dut_bssid_2G"] else: self.logger.info("dut_bssid_2G not in test_parameters json") - if "dut_bssid_5G" in self.json_data["test_parameters"]: - self.dut_bssid_5G = self.json_data["test_parameters"]["dut_bssid_5G"] + if "dut_bssid_5g" in self.json_data["test_parameters"]: + self.dut_bssid_5G = self.json_data["test_parameters"]["dut_bssid_5g"] else: - self.logger.info("dut_bssid_5G not in test_parameters json") - if "dut_bssid_6G" in self.json_data["test_parameters"]: - self.dut_bssid_6G = self.json_data["test_parameters"]["dut_bssid_6G"] + self.logger.info("dut_bssid_5g not in test_parameters json") + if "dut_bssid_6g" in self.json_data["test_parameters"]: + self.dut_bssid_6g = self.json_data["test_parameters"]["dut_bssid_6g"] else: - self.logger.info("dut_bssid_6G not in test_parameters json") + self.logger.info("dut_bssid_6g not in test_parameters json") def read_test_network(self): if "http_test_ip" in self.json_data["test_network"]: From bf3baf802280595a1f64a1a82392cfd06c74601c Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 18:14:22 -0600 Subject: [PATCH 07/79] ct_us_002.json : updated for dut_bssid_5g and UPSTREAM_PORT Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 48 ++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 892d1a1e..ae0a9a8a 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -14,7 +14,7 @@ "lf_mgr_ip": "192.168.100.200", "lf_mgr_port": "8080", "dut_name": "Ruckus-R750", - "dut_bssid": "4c:b1:cd:18:e8:ec", + "dut_bssid_5g": "4c:b1:cd:18:e8:ec", "test_timeout": 1200, "load_blank_db": false, "load_factory_default_db": true, @@ -39,7 +39,7 @@ "security_used": "wpa2", "num_sta": 4, "col_names": "name,tx_byptes,rx_bytes,dropped", - "upstream_port": "eth2" + "upstream_port": "1.1.eth2" }, "test_database":{ "database_config": "True", @@ -73,14 +73,14 @@ }, "test_suites":{ "suite_two":{ - "test_l3_longevity":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==ct523c-vap,ssid_pw==ct523c-vap,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} + "test_l3_longevity":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port UPSTREAM_PORT --radio 'radio==wiphy1,stations==4,ssid==ct523c-vap,ssid_pw==ct523c-vap,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, "auto_suite":{ "CT-US-002_create_chamberview_dut_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", - " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", - " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ]}, "CT-US-002_create_chamberview_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", @@ -98,7 +98,7 @@ "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", - " --instance_name ap-auto-instance --config_name test_con --upstream 1.1.eth1", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", " --dut5_0 'DUT_NAME lanforge DUT_BSSID (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 0", @@ -123,32 +123,39 @@ "CT-US-002_create_chamberview_dut_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", - " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", - " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_ATH10k_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, "CT-US-002_wifi_capacity_ATH10k(9984)":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", - " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", - " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan1", + " --upstream UPSTREAM_PORT --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, + "CT-US-002_create_chamberview_ATH10k_sta01":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, "CT-US-002_dataplane_ATH10k(9984) CT-US-002":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", - " --config_name test_con --upstream 1.1.eth2 --dut DUT_NAME --duration 30s --station 1.1.wlan1", + " --config_name test_con --upstream UPSTREAM_PORT --dut DUT_NAME --duration 30s --station 1.1.wlan1", " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20' ", " --raw_line 'spatial_streams: 4' --pull_report --local_lf_report_dir REPORT_PATH ", @@ -159,15 +166,14 @@ "CT-US-002_create_chamberview_dut_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", - " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", - " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=4c:b1:cd:18:e8:ec'", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_AX200_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] @@ -175,7 +181,7 @@ "CT-US-002_wifi_capacity_AX200 CT-US-002":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", - " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --upstream UPSTREAM_PORT --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan4 ", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -184,7 +190,7 @@ "CT-US-002_dataplane_AX200":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", - " --config_name test_con --upstream 1.1.eth2 --dut DUT_NAME --duration 30s --station 1.1.wlan4", + " --config_name test_con --upstream UPSTREAM_PORT --dut DUT_NAME --duration 30s --station 1.1.wlan4", " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", " --raw_line 'spatial_streams: 4' --pull_report --local_lf_report_dir REPORT_PATH", @@ -198,7 +204,7 @@ "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", - "--instance_name ap-auto-instance --config_name test_con --upstream 1.1.eth1", + "--instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", "--dut5_0 'DUT_NAME lanforge DUT_BSSID (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID (1)'", "--max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", "--radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", From e265d40954493d94c376b73bc77ebd896c4d57fa Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 18:29:06 -0600 Subject: [PATCH 08/79] ct_us_002.json : added DUT_BSSID_5G Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index ae0a9a8a..a0a0bfbd 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -99,7 +99,7 @@ "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", - " --dut5_0 'DUT_NAME lanforge DUT_BSSID (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID (1)'", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 0", " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", @@ -205,7 +205,7 @@ "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", "--instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", - "--dut5_0 'DUT_NAME lanforge DUT_BSSID (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID (1)'", + "--dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", "--max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", "--radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", "--set 'Multi Band Performance' 1 --set 'Skip 2.4 Ghz Tests' 1 --pull_report --local_lf_report_dir REPORT_PATH", From 2ef3406de7b977ff515cfe53773a74e275c4b451 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 18:57:28 -0600 Subject: [PATCH 09/79] lf_check.py : bug fix for setting the DUT_BSSID_5G Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index e2b51594..5b4d8c74 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -139,14 +139,14 @@ class lf_check(): self.lf_mgr_pass = "lanforge" # dut configuration - self.dut_name = "DUT_NAME" # "ASUSRT-AX88U" note this is not dut_set_name - self.dut_hw = "DUT_HW" - self.dut_sw = "DUT_SW" - self.dut_model = "DUT_MODEL" - self.dut_serial = "DUT_SERIAL" - self.dut_bssid_2g = "BSSID_2G" #"3c:7c:3f:55:4d:64" - this is the mac for the 2.4G radio this may be seen with a scan - self.dut_bssid_5g = "BSSID_5G" #"3c:7c:3f:55:4d:64" - this is the mac for the 5G radio this may be seen with a scan - self.dut_bssid_6g = "BSSID_6G" #"3c:7c:3f:55:4d:64" - this is the mac for the 6G radio this may be seen with a scan + self.dut_name = "DUT_NAME_NOT_SET" # "ASUSRT-AX88U" note this is not dut_set_name + self.dut_hw = "DUT_HW_NOT_SET" + self.dut_sw = "DUT_SW_NOT_SET" + self.dut_model = "DUT_MODEL_NOT_SET" + self.dut_serial = "DUT_SERIAL_NOT_SET" + self.dut_bssid_2g = "BSSID_2G_NOT_SET" #"3c:7c:3f:55:4d:64" - this is the mac for the 2.4G radio this may be seen with a scan + self.dut_bssid_5g = "BSSID_5G_NOT_SET" #"3c:7c:3f:55:4d:64" - this is the mac for the 5G radio this may be seen with a scan + self.dut_bssid_6g = "BSSID_6G_NOT_SET" #"3c:7c:3f:55:4d:64" - this is the mac for the 6G radio this may be seen with a scan #NOTE: My influx token is unlucky and starts with a '-', but using the syntax below # with '=' right after the argument keyword works as hoped. # --influx_token= @@ -478,11 +478,11 @@ blog: http://{blog}:2368 else: self.logger.info("dut_serial not in test_parameters json") if "dut_bssid_2g" in self.json_data["test_parameters"]: - self.dut_bssid_2G = self.json_data["test_parameters"]["dut_bssid_2G"] + self.dut_bssid_2g = self.json_data["test_parameters"]["dut_bssid_2g"] else: self.logger.info("dut_bssid_2G not in test_parameters json") if "dut_bssid_5g" in self.json_data["test_parameters"]: - self.dut_bssid_5G = self.json_data["test_parameters"]["dut_bssid_5g"] + self.dut_bssid_5g = self.json_data["test_parameters"]["dut_bssid_5g"] else: self.logger.info("dut_bssid_5g not in test_parameters json") if "dut_bssid_6g" in self.json_data["test_parameters"]: From 99b8af88ad8a62576c32a8a953bc2dd8957a784b Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 21:13:51 -0600 Subject: [PATCH 10/79] ct_us_001.json : naming fix Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 40e58fec..169214e4 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -75,7 +75,7 @@ "suite_l3":{ "test_l3_longevity":{"enabled":"TRUE","load_db":"skip","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, - "ct_us_001":{ + "suite_wc_dp":{ "CT-US-001_create_chamberview_dut_asus11ax_5":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", From bad7e1b3f60600c1b59bb3aee0d5eade1c3a3a44 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 21:29:31 -0600 Subject: [PATCH 11/79] ct_us_001.json , ct_us_002.json : using defaults for the DUT Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 4 ++-- py-scripts/tools/ct_us_002.json | 37 ++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 169214e4..0c78d535 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -81,7 +81,7 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", - " --sw_version '' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ] }, "CT-US-001_create_chamberview_wiphy1_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", @@ -125,7 +125,7 @@ "--lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", - " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ] }, "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index a0a0bfbd..54a9e3e2 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -125,7 +125,7 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", - " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, "CT-US-002_create_chamberview_ATH10k_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ @@ -168,7 +168,7 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", - " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, "CT-US-002_create_chamberview_AX200_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", "args_list":[ @@ -198,20 +198,37 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, + "CT-US-002_create_chamberview_dut_auto":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-002_create_chamberview_auto":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, "CT-US-002_lf_ap_auto_test": { "enabled": "TRUE", "command": "lf_ap_auto_test.py", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", - "--instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", - "--dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", - "--max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", - "--radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", - "--set 'Multi Band Performance' 1 --set 'Skip 2.4 Ghz Tests' 1 --pull_report --local_lf_report_dir REPORT_PATH", - "--test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", - "--influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" - + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 0", + " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, "GHOST":{"enabled":"TRUE","load_db":"skip","command":"ghost_profile.py","args":"", From abb7e3fff3aa30c1b7dd0a1de5d275d3be3bd81a Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 22:03:20 -0600 Subject: [PATCH 12/79] ct_us_002.json : disabled the ap_auto, also formatting changes Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 86 +++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 15 deletions(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 54a9e3e2..a8aaf1bb 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -76,14 +76,22 @@ "test_l3_longevity":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port UPSTREAM_PORT --radio 'radio==wiphy1,stations==4,ssid==ct523c-vap,ssid_pw==ct523c-vap,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, "auto_suite":{ - "CT-US-002_create_chamberview_dut_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-002_create_chamberview_dut_1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", @@ -109,7 +117,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "GHOST":{"enabled":"TRUE","load_db":"skip","command":"ghost_profile.py","args":"", + "GHOST":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"ghost_profile.py", + "args":"", "args_list":[ " --ghost_token BLOG_TOKEN --ghost_host BLOG_HOST --authors BLOG_AUTHORS --customer BLOG_CUSTOMER", " --user_push BLOG_USER_PUSH --password BLOG_PASSWORD_PUSH BLOG_FLAG --grafana_token DASHBOARD_TOKEN", @@ -120,14 +132,22 @@ } }, "suite_wc_dp":{ - "CT-US-002_create_chamberview_dut_1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-002_create_chamberview_dut_1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_ATH10k_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_ATH10k_sta64":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", @@ -135,7 +155,11 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, - "CT-US-002_wifi_capacity_ATH10k(9984)":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-002_wifi_capacity_ATH10k(9984)":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream UPSTREAM_PORT --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", @@ -144,7 +168,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_create_chamberview_ATH10k_sta01":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_ATH10k_sta01":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", @@ -152,7 +180,11 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, - "CT-US-002_dataplane_ATH10k(9984) CT-US-002":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-002_dataplane_ATH10k(9984) CT-US-002":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream UPSTREAM_PORT --dut DUT_NAME --duration 30s --station 1.1.wlan1", @@ -163,14 +195,22 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_create_chamberview_dut_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-002_create_chamberview_dut_2":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_AX200_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_AX200_sta1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", @@ -178,7 +218,11 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, - "CT-US-002_wifi_capacity_AX200 CT-US-002":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-002_wifi_capacity_AX200 CT-US-002":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream UPSTREAM_PORT --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", @@ -187,7 +231,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_dataplane_AX200":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-002_dataplane_AX200":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream UPSTREAM_PORT --dut DUT_NAME --duration 30s --station 1.1.wlan4", @@ -198,14 +246,22 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_create_chamberview_dut_auto":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-002_create_chamberview_dut_auto":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_auto":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-002_create_chamberview_auto":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", @@ -215,7 +271,7 @@ ] }, "CT-US-002_lf_ap_auto_test": { - "enabled": "TRUE", + "enabled": "FALSE", "command": "lf_ap_auto_test.py", "args": "", "args_list":[ From 32ff2d70112ea8fb5b6112ea3603362a29b614b8 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 15 Jul 2021 22:54:59 -0600 Subject: [PATCH 13/79] ct_us_002.json : dataplane only uses one station Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index a8aaf1bb..0baf2b53 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -176,7 +176,7 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, From 3454bfd726abc6c5671bc874bb8a1e1208d95c11 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 16 Jul 2021 13:31:19 -0600 Subject: [PATCH 14/79] lf_csv.py : added the kpi headers and the kf_kpi_csv class this is an intial commit. Signed-off-by: Chuck SmileyRekiere --- py-scripts/lf_csv.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/py-scripts/lf_csv.py b/py-scripts/lf_csv.py index c7e7150b..c6a45ba7 100644 --- a/py-scripts/lf_csv.py +++ b/py-scripts/lf_csv.py @@ -4,6 +4,7 @@ NAME: lf_csv.py PURPOSE: Common Library for generating csv for LANforge output +KPI - Key Performance Indicators SETUP: /lanforge/html-reports directory needs to be present or output generated in local file @@ -18,10 +19,8 @@ COPYWRITE INCLUDE_IN_README ''' -import numpy as np import pandas as pd - class lf_csv: def __init__(self, _columns=['Stations', 'bk', 'be', 'vi', 'vo'], @@ -43,6 +42,18 @@ class lf_csv: print(csv_df) csv_df.to_csv(self.filename, index=False, encoding='utf-8', na_rep='NA', float_format='%.2f') +# this layout may need to change +class lf_kpi_csv: + def __init__(self, + _kpi_headers = ['Date','test-rig','test-tag','dut-hw-version','dut-sw-version','dut-model-num', + 'test-priority','test-id','short-description','pass/fail','numberic-score' + 'test details','Units','Graph-Group','Subtest-Pass','Subtest-Fail'], + _kpi_filename='kpi.csv' #Currently this is the only file name accepted + ): + self.kpi_headers = _kpi_headers + self.kpi_rows = "" + self.kpi_filename = _kpi_filename + if __name__ == "__main__": test = lf_csv() From 85054414a33c9d144cc6b92d40e0f212085b224d Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 16 Jul 2021 13:38:29 -0600 Subject: [PATCH 15/79] lf_csv.py : minor name change kpi_file from kpi_filename, the parameter may also contain path information Signed-off-by: Chuck SmileyRekiere --- py-scripts/lf_csv.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/lf_csv.py b/py-scripts/lf_csv.py index c6a45ba7..daa651eb 100644 --- a/py-scripts/lf_csv.py +++ b/py-scripts/lf_csv.py @@ -48,11 +48,11 @@ class lf_kpi_csv: _kpi_headers = ['Date','test-rig','test-tag','dut-hw-version','dut-sw-version','dut-model-num', 'test-priority','test-id','short-description','pass/fail','numberic-score' 'test details','Units','Graph-Group','Subtest-Pass','Subtest-Fail'], - _kpi_filename='kpi.csv' #Currently this is the only file name accepted + _kpi_file='kpi.csv' #Currently this is the only file name accepted ): self.kpi_headers = _kpi_headers self.kpi_rows = "" - self.kpi_filename = _kpi_filename + self.kpi_filename = _kpi_file if __name__ == "__main__": From 14de41b33a7e91fcc11e9c4112759885fde231c4 Mon Sep 17 00:00:00 2001 From: karthikaeyetea Date: Sat, 17 Jul 2021 11:01:17 +0530 Subject: [PATCH 16/79] sample report genaration with dynamic text-size, text-rotation and graph title for bar graph --- py-scripts/lf_report_test.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/py-scripts/lf_report_test.py b/py-scripts/lf_report_test.py index 4399da37..adedf1f9 100755 --- a/py-scripts/lf_report_test.py +++ b/py-scripts/lf_report_test.py @@ -97,7 +97,13 @@ if __name__ == "__main__": _graph_image_name="Bi-single_radio_2.4GHz", _label=["bi-downlink", "bi-uplink", 'uplink'], _color=['darkorange', 'forestgreen','blueviolet'], - _color_edge='red') + _color_edge='red', + _grp_title="Throughput for each clients", + _xaxis_step=5, + _show_bar_value=True, + _text_font=7, + _text_rotation=45, + _xticks_font=7) graph_png = graph.build_bar_graph() @@ -114,7 +120,8 @@ if __name__ == "__main__": _yaxis_name="y-axis", _graph_image_name="image_name1", _color=None, - _label=["s1", "s2", "s3"]) + _label=["s1", "s2", "s3"], + _enable_csv = False) graph_png = graph2.build_scatter_graph() print("graph name {}".format(graph_png)) @@ -129,7 +136,8 @@ if __name__ == "__main__": _yaxis_name="y-axis", _graph_image_name="image_name_map", _color=None, - _label=["s1", "s2"]) + _label=["s1", "s2"], + _enable_csv = False) graph_png = graph2.build_scatter_graph() print("graph name {}".format(graph_png)) @@ -144,7 +152,8 @@ if __name__ == "__main__": _yaxis_name="Login PASS/FAIL", _label=['Success', 'Fail', 'both'], _graph_image_name="login_pass_fail1", - _color=None) + _color=None, + _enable_csv = False) graph_png = graph.build_stacked_graph() @@ -163,7 +172,8 @@ if __name__ == "__main__": _label=['Success', 'Fail'], _graph_image_name="image_name_pass_fail", _color=["r", "g"], - _figsize=(9, 4)) + _figsize=(9, 4), + _enable_csv = False) graph_png = graph.build_horizontal_stacked_graph() From 5fb7d9569e12da62a278d59d1a136ce1a43aaff1 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 15:57:43 -0600 Subject: [PATCH 17/79] ct_us_001.json ct_us_002.json : shorten up the AP auto suite for debug Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 73 +++++++++++++++++++++++++++++++++ py-scripts/tools/ct_us_002.json | 4 +- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 0c78d535..79b2219c 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -75,6 +75,79 @@ "suite_l3":{ "test_l3_longevity":{"enabled":"TRUE","load_db":"skip","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, + "auto_suite":{ + "CT-US-002_create_chamberview_dut_1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-002_create_chamberview_1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, + "CT-US-002_lf_ap_auto_test": { + "enabled": "TRUE", + "command": "lf_ap_auto_test.py", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-002_lf_ap_auto_test_2": { + "enabled": "FALSE", + "command": "lf_ap_auto_test.py", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "GHOST":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"ghost_profile.py", + "args":"", + "args_list":[ + " --ghost_token BLOG_TOKEN --ghost_host BLOG_HOST --authors BLOG_AUTHORS --customer BLOG_CUSTOMER", + " --user_push BLOG_USER_PUSH --password BLOG_PASSWORD_PUSH BLOG_FLAG --grafana_token DASHBOARD_TOKEN", + " --grafana_host DASHBOARD_HOST --grafana_bucket DATABASE_BUCKET --parent_folder REPORT_PATH", + " --influx_host DATABASE_HOST --influx_org DATABASE_ORG --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET", + " --influx_tag DATABASE_TAG " + ] + } + }, "suite_wc_dp":{ "CT-US-001_create_chamberview_dut_asus11ax_5":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", "args_list":[ diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 0baf2b53..c98fb0f6 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -109,8 +109,8 @@ " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", - " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 0", - " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", From 8bb4e74b776ce161fc1489422e3c6b8c5f21c465 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 16:30:47 -0600 Subject: [PATCH 18/79] csv_to_influx.py : replace 'NaN' with '0' , NaN not accepted Not a Number by influx. Signed-off-by: Chuck SmileyRekiere --- py-scripts/csv_to_influx.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/py-scripts/csv_to_influx.py b/py-scripts/csv_to_influx.py index 8c126b0d..b0056a82 100755 --- a/py-scripts/csv_to_influx.py +++ b/py-scripts/csv_to_influx.py @@ -57,6 +57,8 @@ class CSVtoInflux(): # Submit data to the influx db if configured to do so. def post_to_influx(self): df = self.read_csv(self.target_csv) + for row in df: + row =[sub.replace('NaN','0') for sub in row] length = list(range(0, len(df[0]))) columns = dict(zip(df[0], length)) print('columns: %s' % columns) From 5aacc3363511dc37cb8afe2157dc0c8eca426cd6 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 16:40:25 -0600 Subject: [PATCH 19/79] ct_us_002.json : updated for other defaults Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index c98fb0f6..7faa40b9 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -22,7 +22,7 @@ "custom_db": "DFLT_ETH1_GEN", "email_list_production": "konikofi@candelatech.com,greearb@candelatech.com,logan.lipke@candelatech.com,dipti.dhond@candelatech.com,chuck.rekiere@candelatech.com,matthew@candelatech.com,iain.davidson@candelatech.com,jreynolds@candelatech.com", "host_ip_production": "192.168.100.201", - "email_list_test": "chuck.rekiere@candelatech.com,logan.lipke@candelatech.com,matthew.stidham@candelatech.com", + "email_list_test": "chuck.rekiere@candelatech.com", "host_ip_test": "192.168.100.201", "email_title_txt": "Lanforge QA Testing CT-US-002", "email_txt": "Lanforge QA Testing CT-US-002" @@ -85,7 +85,7 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", - " --sw_version '3.5.4' --hw_version 5.12.14+ --serial_num ct523c-3b7b --model_num DUT_NAME" + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, "CT-US-002_create_chamberview_1":{ "enabled":"TRUE", From 8e01f879b31cea76f876e0e8f8a1a16db8e0313e Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 16:54:55 -0600 Subject: [PATCH 20/79] ct_us_001.json : test name updates to reflect testbed Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 79b2219c..f9a71378 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -76,7 +76,7 @@ "test_l3_longevity":{"enabled":"TRUE","load_db":"skip","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, "auto_suite":{ - "CT-US-002_create_chamberview_dut_1":{ + "CT-US-001_create_chamberview_dut_ap":{ "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview_dut.py", @@ -87,7 +87,7 @@ " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ]}, - "CT-US-002_create_chamberview_1":{ + "CT-US-001_create_chamberview_ap":{ "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview.py", @@ -100,7 +100,7 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, - "CT-US-002_lf_ap_auto_test": { + "CT-US-001_lf_ap_auto_test": { "enabled": "TRUE", "command": "lf_ap_auto_test.py", "args": "", @@ -110,14 +110,14 @@ " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", - " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", - " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 1,", + " --set 'Throughput vs Pkt Size' 1 --set 'Capacity' 0 --set 'Band-Steering' 1 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_lf_ap_auto_test_2": { + "CT-US-001_lf_ap_auto_test_2": { "enabled": "FALSE", "command": "lf_ap_auto_test.py", "args": "", From 2b233f41d8c931271a699b68715e323fd4d80927 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 20:09:28 -0600 Subject: [PATCH 21/79] ct_us_001.json, ct_us_002.json : set timeouts for ap_auto Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 2 ++ py-scripts/tools/ct_us_002.json | 1 + 2 files changed, 3 insertions(+) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index f9a71378..8296a396 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -103,6 +103,7 @@ "CT-US-001_lf_ap_auto_test": { "enabled": "TRUE", "command": "lf_ap_auto_test.py", + "timeout":"4800", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", @@ -120,6 +121,7 @@ "CT-US-001_lf_ap_auto_test_2": { "enabled": "FALSE", "command": "lf_ap_auto_test.py", + "timeout":"4800", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 7faa40b9..30c90cd4 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -103,6 +103,7 @@ "CT-US-002_lf_ap_auto_test": { "enabled": "TRUE", "command": "lf_ap_auto_test.py", + "timeout":"4800", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", From 77399617ce86c82c4b275522b6b5b36e61019388 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 20:26:36 -0600 Subject: [PATCH 22/79] ct_us_002.json : ap_auto fix parameters Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 30c90cd4..4c30c38b 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -111,8 +111,8 @@ " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", - " --set 'Multi Band Performance' --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", - " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 1,", + " --set 'Throughput vs Pkt Size' 1 --set 'Capacity' 0 --set 'Band-Steering' 1 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" From e74612d54cd9656366579a7e8d6df98573cc4407 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 17 Jul 2021 22:21:16 -0600 Subject: [PATCH 23/79] ct_us_001.json ct_us_002.json : ap auto basic connect added to nightly Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 50 ++++++++++++++++++++++++++++++--- py-scripts/tools/ct_us_002.json | 13 +++++---- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 8296a396..36860051 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -103,7 +103,7 @@ "CT-US-001_lf_ap_auto_test": { "enabled": "TRUE", "command": "lf_ap_auto_test.py", - "timeout":"4800", + "timeout":"1200", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", @@ -111,8 +111,8 @@ " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", - " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 1,", - " --set 'Throughput vs Pkt Size' 1 --set 'Capacity' 0 --set 'Band-Steering' 1 --set 'Skip 2.4 Ghz Tests' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -121,7 +121,7 @@ "CT-US-001_lf_ap_auto_test_2": { "enabled": "FALSE", "command": "lf_ap_auto_test.py", - "timeout":"4800", + "timeout":"1200", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", @@ -231,6 +231,48 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, + "CT-US-001_create_chamberview_dut_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-001_create_chamberview_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, + "CT-US-001_lf_ap_auto_test": { + "enabled": "TRUE", + "command": "lf_ap_auto_test.py", + "timeout":"1200", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, "GHOST":{"enabled":"TRUE","load_db":"skip","command":"ghost_profile.py","args":"", "args_list":[ " --ghost_token BLOG_TOKEN --ghost_host BLOG_HOST --authors BLOG_AUTHORS --customer BLOG_CUSTOMER", diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 4c30c38b..98cf930b 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -111,8 +111,8 @@ " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", - " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 1,", - " --set 'Throughput vs Pkt Size' 1 --set 'Capacity' 0 --set 'Band-Steering' 1 --set 'Skip 2.4 Ghz Tests' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -266,22 +266,23 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, "CT-US-002_lf_ap_auto_test": { - "enabled": "FALSE", + "enabled": "TRUE", "command": "lf_ap_auto_test.py", + "timeout": "1200", "args": "", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", - " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 0", - " --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", From f7b8d8c94803504717cc5b902e31b690520d14d7 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sun, 18 Jul 2021 09:35:14 -0600 Subject: [PATCH 24/79] ct_us_001.json : added dut_sw "dut_sw": "3.0.0.4.386_42820", Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 1 + 1 file changed, 1 insertion(+) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 36860051..97abb1e1 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -15,6 +15,7 @@ "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", "dut_bssid_5G": "3c:7c:3f:55:4d:64", + "dut_sw": "3.0.0.4.386_42820", "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, From f888f9bee8bc51549115e4021d98d090bf15e84a Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sun, 18 Jul 2021 11:46:36 -0600 Subject: [PATCH 25/79] ct_us_002.json : test config updates, trying to get dataplane to run Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 36 ++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index 98cf930b..b38c8694 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -169,7 +169,18 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-002_create_chamberview_ATH10k_sta01":{ + "CT-US-002_create_chamberview_dut_ATH10K_wan1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-002_create_chamberview_ATH10k_wan1":{ "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview.py", @@ -232,6 +243,29 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, + "CT-US-002_create_chamberview_dut_AX200_wan1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=ruckus-r750-5g security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-002_create_chamberview_AX200_wan1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, "CT-US-002_dataplane_AX200":{ "enabled":"TRUE", "load_db":"skip", From 4caf6c5301488f93ce7c288b994524f5ebd5bcb4 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Mon, 19 Jul 2021 18:17:34 -0600 Subject: [PATCH 26/79] test_l3_longevity.py : updated allow for 5g and 2.4g concurrently Signed-off-by: Chuck SmileyRekiere --- py-scripts/test_l3_longevity.py | 224 ++++++++++++++++++++++++++------ 1 file changed, 185 insertions(+), 39 deletions(-) diff --git a/py-scripts/test_l3_longevity.py b/py-scripts/test_l3_longevity.py index 38c2b365..a1ca0495 100755 --- a/py-scripts/test_l3_longevity.py +++ b/py-scripts/test_l3_longevity.py @@ -118,8 +118,10 @@ class L3VariableTime(Realm): ap_read=False, ap_port='/dev/ttyUSB0', ap_baud='115200', - ap_cmd='wl -i wl1 bs_data', - ap_chanim_cmd='wl -i wl1 chanim_stats', + ap_cmd_5g='wl -i wl1 bs_data', + ap_cmd_2g='wl -i wl0 bs_data', + ap_chanim_cmd_5g='wl -i wl1 chanim_stats', + ap_chanim_cmd_2g='wl -i wl0 chanim_stats', ap_test_mode=False, _exit_on_error=False, _exit_on_fail=False, @@ -201,8 +203,10 @@ class L3VariableTime(Realm): self.ap_read = ap_read self.ap_port = ap_port self.ap_baud = ap_baud - self.ap_cmd = ap_cmd - self.ap_chanim_cmd = ap_chanim_cmd + self.ap_cmd_5g = ap_cmd_5g + self.ap_cmd_2g = ap_cmd_2g + self.ap_chanim_cmd_5g = ap_chanim_cmd_5g + self.ap_chanim_cmd_2g = ap_chanim_cmd_2g self.ap_test_mode = ap_test_mode self.ap_5g_umsched = "" self.ap_5g_msched = "" @@ -478,39 +482,74 @@ class L3VariableTime(Realm): return ap_results - def read_ap_stats(self): - # 5ghz: wl -i wl1 bs_data 2.4ghz# wl -i wl0 bs_data - ap_stats = "" + def read_ap_stats_5g(self): + # 5ghz: wl -i wl1 bs_data + ap_stats_5g = "" try: # configure the serial interface ser = serial.Serial(self.ap_port, int(self.ap_baud), timeout=5) ss = SerialSpawn(ser) - ss.sendline(str(self.ap_cmd)) + ss.sendline(str(self.ap_cmd_5g)) + ss.expect([pexpect.TIMEOUT], timeout=1) # do not detete line, waits for output + ap_stats_5g = ss.before.decode('utf-8','ignore') + print("ap_stats_5g {}".format(ap_stats_5g)) + + except: + print("WARNING unable to read AP") + + return ap_stats_5g + + def read_ap_stats_2g(self): + # 2.4ghz# wl -i wl0 bs_data + ap_stats_2g = "" + try: + # configure the serial interface + ser = serial.Serial(self.ap_port, int(self.ap_baud), timeout=5) + ss = SerialSpawn(ser) + ss.sendline(str(self.ap_cmd_2g)) ss.expect([pexpect.TIMEOUT], timeout=1) # do not detete line, waits for output ap_stats = ss.before.decode('utf-8','ignore') - print("ap_stats {}".format(ap_stats)) + print("ap_stats_2g {}".format(ap_stats_2g)) except: print("WARNING unable to read AP") - return ap_stats + return ap_stats_2g - def read_ap_chanim_stats(self): - # 5ghz: wl -i wl1 chanim_stats 2.4ghz# wl -i wl0 chanim_stats - ap_chanim_stats = "" + + def read_ap_chanim_stats_5g(self): + # 5ghz: wl -i wl1 chanim_stats + ap_chanim_stats_5g = "" try: # configure the serial interface ser = serial.Serial(self.ap_port, int(self.ap_baud), timeout=5) ss = SerialSpawn(ser) - ss.sendline(str(self.ap_chanim_cmd)) + ss.sendline(str(self.ap_chanim_cmd_5g)) ss.expect([pexpect.TIMEOUT], timeout=1) # do not detete line, waits for output - ap_chanim_stats = ss.before.decode('utf-8','ignore') - print("ap_stats {}".format(ap_chanim_stats)) + ap_chanim_stats_5g = ss.before.decode('utf-8','ignore') + print("ap_stats {}".format(ap_chanim_stats_5g)) except: print("WARNING unable to read AP") - return ap_chanim_stats + return ap_chanim_stats_5g + + def read_ap_chanim_stats_2g(self): + # 2.4ghz# wl -i wl0 chanim_stats + ap_chanim_stats_2g = "" + try: + # configure the serial interface + ser = serial.Serial(self.ap_port, int(self.ap_baud), timeout=5) + ss = SerialSpawn(ser) + ss.sendline(str(self.ap_chanim_cmd_2g)) + ss.expect([pexpect.TIMEOUT], timeout=1) # do not detete line, waits for output + ap_chanim_stats_2g = ss.before.decode('utf-8','ignore') + print("ap_stats {}".format(ap_chanim_stats_2g)) + + except: + print("WARNING unable to read AP") + + return ap_chanim_stats_2g # Run the main body of the test logic. def start(self, print_pass=False, print_fail=False): @@ -634,30 +673,30 @@ class L3VariableTime(Realm): if self.ap_read: if self.ap_test_mode: # Create the test data as a continuous string - ap_stats="{}{}{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 bs_data\n", + ap_stats_5g="{}{}{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 bs_data\n", "Station Address PHY Mbps Data Mbps Air Use Data Use Retries bw mcs Nss ofdma mu-mimo\n", "04:f0:21:82:2f:d6 1016.6 48.9 6.5% 24.4% 16.6% 80 9.7 2 0.0% 0.0%\n", "50:E0:85:84:7A:E7 880.9 52.2 7.7% 26.1% 20.0% 80 8.5 2 0.0% 0.0%\n", "50:E0:85:89:5D:00 840.0 47.6 6.4% 23.8% 2.3% 80 8.0 2 0.0% 0.0%\n", "50:E0:85:87:5B:F4 960.7 51.5 5.9% 25.7% 0.0% 80 9 2 0.0% 0.0%\n", "- note the MAC will match ap_stats.append((overall) - 200.2 26.5% - - \n") - print("ap_stats {}".format(ap_stats)) + print("ap_stats {}".format(ap_stats_5g)) # Create the test data as a continuous string - ap_chanim_stats = "{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 chanim_stats\n", + ap_chanim_stats_5g = "{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 chanim_stats\n", "version: 3\n", "chanspec tx inbss obss nocat nopkt doze txop goodtx badtx glitch badplcp knoise idle timestamp\n", "0xe06a 61 15 0 17 0 0 6 53 2 0 0 -91 65 343370578\n") else: # read from the AP - ap_stats = self.read_ap_stats() - ap_chanim_stats = self.read_ap_chanim_stats() + ap_stats_5g = self.read_ap_stats_5g() + ap_chanim_stats_5g = self.read_ap_chanim_stats_5g() - ap_stats_rows = ap_stats.splitlines() - print("From AP stats: ap_stats_rows {}".format(ap_stats_rows)) + ap_stats_5g_rows = ap_stats_5g.splitlines() + print("From AP stats: ap_stats_5g_rows {}".format(ap_stats_5g_rows)) - ap_chanim_stats_rows = ap_chanim_stats.splitlines() - print("From AP chanim: ap_chanim_stats_rows {}".format(ap_chanim_stats_rows)) + ap_chanim_stats_rows_5g = ap_chanim_stats_5g.splitlines() + print("From AP chanim: ap_chanim_stats_rows {}".format(ap_chanim_stats_rows_5g)) channel_utilization = 0 # Query all of our ports @@ -680,7 +719,7 @@ class L3VariableTime(Realm): #print("#### From LANforge: p['mac']: {mac}".format(mac=mac)) # Parse the ap stats to find the matching mac then use that row for reporting - for row in ap_stats_rows: + for row in ap_stats_5g_rows: split_row = row.split() #print("split_row {}".format(split_row)) #print("split_row[0] {} mac {}".format(split_row[0].lower(),mac.lower())) @@ -701,9 +740,9 @@ class L3VariableTime(Realm): # Find latency, jitter for connections using this port. latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) - # now report the ap_chanim_stats along side of the ap_stats + # now report the ap_chanim_stats along side of the ap_stats_5g xtop_reported = False - for row in ap_chanim_stats_rows: + for row in ap_chanim_stats_rows_5g: split_row = row.split() if xtop_reported: try: @@ -724,10 +763,107 @@ class L3VariableTime(Realm): print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) print("ap_row {ap_row}".format(ap_row=ap_row)) - ap_stats_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] + ap_stats_5g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, - latency, jitter, tput, ap_row, ap_stats_col_titles) #ap_stats_col_titles used as a length + latency, jitter, tput, ap_row, ap_stats_5g_col_titles) #ap_stats_5g_col_titles used as a length + if self.ap_test_mode: + # Create the test data as a continuous string + ap_stats_2g="{}{}{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 bs_data\n", + "Station Address PHY Mbps Data Mbps Air Use Data Use Retries bw mcs Nss ofdma mu-mimo\n", + "04:f0:21:82:2f:d6 1016.6 48.9 6.5% 24.4% 16.6% 80 9.7 2 0.0% 0.0%\n", + "50:E0:85:84:7A:E7 880.9 52.2 7.7% 26.1% 20.0% 80 8.5 2 0.0% 0.0%\n", + "50:E0:85:89:5D:00 840.0 47.6 6.4% 23.8% 2.3% 80 8.0 2 0.0% 0.0%\n", + "50:E0:85:87:5B:F4 960.7 51.5 5.9% 25.7% 0.0% 80 9 2 0.0% 0.0%\n", + "- note the MAC will match ap_stats_2g.append((overall) - 200.2 26.5% - - \n") + print("ap_stats_2g {}".format(ap_stats_2g)) + + # Create the test data as a continuous string + ap_chanim_stats_2g = "{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 chanim_stats\n", + "version: 3\n", + "chanspec tx inbss obss nocat nopkt doze txop goodtx badtx glitch badplcp knoise idle timestamp\n", + "0xe06a 61 15 0 17 0 0 6 53 2 0 0 -91 65 343370578\n") + else: + # read from the AP + ap_stats_2g = self.read_ap_stats_2g() + ap_chanim_stats_2g = self.read_ap_chanim_stats_2g() + + ap_stats_2g_rows = ap_stats_2g.splitlines() + print("From AP stats: ap_stats_2g_rows {}".format(ap_stats_2g_rows)) + + ap_chanim_stats_rows_2g = ap_chanim_stats_2g.splitlines() + print("From AP chanim: ap_chanim_stats_rows_2g {}".format(ap_chanim_stats_rows_2g)) + channel_utilization = 0 + + # Query all of our ports + # Note: the endp eid is the shelf.resource.port.endp-id + port_eids = self.gather_port_eids() + for eid_name in port_eids: + eid = self.name_to_eid(eid_name) + url = "/port/%s/%s/%s"%(eid[0], eid[1], eid[2]) + # read LANforge to get the mac + response = self.json_get(url) + if (response is None) or ("interface" not in response): + print("query-port: %s: incomplete response:"%(url)) + pprint(response) + else: + # print("response".format(response)) + # pprint(response) + p = response['interface'] + #print("#### From LANforge: p, response['insterface']:{}".format(p)) + mac = p['mac'] + #print("#### From LANforge: p['mac']: {mac}".format(mac=mac)) + + # Parse the ap stats to find the matching mac then use that row for reporting + for row in ap_stats_2g_rows: + split_row = row.split() + #print("split_row {}".format(split_row)) + #print("split_row[0] {} mac {}".format(split_row[0].lower(),mac.lower())) + if self.ap_test_mode: + if split_row[0].lower() != mac.lower(): + ap_row = split_row + else: + try: + # split_row[0].lower() , mac from AP + # mac.lower() , mac from LANforge + if split_row[0].lower() == mac.lower(): + ap_row = split_row + except: + print(" 'No stations are currently associated.'? from AP") + print(" since possibly no stations: excption on compare split_row[0].lower() ") + print("selected ap_row (from split_row): {}".format(ap_row)) + + # Find latency, jitter for connections using this port. + latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) + + # now report the ap_chanim_stats along side of the ap_stats_2g + xtop_reported = False + for row in ap_chanim_stats_rows_2g: + split_row = row.split() + if xtop_reported: + try: + xtop = split_row[7] + channel_utilization = 100 - int(xtop) + except: + print("detected chanspec with reading chanim_stats, failed reading xtop") + # should be only one channel utilization + break + else: + try: + if split_row[0].lower() == 'chanspec': + xtop_reported = True + except: + print("Error reading xtop") + # ap information is passed with ap_row so all information needs to be contained in ap_row + ap_row.append(str(channel_utilization)) + print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) + print("ap_row {ap_row}".format(ap_row=ap_row)) + + ap_stats_2g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] + + self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, + latency, jitter, tput, ap_row, ap_stats_2g_col_titles) #ap_stats_2g_col_titles used as a length + else: # Query all of our ports @@ -1040,8 +1176,10 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m parser.add_argument('--ap_read', help='--ap_read flag present enable reading ap', action='store_true') parser.add_argument('--ap_port', help='--ap_port \'/dev/ttyUSB0\'',default='/dev/ttyUSB0') parser.add_argument('--ap_baud', help='--ap_baud \'115200\'',default='115200') - parser.add_argument('--ap_cmd', help='ap_cmd \'wl -i wl1 bs_data\'', default="wl -i wl1 bs_data") - parser.add_argument('--ap_chanim_cmd', help='ap_chanim_cmd \'wl -i wl1 chanim_stats\'', default="wl -i wl1 chanim_stats") + parser.add_argument('--ap_cmd_5g', help='ap_cmd_5g \'wl -i wl1 bs_data\'', default="wl -i wl1 bs_data") + parser.add_argument('--ap_cmd_2g', help='ap_cmd_2g \'wl -i wl0 bs_data\'', default="wl -i wl0 bs_data") + parser.add_argument('--ap_chanim_cmd_5g', help='ap_chanim_cmd_5g \'wl -i wl1 chanim_stats\'', default="wl -i wl1 chanim_stats") + parser.add_argument('--ap_chanim_cmd_2g', help='ap_chanim_cmd_2g \'w1 -i wl0 chanim_stats\'', default="wl -i w0 chanim_stats") parser.add_argument('--ap_scheduler_stats', help='--ap_scheduler_stats flag to clear stats run test then dump ul and dl stats to file', action='store_true') parser.add_argument('--ap_ofdma_stats', help='--ap_ofdma_stats flag to clear stats run test then dumps wl -i wl1 muinfo -v and wl 0i wl0 muinof -v to file', action='store_true') @@ -1105,11 +1243,17 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m if args.ap_baud: ap_baud = args.ap_baud - if args.ap_cmd: - ap_cmd = args.ap_cmd + if args.ap_cmd_5g: + ap_cmd_5g = args.ap_cmd_5g - if args.ap_chanim_cmd: - ap_chanim_cmd = args.ap_chanim_cmd + if args.ap_cmd_2g: + ap_cmd_2g = args.ap_cmd_2g + + if args.ap_chanim_cmd_5g: + ap_chanim_cmd_5g = args.ap_chanim_cmd_5g + + if args.ap_chanim_cmd_2g: + ap_chanim_cmd_2g = args.ap_chanim_cmd_2g if args.test_duration: test_duration = args.test_duration @@ -1281,8 +1425,10 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m ap_read=ap_read, ap_port=ap_port, ap_baud=ap_baud, - ap_cmd=ap_cmd, - ap_chanim_cmd=ap_chanim_cmd, + ap_cmd_5g=ap_cmd_5g, + ap_cmd_2g=ap_cmd_2g, + ap_chanim_cmd_5g=ap_chanim_cmd_5g, + ap_chanim_cmd_2g=ap_chanim_cmd_2g, ap_test_mode=ap_test_mode) ip_var_test.pre_cleanup() From 9ad5973708c231f5dabeade7c01e693d82c7bdbb Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 11:09:50 -0600 Subject: [PATCH 27/79] lf_check.py : added comment for getting radio firmware Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 1 + 1 file changed, 1 insertion(+) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 5b4d8c74..24faeb44 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -35,6 +35,7 @@ GENERIC NOTES: 1. add server (telnet localhost 4001) build info, GUI build sha, and Kernel version to the output. A. for build information on LANforgeGUI : /home/lanforge ./btserver --version B. for the kernel version uname -r (just verion ), uname -a build date + C. for getting the radio firmware: ethtool -i wlan0 ''' import datetime From 6e4c79d9476afa9846d4b9b564a192702d8aabec Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Mon, 19 Jul 2021 14:51:26 -0700 Subject: [PATCH 28/79] Adding HTML reports to ghost reports generated by GhostRequest Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 12 +++++++++++- py-scripts/influxgrafanaghost.sh | 0 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 py-scripts/influxgrafanaghost.sh diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 23f08522..0cd82f66 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -137,6 +137,7 @@ class GhostRequest: self.ghost_json_login = self.ghost_json_url + '/admin/session/' self.api_token = _api_token self.images = list() + self.webpages = list() self.pdfs = list() self.influx_host = influx_host self.influx_port = influx_port @@ -290,7 +291,8 @@ class GhostRequest: target_folders.append(folder) testbeds = list() - pdfs = list() + webpages = self.webpages + pdfs = self.pdfs high_priority_list = list() low_priority_list = list() images = list() @@ -359,6 +361,10 @@ class GhostRequest: url = 'http://%s/%s/%s/%s/%s/%s' % ( ghost_host, customer.strip('/'), testbed, test_run, target_folder, file) pdfs.append('PDF of results: %s
' % (url, file)) + if 'index.html' in files: + url = 'http://%s/%s/%s/%s/%s' % ( + ghost_host, customer.strip('/'), testbed, target_folder, 'index.html') + webpages.append('Results webpage: Index of report
' % url) scp_push.close() self.upload_images(target_folder) for image in self.images: @@ -469,6 +475,10 @@ class GhostRequest: print(pdf) text = text + pdf + for page in webpages: + print(page) + text = text + page + for image in images: text = text + image diff --git a/py-scripts/influxgrafanaghost.sh b/py-scripts/influxgrafanaghost.sh new file mode 100644 index 00000000..e69de29b From 3def8a94b11cea37c8ea25764bb18ad0e68ade02 Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Tue, 20 Jul 2021 13:28:42 -0700 Subject: [PATCH 29/79] HTML and PDF report links on a single line in the Ghost report Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 15 +++++------- py-scripts/cv_manager.py | 47 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 9 deletions(-) create mode 100755 py-scripts/cv_manager.py diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 0cd82f66..1b0faaa5 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -360,10 +360,10 @@ class GhostRequest: if 'pdf' in file: url = 'http://%s/%s/%s/%s/%s/%s' % ( ghost_host, customer.strip('/'), testbed, test_run, target_folder, file) - pdfs.append('PDF of results: %s
' % (url, file)) + pdfs.append('PDF of results: %s' % (url, file)) if 'index.html' in files: url = 'http://%s/%s/%s/%s/%s' % ( - ghost_host, customer.strip('/'), testbed, target_folder, 'index.html') + ghost_host, customer.strip('/'), testbed, target_folder, target_folder) webpages.append('Results webpage: Index of report
' % url) scp_push.close() self.upload_images(target_folder) @@ -471,13 +471,10 @@ class GhostRequest: dut_table = dut_table + '' text = text + dut_table - for pdf in pdfs: - print(pdf) - text = text + pdf - - for page in webpages: - print(page) - text = text + page + for article in zip(pdfs, webpages): + if self.debug: + print(article) + text = text + article[0] + ' | ' + article[1] for image in images: text = text + image diff --git a/py-scripts/cv_manager.py b/py-scripts/cv_manager.py new file mode 100755 index 00000000..95d578b7 --- /dev/null +++ b/py-scripts/cv_manager.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +import sys +import os +import argparse + +if sys.version_info[0] != 3: + print("This script requires Python 3") + exit(1) + +if 'py-json' not in sys.path: + sys.path.append(os.path.join(os.path.abspath('..'), 'py-json')) + sys.path.append(os.path.join(os.path.abspath('..'), 'py-dashboard')) + +from cv_test_manager import cv_test +from cv_test_manager import * + + +class CVManager(cv_test): + def __init__(self, + scenario=None, + debug=False, + lfclient_host='localhost'): + self.scenario = scenario + self.debug = debug + self.exit_on_error = False + self.lfclient_host = lfclient_host + + def apply_and_build_scenario(self): + self.apply_cv_scenario(self.scenario) + self.build_cv_scenario() + +def main(): + parser = argparse.ArgumentParser(description='''This is a simple driver script to load a CV Scenario''') + parser.add_argument('--scenario', help='Scenario you wish to build') + parser.add_argument('--debug', help='Enable debugging', default=False, action="store_true") + parser.add_argument('--mgr', default='localhost') + + args = parser.parse_args() + + manager = CVManager(scenario=args.scenario, + debug=args.debug, + lfclient_host=args.mgr) + manager.apply_and_build_scenario() + +if __name__ =="__main__": + main() \ No newline at end of file From a71e84d524f81a97f2293aecd500c375afa6a753 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 12:47:31 -0600 Subject: [PATCH 30/79] lf_csv.py : added the kpi values Signed-off-by: Chuck SmileyRekiere --- py-scripts/lf_csv.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/py-scripts/lf_csv.py b/py-scripts/lf_csv.py index daa651eb..a77e1081 100644 --- a/py-scripts/lf_csv.py +++ b/py-scripts/lf_csv.py @@ -43,6 +43,26 @@ class lf_csv: csv_df.to_csv(self.filename, index=False, encoding='utf-8', na_rep='NA', float_format='%.2f') # this layout may need to change +''' +kpi.csv : specific file that is used for the database, dashboard and blog post +A blank entry is a valid entry in some cases. + + Date: date of run + test-rig : testbed that the tests are run on for example ct_us_001 + test-tag : test specific information to differenciate the test, LANforge radios used, security modes (wpa2 , open) + dut-hw-version : hardware version of the device under test + dut-sw-version : software version of the device under test + dut-model-num : model number / name of the device under test + test-priority : ?? + test-id : script or test name , AP Auto, wifi capacity, data plane, dfs + short-description : short description of the test + pass/fail : set blank for performance tests + numeric-score : this is the value for the y-axis (x-axis is a timestamp), numeric value of what was measured + test-details : what was measured in the numeric-score, e.g. bits per second, bytes per second, upload speed, minimum cx time (ms) + Units : units used for the numeric-scort + Graph-Group - For the dashboard the graph / panel to put the resutls in . Currently the dashboard is Grafana + +''' class lf_kpi_csv: def __init__(self, _kpi_headers = ['Date','test-rig','test-tag','dut-hw-version','dut-sw-version','dut-model-num', From 79302de9d53b7e64ba12a721601afa98590ad24f Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 14:56:25 -0600 Subject: [PATCH 31/79] lf_csv.py : updated information for test priority in comments Signed-off-by: Chuck SmileyRekiere --- py-scripts/lf_csv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/lf_csv.py b/py-scripts/lf_csv.py index a77e1081..5e9af5f8 100644 --- a/py-scripts/lf_csv.py +++ b/py-scripts/lf_csv.py @@ -53,7 +53,7 @@ A blank entry is a valid entry in some cases. dut-hw-version : hardware version of the device under test dut-sw-version : software version of the device under test dut-model-num : model number / name of the device under test - test-priority : ?? + test-priority : test-priority is arbitrary number, choosing under 95 means it goes down at bottom of blog report, and higher priority goes at top. test-id : script or test name , AP Auto, wifi capacity, data plane, dfs short-description : short description of the test pass/fail : set blank for performance tests From 2f6e6731ea82afe57fb536cea9a2ec025e262c69 Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Tue, 20 Jul 2021 14:31:22 -0700 Subject: [PATCH 32/79] Better text for html links in ghostrequest.py Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 1b0faaa5..9d51f127 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -363,8 +363,8 @@ class GhostRequest: pdfs.append('PDF of results: %s' % (url, file)) if 'index.html' in files: url = 'http://%s/%s/%s/%s/%s' % ( - ghost_host, customer.strip('/'), testbed, target_folder, target_folder) - webpages.append('Results webpage: Index of report
' % url) + ghost_host, customer.strip('/'), testbed, target_folder, 'index.html') + webpages.append('Results webpage: %s
' % (url % target_folder)) scp_push.close() self.upload_images(target_folder) for image in self.images: From f1cb37fe2dc7ff2cc1940c983a991c157a952a7b Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Tue, 20 Jul 2021 14:31:22 -0700 Subject: [PATCH 33/79] Better text for html links in ghostrequest.py and correct link for html report Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 6 ++++-- .../__pycache__/GhostRequest.cpython-38.pyc | Bin 0 -> 13119 bytes .../__pycache__/GhostRequest.cpython-39.pyc | Bin 0 -> 6878 bytes .../__pycache__/GrafanaRequest.cpython-38.pyc | Bin 0 -> 10427 bytes .../__pycache__/GrafanaRequest.cpython-39.pyc | Bin 0 -> 8887 bytes 5 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 py-dashboard/__pycache__/GhostRequest.cpython-38.pyc create mode 100644 py-dashboard/__pycache__/GhostRequest.cpython-39.pyc create mode 100644 py-dashboard/__pycache__/GrafanaRequest.cpython-38.pyc create mode 100644 py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 9d51f127..3460b92d 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -362,8 +362,8 @@ class GhostRequest: ghost_host, customer.strip('/'), testbed, test_run, target_folder, file) pdfs.append('PDF of results: %s' % (url, file)) if 'index.html' in files: - url = 'http://%s/%s/%s/%s/%s' % ( - ghost_host, customer.strip('/'), testbed, target_folder, 'index.html') + url = 'http://%s/%s/%s/%s/%s/%s' % ( + ghost_host, customer.strip('/'), testbed, test_run, target_folder, 'index.html') webpages.append('Results webpage: %s
' % (url % target_folder)) scp_push.close() self.upload_images(target_folder) @@ -387,6 +387,8 @@ class GhostRequest: test_pass_fail_results = sum((Counter(test) for test in test_pass_fail), Counter()) + if self.debug: + print(times) end_time = max(times) start_time = '2021-07-01' end_time = datetime.utcfromtimestamp(end_time)#.strftime('%Y-%m-%d %H:%M:%S') diff --git a/py-dashboard/__pycache__/GhostRequest.cpython-38.pyc b/py-dashboard/__pycache__/GhostRequest.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e634005e316c41b6ed687df4e58dd1c5c0ed8af GIT binary patch literal 13119 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 aNq&v=E(y2LcXSJZ!xy&^;*isakN-Egum1f2 literal 0 HcmV?d00001 diff --git a/py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc b/py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41e908266ced620ebb8d12235c2b124b1ca34da2 GIT binary patch literal 8887 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 hLi>8xh7Bi literal 0 HcmV?d00001 From 478464d302699d257ab760e301c0aff2fe3adc75 Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Tue, 20 Jul 2021 15:17:34 -0700 Subject: [PATCH 34/79] Remove unncessary files and fix GhostRequest html link Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 2 +- .../__pycache__/GhostRequest.cpython-38.pyc | Bin 13119 -> 0 bytes .../__pycache__/GhostRequest.cpython-39.pyc | Bin 6878 -> 0 bytes .../__pycache__/GrafanaRequest.cpython-38.pyc | Bin 10427 -> 0 bytes .../__pycache__/GrafanaRequest.cpython-39.pyc | Bin 8887 -> 0 bytes 5 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 py-dashboard/__pycache__/GhostRequest.cpython-38.pyc delete mode 100644 py-dashboard/__pycache__/GhostRequest.cpython-39.pyc delete mode 100644 py-dashboard/__pycache__/GrafanaRequest.cpython-38.pyc delete mode 100644 py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 3460b92d..8ae34706 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -364,7 +364,7 @@ class GhostRequest: if 'index.html' in files: url = 'http://%s/%s/%s/%s/%s/%s' % ( ghost_host, customer.strip('/'), testbed, test_run, target_folder, 'index.html') - webpages.append('Results webpage: %s
' % (url % target_folder)) + webpages.append('Results webpage: %s
' % (url, target_folder)) scp_push.close() self.upload_images(target_folder) for image in self.images: diff --git a/py-dashboard/__pycache__/GhostRequest.cpython-38.pyc b/py-dashboard/__pycache__/GhostRequest.cpython-38.pyc deleted file mode 100644 index 0e634005e316c41b6ed687df4e58dd1c5c0ed8af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13119 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 aNq&v=E(y2LcXSJZ!xy&^;*isakN-Egum1f2 diff --git a/py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc b/py-dashboard/__pycache__/GrafanaRequest.cpython-39.pyc deleted file mode 100644 index 41e908266ced620ebb8d12235c2b124b1ca34da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8887 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 hLi>8xh7Bi From ce932fa74db00bf1d7679473f7c635aa5ba3edf6 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 16:24:03 -0600 Subject: [PATCH 35/79] ct_us_004.json : added file for testbed ct_us_004 ct_us_001.json : formatting and test configuration changed Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 56 +++++- py-scripts/tools/ct_us_004.json | 329 ++++++++++++++++++++++++++++++++ 2 files changed, 376 insertions(+), 9 deletions(-) create mode 100644 py-scripts/tools/ct_us_004.json diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 97abb1e1..8e7aba05 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -152,7 +152,11 @@ } }, "suite_wc_dp":{ - "CT-US-001_create_chamberview_dut_asus11ax_5":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-001_create_chamberview_dut_asus11ax_5":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", @@ -160,15 +164,25 @@ " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ] }, - "CT-US-001_create_chamberview_wiphy1_sta64":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy0_wiphy1_sta128":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy0,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta64":{"enabled":"TRUE","timeout":"360","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-001_wifi_capacity_wiphy0_wiphy1_ATH10K(9984)_sta128":{ + "enabled":"TRUE", + "timeout":"360", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", @@ -177,7 +191,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_create_chamberview_wiphy1_ATH10K(9984)_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy1_ATH10K(9984)_sta1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", @@ -185,7 +203,11 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_dataplane_wiphy1_ATH10K(9984)_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-001_dataplane_wiphy1_ATH10K(9984)_sta1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan1", @@ -196,7 +218,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_create_chamberview_dut_asus11ax_5_2":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview_dut.py","args":"", + "CT-US-001_create_chamberview_dut_asus11ax_5_2":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", "args_list":[ "--lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", " --ssid 'ssid_idx=0 ssid=asus11ax-5 security=WPA2 password=hello123 bssid=DUT_BSSID_5G'", @@ -204,7 +230,11 @@ " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ] }, - "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"create_chamberview.py","args":"", + "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", @@ -212,7 +242,11 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\" " ] }, - "CT-US-001_wifi_capacity_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_wifi_capacity_test.py","args":"", + "CT-US-001_wifi_capacity_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", @@ -221,7 +255,11 @@ " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, - "CT-US-001_dataplane_wiphy3_AX210_sta1":{"enabled":"TRUE","load_db":"skip","command":"lf_dataplane_test.py","args":"", + "CT-US-001_dataplane_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan3", diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json new file mode 100644 index 00000000..d44dac62 --- /dev/null +++ b/py-scripts/tools/ct_us_004.json @@ -0,0 +1,329 @@ +{ + "ct_us_004":{ + "Notes":[ + "The json is used to orchastrate the tests to be run on testbed ct_us_004", + "This json file is used as an input to the ./lf_check.py file", + "The variables that are all capitalized below are replaced with configuration", + "from the json file. so LF_MGR_IP in the test below is replaced by the json lf_mgr_ip", + "The replacement is loosely coupled so the upper and lower case convention is used", + "to identify replaced strings in the lf_check.py code." + ] + }, + "test_parameters":{ + "test_bed": "CT-US-004", + "lf_mgr_ip": "192.168.100.194", + "lf_mgr_port": "8080", + "dut_name": "ASUSRT-AX88U", + "dut_bssid_5G": "94:a6:7e:54:d4:33", + "test_timeout": 300, + "load_blank_db": false, + "load_factory_default_db": true, + "load_custom_db": false, + "custom_db": "DFLT_ETH1_GEN", + "email_list_production": "konikofi@candelatech.com,greearb@candelatech.com,logan.lipke@candelatech.com,dipti.dhond@candelatech.com,chuck.rekiere@candelatech.com,matthew@candelatech.com,iain.davidson@candelatech.com,jreynolds@candelatech.com", + "host_ip_production": "192.168.100.201", + "email_list_test": "chuck.rekiere@candelatech.com", + "host_ip_test": "192.168.100.201", + "email_title_txt": "Lanforge QA Testing CT-US-004", + "email_txt": "Lanforge QA Testing CT-US-004 " + }, + "test_network":{ + "http_test_ip": "10.40.0.10", + "ftp_test_ip": "10.40.0.10", + "test_ip": "192.168.0.104" + }, + "test_generic":{ + "radio_used": "wiphy1", + "ssid_used": "NETGEAR59-5G", + "ssid_pw_used": "crispynest798", + "security_used": "wpa2", + "num_sta": 1, + "col_names": "name,tx_byptes,rx_bytes,dropped", + "upstream_port": "eth2" + }, + "test_database":{ + "database_config": "True", + "database_host": "192.168.100.201", + "database_port": "8086", + "database_token": "-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ==", + "database_org": "Candela", + "database_bucket": "lanforge_qa_testing", + "dut_set_name": "DUT_NAME ASUSRT-AX88U", + "database_tag": "testbed CT-US-004", + "test_rig": "CT-US-004" + }, + "test_dashboard":{ + "dashboard_config": "True", + "dashboard_host": "192.168.100.201", + "dashboard_token": "eyJrIjoiS1NGRU8xcTVBQW9lUmlTM2dNRFpqNjFqV05MZkM0dzciLCJuIjoibWF0dGhldyIsImlkIjoxfQ==" + }, + "test_blog":{ + "blog_config": "True", + "blog_host": "192.168.100.153", + "blog_token": "60df4b0175953f400cd30650:d50e1fabf9a9b5d3d30fe97bc3bf04971d05496a89e92a169a0d72357c81f742", + "blog_authors": "Matthew", + "blog_customer": "candela", + "blog_user_push": "lanforge", + "blog_password_push": "lanforge", + "blog_flag": "--kpi_to_ghost" + }, + "radio_dict":{ + "RADIO_0_CFG":{"KEY":"RADIO_0_CFG","RADIO":"wiphy0","STATIONS":"1","SSID":"NETGEAR59-5G","PASSWD":"crispynest798","SECURITY":"wpa2"}, + "RADIO_1_CFG":{"KEY":"RADIO_1_CFG","RADIO":"wiphy1","STATIONS":"1","SSID":"NETGEAR59-5G","PASSWD":"crispynest798","SECURITY":"wpa2"} + }, + "test_suites":{ + "suite_l3":{ + "test_l3_longevity":{"enabled":"TRUE","load_db":"skip","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==NETGEAR59-5G,ssid_pw==crispynest798,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} + }, + "auto_suite":{ + "CT-US-004_create_chamberview_dut_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-004_create_chamberview_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, + "CT-US-004_lf_ap_auto_test": { + "enabled": "TRUE", + "command": "lf_ap_auto_test.py", + "timeout":"1200", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-004_lf_ap_auto_test_2": { + "enabled": "FALSE", + "command": "lf_ap_auto_test.py", + "timeout":"1200", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "GHOST":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"ghost_profile.py", + "args":"", + "args_list":[ + " --ghost_token BLOG_TOKEN --ghost_host BLOG_HOST --authors BLOG_AUTHORS --customer BLOG_CUSTOMER", + " --user_push BLOG_USER_PUSH --password BLOG_PASSWORD_PUSH BLOG_FLAG --grafana_token DASHBOARD_TOKEN", + " --grafana_host DASHBOARD_HOST --grafana_bucket DATABASE_BUCKET --parent_folder REPORT_PATH", + " --influx_host DATABASE_HOST --influx_org DATABASE_ORG --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET", + " --influx_tag DATABASE_TAG " + ] + } + }, + "suite_wc_dp":{ + "CT-US-004_create_chamberview_dut_NetgearAX12":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ] + }, + "CT-US-004_create_chamberview_wiphy1_wiphy3_sta128":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario CT-US-004-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy3,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" + ] + }, + "CT-US-004_wifi_capacity_wiphy1_ATH10K(9984)_wiphy3_ATH10K(9984)_sta128":{ + "enabled":"TRUE", + "timeout":"360", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", + " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-004_create_chamberview_wiphy1_ATH10K(9984)_sta1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario CT-US-004-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" + ] + }, + "CT-US-004_dataplane_wiphy1_ATH10K(9984)_sta1":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", + " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan1", + " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", + " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", + " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH ", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-004_create_chamberview_dut_NetgearAX12_5_2":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + "--lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ] + }, + "CT-US-004_create_chamberview_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario CT-US-004-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy3,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\" " + ] + }, + "CT-US-004_wifi_capacity_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"lf_wifi_capacity_test.py", + "args":"", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", + " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan3", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-004_dataplane_wiphy3_AX210_sta1":{ + "enabled":"FALSE", + "load_db":"skip", + "command":"lf_dataplane_test.py", + "args":"", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-dpt", + " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan3", + " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", + " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", + " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-004_create_chamberview_dut_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview_dut.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --dut_name DUT_NAME", + " --ssid 'ssid_idx=0 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --ssid 'ssid_idx=1 ssid=NETGEAR59-5G security=WPA2 password=crispynest798 bssid=DUT_BSSID_5G'", + " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" + ]}, + "CT-US-004_create_chamberview_ap":{ + "enabled":"TRUE", + "load_db":"skip", + "command":"create_chamberview.py", + "args":"", + "args_list":[ + " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", + " --create_scenario ucentral-scenario ", + " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " + ] + }, + "CT-US-004_lf_ap_auto_test": { + "enabled": "TRUE", + "command": "lf_ap_auto_test.py", + "timeout":"1200", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "GHOST":{"enabled":"TRUE","load_db":"skip","command":"ghost_profile.py","args":"", + "args_list":[ + " --ghost_token BLOG_TOKEN --ghost_host BLOG_HOST --authors BLOG_AUTHORS --customer BLOG_CUSTOMER", + " --user_push BLOG_USER_PUSH --password BLOG_PASSWORD_PUSH BLOG_FLAG --grafana_token DASHBOARD_TOKEN", + " --grafana_host DASHBOARD_HOST --grafana_bucket DATABASE_BUCKET --parent_folder REPORT_PATH", + " --influx_host DATABASE_HOST --influx_org DATABASE_ORG --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET", + " --influx_tag DATABASE_TAG " + ] + } + } + } +} + + + + \ No newline at end of file From be8e54392c44ee1fc7f4a78e5f18b060c5277b76 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 16:31:13 -0600 Subject: [PATCH 36/79] ct_us_004.json : updated for Netgear from Asus Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_004.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index d44dac62..cca7b7e9 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -13,7 +13,7 @@ "test_bed": "CT-US-004", "lf_mgr_ip": "192.168.100.194", "lf_mgr_port": "8080", - "dut_name": "ASUSRT-AX88U", + "dut_name": "Netgear AX12", "dut_bssid_5G": "94:a6:7e:54:d4:33", "test_timeout": 300, "load_blank_db": false, @@ -48,7 +48,7 @@ "database_token": "-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ==", "database_org": "Candela", "database_bucket": "lanforge_qa_testing", - "dut_set_name": "DUT_NAME ASUSRT-AX88U", + "dut_set_name": "DUT_NAME Netgear AX12", "database_tag": "testbed CT-US-004", "test_rig": "CT-US-004" }, From 25758c47a20f35dd1ce910a2c1a2ed446448e387 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 16:42:15 -0600 Subject: [PATCH 37/79] ct_us_004.json : will work out spaced in the names later Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_004.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index cca7b7e9..1ac974ba 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -13,7 +13,7 @@ "test_bed": "CT-US-004", "lf_mgr_ip": "192.168.100.194", "lf_mgr_port": "8080", - "dut_name": "Netgear AX12", + "dut_name": "NetgearAX12", "dut_bssid_5G": "94:a6:7e:54:d4:33", "test_timeout": 300, "load_blank_db": false, @@ -48,7 +48,7 @@ "database_token": "-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ==", "database_org": "Candela", "database_bucket": "lanforge_qa_testing", - "dut_set_name": "DUT_NAME Netgear AX12", + "dut_set_name": "DUT_NAME NetgearAX12", "database_tag": "testbed CT-US-004", "test_rig": "CT-US-004" }, From 29549bdcf91212de495ed41017bb48c663f64196 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 16:49:58 -0600 Subject: [PATCH 38/79] ct_us_001.json , ct_us_004.json : updated timouts Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 2 +- py-scripts/tools/ct_us_004.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 8e7aba05..092cd4cf 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -179,7 +179,7 @@ }, "CT-US-001_wifi_capacity_wiphy0_wiphy1_ATH10K(9984)_sta128":{ "enabled":"TRUE", - "timeout":"360", + "timeout":"600", "load_db":"skip", "command":"lf_wifi_capacity_test.py", "args":"", diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index 1ac974ba..b6009ad6 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -178,7 +178,7 @@ }, "CT-US-004_wifi_capacity_wiphy1_ATH10K(9984)_wiphy3_ATH10K(9984)_sta128":{ "enabled":"TRUE", - "timeout":"360", + "timeout":"600", "load_db":"skip", "command":"lf_wifi_capacity_test.py", "args":"", From 08ba5b985eec341b08de495686599389315137c9 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 17:41:43 -0600 Subject: [PATCH 39/79] ct_us_001.json : reduce the test to one radio Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 1 - 1 file changed, 1 deletion(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 092cd4cf..4796d492 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -172,7 +172,6 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ct-us-001-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy0,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] From b24dd9de5162ccf6225b7b6e37738d84695e2ef7 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 17:44:34 -0600 Subject: [PATCH 40/79] ct_us_004.json : focus on single radio for now wiphy1 Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_004.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index b6009ad6..fc5f4fa2 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -163,7 +163,7 @@ " --sw_version DUT_SW --hw_version DUT_HW --serial_num DUT_SERIAL --model_num DUT_NAME" ] }, - "CT-US-004_create_chamberview_wiphy1_wiphy3_sta128":{ + "CT-US-004_create_chamberview_wiphy1_sta64":{ "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview.py", @@ -172,11 +172,10 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario CT-US-004-scenario ", " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", - " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy3,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-004_wifi_capacity_wiphy1_ATH10K(9984)_wiphy3_ATH10K(9984)_sta128":{ + "CT-US-004_wifi_capacity_wiphy1_ATH10K(9984)_sta64":{ "enabled":"TRUE", "timeout":"600", "load_db":"skip", From 9a8838629eb4c43c817a13104afd0c3a3a4e0938 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 20 Jul 2021 18:09:55 -0600 Subject: [PATCH 41/79] ct_us_004.json : ap_auto test updates Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_004.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index fc5f4fa2..34cae7d7 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -288,7 +288,6 @@ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", - " --raw_line \"profile_link 1.1 STA-AC 1 'DUT: DUT_NAME Radio-1' NA wiphy4,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, @@ -302,7 +301,7 @@ " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", - " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --radio5 1.1.wiphy1 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", " --pull_report --local_lf_report_dir REPORT_PATH", From 264fc750a6af2a609b3e6ec4043ab45c291e4812 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Wed, 21 Jul 2021 05:19:47 -0600 Subject: [PATCH 42/79] ct_us_004.json : reduce the number of stations Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_004.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index 34cae7d7..5100ac82 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -171,7 +171,7 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario CT-US-004-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 32 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, @@ -287,7 +287,7 @@ "args_list":[ " --lfmgr LF_MGR_IP --port LF_MGR_PORT --delete_scenario", " --create_scenario ucentral-scenario ", - " --raw_line \"profile_link 1.1 STA-AC 64 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", + " --raw_line \"profile_link 1.1 STA-AC 32 'DUT: DUT_NAME Radio-1' NA wiphy1,AUTO -1 NA\" ", " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA \" " ] }, From 3c5575a0b77ecfe1619dd76af8af60526bd3b0f1 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Wed, 21 Jul 2021 05:24:02 -0600 Subject: [PATCH 43/79] ct_us_002.json : disable ap_auto until debugged, preventing ghost posting. Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_002.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/ct_us_002.json b/py-scripts/tools/ct_us_002.json index b38c8694..f78e7553 100644 --- a/py-scripts/tools/ct_us_002.json +++ b/py-scripts/tools/ct_us_002.json @@ -306,7 +306,7 @@ ] }, "CT-US-002_lf_ap_auto_test": { - "enabled": "TRUE", + "enabled": "FALSE", "command": "lf_ap_auto_test.py", "timeout": "1200", "args": "", From bc92fe929870c8bb4e860f21a30d9943c07d9197 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Wed, 21 Jul 2021 05:34:48 -0600 Subject: [PATCH 44/79] Updated to 2g defaults Signed-off-by: Chuck SmileyRekiere --- py-scripts/test_l3_longevity.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/test_l3_longevity.py b/py-scripts/test_l3_longevity.py index a1ca0495..4bc6e909 100755 --- a/py-scripts/test_l3_longevity.py +++ b/py-scripts/test_l3_longevity.py @@ -1179,7 +1179,7 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m parser.add_argument('--ap_cmd_5g', help='ap_cmd_5g \'wl -i wl1 bs_data\'', default="wl -i wl1 bs_data") parser.add_argument('--ap_cmd_2g', help='ap_cmd_2g \'wl -i wl0 bs_data\'', default="wl -i wl0 bs_data") parser.add_argument('--ap_chanim_cmd_5g', help='ap_chanim_cmd_5g \'wl -i wl1 chanim_stats\'', default="wl -i wl1 chanim_stats") - parser.add_argument('--ap_chanim_cmd_2g', help='ap_chanim_cmd_2g \'w1 -i wl0 chanim_stats\'', default="wl -i w0 chanim_stats") + parser.add_argument('--ap_chanim_cmd_2g', help='ap_chanim_cmd_2g \'w1 -i wl0 chanim_stats\'', default="wl -i wl0 chanim_stats") parser.add_argument('--ap_scheduler_stats', help='--ap_scheduler_stats flag to clear stats run test then dump ul and dl stats to file', action='store_true') parser.add_argument('--ap_ofdma_stats', help='--ap_ofdma_stats flag to clear stats run test then dumps wl -i wl1 muinfo -v and wl 0i wl0 muinof -v to file', action='store_true') From 5d5e61be2f1fc090b6e193694189eccf25ab11cc Mon Sep 17 00:00:00 2001 From: anjali Date: Wed, 21 Jul 2021 19:10:38 +0530 Subject: [PATCH 45/79] changed local path name --- py-scripts/lf_rx_sensitivity_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/lf_rx_sensitivity_test.py b/py-scripts/lf_rx_sensitivity_test.py index 7ca8e212..9ca8ff84 100644 --- a/py-scripts/lf_rx_sensitivity_test.py +++ b/py-scripts/lf_rx_sensitivity_test.py @@ -216,7 +216,7 @@ class RxSensitivityTest(cv_test): self.create_and_run_test(self.load_old_cfg, self.test_name, self.instance_name, self.config_name, self.sets, self.pull_report, self.lf_host, self.lf_user, self.lf_password, - cv_cmds, ssh_port=self.ssh_port, local_path=self.local_path, + cv_cmds, ssh_port=self.ssh_port, local_lf_report_dir=self.local_path, graph_groups_file=self.graph_groups) self.rm_text_blob(self.config_name, blob_test) # To delete old config with same name From e47317350cba15ec0a5f3a2554e04df6c41b3fe0 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Wed, 21 Jul 2021 07:59:50 -0600 Subject: [PATCH 46/79] lf_json_autogen_test.py : checking into sandbox to be able to test on different hosts. (windows / linux) Signed-off-by: Chuck SmileyRekiere --- py-scripts/sandbox/lf_json_autogen_test.py | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 py-scripts/sandbox/lf_json_autogen_test.py diff --git a/py-scripts/sandbox/lf_json_autogen_test.py b/py-scripts/sandbox/lf_json_autogen_test.py new file mode 100644 index 00000000..29e9e654 --- /dev/null +++ b/py-scripts/sandbox/lf_json_autogen_test.py @@ -0,0 +1,94 @@ +#!/usr/bin/python3 + +''' +NAME: +lf_json_test.py + +PURPOSE: + + +EXAMPLE: +./lf_json_test.py - + +NOTES: + + +TO DO NOTES: + + +''' +import os +import sys +if sys.version_info[0] != 3: + print("This script requires Python3") + exit() + + +from time import sleep +import argparse +import json +#if 'py-json' not in sys.path: +# sys.path.append(os.path.join(os.path.abspath('..'), 'py-json')) +# print("path: {}".format(os.path.join(os.path.abspath('..')))) + +if 'py-json' not in sys.path: + sys.path.append(os.path.join(os.path.abspath('..'), 'py-json')) + +from LANforge import lf_json_autogen + +class lf_read_json(): + def __init__(self): + + self.timeout = 10 + + + def preprocess_data(self): + pass + + + +def main(): + # arguments + parser = argparse.ArgumentParser( + prog='lf_json_test.py', + formatter_class=argparse.RawTextHelpFormatter, + epilog='''\ + lf_json_test.py : lf json test + ''', + description='''\ +lf_json_test.py +----------- + +Summary : +--------- + + +./lf_dataplane_json.py --mgr 192.168.0.101 --port 8080 --lf_user lanforge --lf_password lanforge --instance_name dataplane-instance --config_name test_con --upstream 1.1.eth1 --dut asus_5g --duration 15s --station 1.1.13.sta0002 --download_speed 85% --upload_speed 0 --raw_line 'pkts: Custom;60;MTU' --raw_line 'cust_pkt_sz: 88 1200' --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20' --raw_line 'spatial_streams: 1 + + ''') + + #parser.add_argument('--json', help="--json json input file", default="config.json") + parser.add_argument('--cmd', help="--cmd json command", default="") + args = parser.parse_args() + json_cmd = args.cmd + print("json cmd {}".format(json_cmd)) + #with open(config_json, 'r') as config_file: + # config_data = json.load(config_file) + #print(config_data) + + lf_get = lf_json_autogen.LFJsonGet(lfclient_host='192.168.0.101', + lfclient_port=8080, + debug_=True, + ) + + duts = lf_get.get_chamber(fields = [lf_get.duts]) + print("duts {}".format(duts)) + + + + + print("END lf_read_json.py") + + +if __name__ == "__main__": + main() \ No newline at end of file From fae9c2781a93113e6e9abc8a89d950b4035fa8ac Mon Sep 17 00:00:00 2001 From: jitendracandela Date: Wed, 21 Jul 2021 21:06:40 +0530 Subject: [PATCH 47/79] changed comments --- py-scripts/lf_rx_sensitivity_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/py-scripts/lf_rx_sensitivity_test.py b/py-scripts/lf_rx_sensitivity_test.py index 9ca8ff84..f51ed36c 100644 --- a/py-scripts/lf_rx_sensitivity_test.py +++ b/py-scripts/lf_rx_sensitivity_test.py @@ -251,9 +251,9 @@ def main(): Example 2: - ./lf_dataplane_test.py --json .json + ./lf_rx_sensitivity_test.py --json .json - see sample json file: lf_dataplane_config.json + see sample json file: lf_rx_sensitivity_config.json Sample .json between using eth1 and eth2 { @@ -261,7 +261,7 @@ def main(): "port":"8080", "lf_user":"lanforge", "lf_password":"lanforge", - "instance_name":"dataplane-instance", + "instance_name":"rx-sensitivity-instance", "config_name":"test_con", "upstream":"1.1.eth1", "dut":"asus_5g", @@ -278,7 +278,7 @@ def main(): "port":"8080", "lf_user":"lanforge", "lf_password":"lanforge", - "instance_name":"dataplane-instance", + "instance_name":"rx-sensitivity-instance", "config_name":"test_con", "upstream":"1.1.eth1", "dut":"asus_5g", @@ -296,7 +296,7 @@ def main(): parser.add_argument('--json', help="--json json input file", default="") parser.add_argument("-u", "--upstream", type=str, default="", - help="Upstream port for wifi capacity test ex. 1.1.eth2") + help="Upstream port for rx sensitivity test ex. 1.1.eth2") parser.add_argument("--station", type=str, default="", help="Station to be used in this test, example: 1.1.sta01500") From 2828bd077baaff45fa119ed47495347d5d5af2aa Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Wed, 21 Jul 2021 14:18:11 -0700 Subject: [PATCH 48/79] Add failure message when a KPI is not found in a folder for GhostRequest Automatic script to run influx, grafana, and ghost from wifi capacity and dataplane. Minor fix in csv_to_influx for correcting missing values Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 142 +++++++++++++++++-------------- py-scripts/csv_to_influx.py | 3 +- py-scripts/influxgrafanaghost.sh | 46 ++++++++++ 3 files changed, 126 insertions(+), 65 deletions(-) mode change 100644 => 100755 py-scripts/influxgrafanaghost.sh diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 8ae34706..5ee5a0c9 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -291,8 +291,7 @@ class GhostRequest: target_folders.append(folder) testbeds = list() - webpages = self.webpages - pdfs = self.pdfs + webpagesandpdfs = list() high_priority_list = list() low_priority_list = list() images = list() @@ -304,6 +303,7 @@ class GhostRequest: target_file = '%s/kpi.csv' % target_folder df = csvreader.read_csv(file=target_file, sep='\t') test_rig = csvreader.get_column(df, 'test-rig')[0] + test_id = csvreader.get_column(df, 'test-id')[0] pass_fail = Counter(csvreader.get_column(df, 'pass/fail')) test_pass_fail.append(pass_fail) dut_hw = csvreader.get_column(df, 'dut-hw-version')[0] @@ -323,66 +323,78 @@ class GhostRequest: text = text + 'Tests passed: 0
' \ 'Tests failed : 0
' \ 'Percentage of tests passed: Not Applicable
' + testbeds.append(test_rig) + if testbed is None: + testbed = test_rig + + if test_run is None: + test_run = now.strftime('%B-%d-%Y-%I-%M-%p-report') + + local_path = '/home/%s/%s/%s/%s' % (user_push, customer, testbed, test_run) + + transport = paramiko.Transport(ghost_host, port) + transport.connect(None, user_push, password_push) + sftp = paramiko.sftp_client.SFTPClient.from_transport(transport) + + if self.debug: + print(local_path) + print(target_folder) + + try: + sftp.mkdir('/home/%s/%s/%s' % (user_push, customer, testbed)) + except: + pass + + try: + sftp.mkdir(local_path) + except: + pass + scp_push.put(target_folder, local_path, recursive=True) + files = sftp.listdir(local_path + '/' + target_folder) + pdfs = list() + webpages = list() + for file in files: + if 'pdf' in file: + url = 'http://%s/%s/%s/%s/%s/%s' % ( + ghost_host, customer.strip('/'), testbed, test_run, target_folder, file) + pdfs.append('PDF' % url) + if 'index.html' in files: + url = 'http://%s/%s/%s/%s/%s/%s' % ( + ghost_host, customer.strip('/'), testbed, test_run, target_folder, 'index.html') + webpages.append('HTML' % url) + webpagesandpdfsappend = dict() + webpagesandpdfsappend[test_id] = pdfs + webpages + webpagesandpdfs.append(webpagesandpdfsappend) + scp_push.close() + self.upload_images(target_folder) + for image in self.images: + if 'kpi-' in image: + if '-print' not in image: + images.append('' % image) + self.images = [] + + results = csvreader.get_columns(df, ['short-description', 'numeric-score', 'test details', 'pass/fail', + 'test-priority']) + + results[0] = ['Short Description', 'Score', 'Test Details', 'Pass or Fail', 'test-priority'] + for row in results: + try: + row[1] = round(float(row[1]), 2) + except: + pass + + low_priority = csvreader.filter_df(results, 'test-priority', 'less than', 94) + high_priority = csvreader.filter_df(results, 'test-priority', 'greater than or equal to', 95) + high_priority_list.append(high_priority) + + low_priority_list.append(low_priority) except: print("Failure") target_folders.remove(target_folder) - break - testbeds.append(test_rig) - if testbed is None: - testbed = test_rig - - if test_run is None: - test_run = now.strftime('%B-%d-%Y-%I-%M-%p-report') - - local_path = '/home/%s/%s/%s/%s' % (user_push, customer, testbed, test_run) - - transport = paramiko.Transport(ghost_host, port) - transport.connect(None, user_push, password_push) - sftp = paramiko.sftp_client.SFTPClient.from_transport(transport) - - if self.debug: - print(local_path) - print(target_folder) - - try: - sftp.mkdir('/home/%s/%s/%s' % (user_push, customer, testbed)) - except: - pass - - try: - sftp.mkdir(local_path) - except: - pass - scp_push.put(target_folder, local_path, recursive=True) - files = sftp.listdir(local_path + '/' + target_folder) - for file in files: - if 'pdf' in file: - url = 'http://%s/%s/%s/%s/%s/%s' % ( - ghost_host, customer.strip('/'), testbed, test_run, target_folder, file) - pdfs.append('PDF of results: %s' % (url, file)) - if 'index.html' in files: - url = 'http://%s/%s/%s/%s/%s/%s' % ( - ghost_host, customer.strip('/'), testbed, test_run, target_folder, 'index.html') - webpages.append('Results webpage: %s
' % (url, target_folder)) - scp_push.close() - self.upload_images(target_folder) - for image in self.images: - if 'kpi-' in image: - if '-print' not in image: - images.append('' % image) - self.images = [] - - results = csvreader.get_columns(df, ['short-description', 'numeric-score', 'test details', 'pass/fail', - 'test-priority']) - - results[0] = ['Short Description', 'Score', 'Test Details', 'Pass or Fail', 'test-priority'] - - low_priority = csvreader.filter_df(results, 'test-priority', 'less than', 94) - high_priority = csvreader.filter_df(results, 'test-priority', 'greater than or equal to', 95) - high_priority_list.append(high_priority) - - low_priority_list.append(low_priority) + failuredict = dict() + failuredict[target_folder] = ['Failure'] + webpagesandpdfs.append(failuredict) test_pass_fail_results = sum((Counter(test) for test in test_pass_fail), Counter()) @@ -391,7 +403,7 @@ class GhostRequest: print(times) end_time = max(times) start_time = '2021-07-01' - end_time = datetime.utcfromtimestamp(end_time)#.strftime('%Y-%m-%d %H:%M:%S') + end_time = datetime.utcfromtimestamp(end_time) # .strftime('%Y-%m-%d %H:%M:%S') now = time.time() offset = datetime.fromtimestamp(now) - datetime.utcfromtimestamp(now) end_time = end_time + offset @@ -473,10 +485,14 @@ class GhostRequest: dut_table = dut_table + '' text = text + dut_table - for article in zip(pdfs, webpages): - if self.debug: - print(article) - text = text + article[0] + ' | ' + article[1] + for dictionary in webpagesandpdfs: + text += list(dictionary.keys())[0] + ' report: ' + for value in dictionary.values(): + for webpage in value: + text += webpage + if value.index(webpage) + 1 != len(value): + text += ' | ' + text += '
' for image in images: text = text + image diff --git a/py-scripts/csv_to_influx.py b/py-scripts/csv_to_influx.py index b0056a82..f9124813 100755 --- a/py-scripts/csv_to_influx.py +++ b/py-scripts/csv_to_influx.py @@ -57,8 +57,6 @@ class CSVtoInflux(): # Submit data to the influx db if configured to do so. def post_to_influx(self): df = self.read_csv(self.target_csv) - for row in df: - row =[sub.replace('NaN','0') for sub in row] length = list(range(0, len(df[0]))) columns = dict(zip(df[0], length)) print('columns: %s' % columns) @@ -68,6 +66,7 @@ class CSVtoInflux(): 'dut-hw-version', 'dut-sw-version', 'dut-serial-num', 'test-rig', 'Units'] csv_vs_influx = dict(zip(csv_variables, influx_variables)) for row in df[1:]: + row = [sub.replace('NaN', '0') for sub in row] tags = dict() print("row: %s" % row) short_description = row[columns['short-description']] diff --git a/py-scripts/influxgrafanaghost.sh b/py-scripts/influxgrafanaghost.sh old mode 100644 new mode 100755 index e69de29b..b65773c3 --- a/py-scripts/influxgrafanaghost.sh +++ b/py-scripts/influxgrafanaghost.sh @@ -0,0 +1,46 @@ +#! /bin/bash + +MGR=192.168.100.213 +LFUSER=lanforge +LOCALDIR=/home/matthew/Documents/lanforge-scripts/py-scripts/lftest +TESTRIG="Matthew-ct523c" + +GHOSTTOKEN=60df4b0175953f400cd30650:d50e1fabf9a9b5d3d30fe97bc3bf04971d05496a89e92a169a0d72357c81f742 + +INFLUXTOKEN=31N9QDhjJHBu4eMUlMBwbK3sOjXLRAhZuCzZGeO8WVCj-xvR8gZWWvRHOcuw-5RHeB7xBFnLs7ZV023k4koR1A== +INFLUXHOST=c7-grafana.candelatech.com + +GRAFANATOKEN=eyJrIjoiS1NGRU8xcTVBQW9lUmlTM2dNRFpqNjFqV05MZkM0dzciLCJuIjoibWF0dGhldyIsImlkIjoxfQ== + +rm -r ${LOCALDIR} + +mkdir ${LOCALDIR} + +./scenario.py --mgr ${MGR} --load BLANK + +sleep 10s + +./create_l3.py --mgr ${MGR} --num_stations 4 --ssid stidmatt --password stidmatt --security wpa2 --radio wiphy0 + +./lf_dataplane_test.py --mgr ${MGR} --lf_user ${LFUSER} --lf_password lanforge --instance_name wct_instance \ +--config_name 64_stations --upstream 1.1.eth1 --influx_host c7-grafana.candelatech.com --influx_org Candela \ +--influx_token ${INFLUXTOKEN} --influx_bucket stidmatt --test_rig {TESTRIG} --influx_tag testbed ${TESTRIG} \ +--station 1.1.sta0000 --set DUT_NAME linksys-8450 --local_lf_report_dir ${LOCALDIR} \ +--pull_report \ +--download_speed 85% --upload_speed 0 \ +--raw_line 'cust_pkt_sz: 88 1200' \ +--raw_line 'directions: DUT Transmit;DUT Receive' \ +--raw_line 'traffic_types: UDP' \ +--test_rig Testbed-01 --pull_report +#--raw_line 'pkts: Custom;60;142;256;512;1024;MTU' + +./lf_wifi_capacity_test.py --mgr ${MGR} --lf_user ${LFUSER} --lf_password lanforge --instance_name linksys-8450 \ +--config_name wifi_config --upstream 1.1.eth1 --radio wiphy0 --ssid lanforge --paswd lanforge --security wpa2 \ +--influx_host ${INFLUXHOST} --influx_org Candela --influx_bucket stidmatt --test_rig ${TESTRIG} \ +--influx_token ${INFLUXTOKEN} --influx_tag testbed ${TESTRIG} --set DUT_NAME linksys-8450 --local_lf_report_dir \ +${LOCALDIR} --enable FALSE --pull_report + +./ghost_profile.py --ghost_token ${GHOSTTOKEN} --ghost_host 192.168.100.153 --authors Matthew --customer candela \ +--user_push lanforge --password_push lanforge --kpi_to_ghost --grafana_token ${GRAFANATOKEN} \ +--grafana_host 192.168.100.201 --grafana_bucket lanforge_qa_testing --influx_host ${INFLUXHOST} --influx_org Candela \ +--influx_token ${INFLUXTOKEN} --influx_bucket stidmatt --parent_folder ${LOCALDIR} \ No newline at end of file From f2c853ea271d6e798eb5880324383450d29e9fbc Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Wed, 21 Jul 2021 13:46:54 -0600 Subject: [PATCH 49/79] lf_check.py : notes for rebooting the lanforge : seeing some dhcp exhaustion and high latency values for testbeds that have been running for a while that appear to clear up once the entire testbed is power cycled Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 24faeb44..96cda1b1 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -37,6 +37,15 @@ GENERIC NOTES: B. for the kernel version uname -r (just verion ), uname -a build date C. for getting the radio firmware: ethtool -i wlan0 +# may need to build in a testbed reboot at the beginning of a day's testing... +# seeing some dhcp exhaustion and high latency values for testbeds that have been running +# for a while that appear to clear up once the entire testbed is power cycled + +# issue a shutdown command on the lanforge(s) +# ssh root@lanforgex reboot (need to verify) or do a shutdown +# send curl command to remote power switch to reboot testbed +# curl -s http://admin:lanforge@192.168.100.237/outlet?1=CCL -o /dev/null 2>&1 +# ''' import datetime import pprint From fe321fbbb0fa7b2da9fc8f675f3f7eeddb25fe86 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 06:49:16 -0600 Subject: [PATCH 50/79] lf_check.py : notes: ./lfclient.bash -cli-socket 3990 -s LF_MGR Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 96cda1b1..d30c4bd7 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -32,6 +32,10 @@ Using .json: 2. update lf_check.json to enable (TRUE) tests to be run in the test suite, the default TEST_DICTIONARY GENERIC NOTES: +Starting LANforge: + On local or remote system: /home/lanforge/LANforgeGUI/lfclient.bash -cli-socket 3990 -s LF_MGR + On local system the -s LF_MGR will be local_host if not provided + 1. add server (telnet localhost 4001) build info, GUI build sha, and Kernel version to the output. A. for build information on LANforgeGUI : /home/lanforge ./btserver --version B. for the kernel version uname -r (just verion ), uname -a build date From 95f3c2febffd1f70aaec939c61784ef3f9efdabe Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 13:33:31 -0600 Subject: [PATCH 51/79] lf_check.py : Note updated for features Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index d30c4bd7..442c132f 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -31,6 +31,10 @@ Using .json: 1. copy lf_check.json to .json this will avoide .json being overwritten on git pull 2. update lf_check.json to enable (TRUE) tests to be run in the test suite, the default TEST_DICTIONARY +NOTES: getting radio information: +1. curl -H 'Accept: application/json' http://localhost:8080/radiostatus/all | json_pp | less +2. response = self.json_get("/radiostatus/all") + GENERIC NOTES: Starting LANforge: On local or remote system: /home/lanforge/LANforgeGUI/lfclient.bash -cli-socket 3990 -s LF_MGR From feb8594abdb69f0f426066f42d9ce3f1eeae6899 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 16:24:57 -0600 Subject: [PATCH 52/79] test_l3_longevity.py : need to keep track if the mac is found Signed-off-by: Chuck SmileyRekiere --- py-scripts/test_l3_longevity.py | 136 +++++++++++++++++--------------- 1 file changed, 73 insertions(+), 63 deletions(-) diff --git a/py-scripts/test_l3_longevity.py b/py-scripts/test_l3_longevity.py index 4bc6e909..b059e75c 100755 --- a/py-scripts/test_l3_longevity.py +++ b/py-scripts/test_l3_longevity.py @@ -654,6 +654,8 @@ class L3VariableTime(Realm): endps = [] ap_row = [] ap_stats_col_titles = [] + mac_found_5g = False + mac_found_2g = False while cur_time < end_time: #interval_time = cur_time + datetime.timedelta(seconds=5) @@ -712,7 +714,7 @@ class L3VariableTime(Realm): pprint(response) else: # print("response".format(response)) - # pprint(response) + pprint(response) p = response['interface'] #print("#### From LANforge: p, response['insterface']:{}".format(p)) mac = p['mac'] @@ -726,47 +728,51 @@ class L3VariableTime(Realm): if self.ap_test_mode: if split_row[0].lower() != mac.lower(): ap_row = split_row + mac_found_5g = True else: try: # split_row[0].lower() , mac from AP # mac.lower() , mac from LANforge if split_row[0].lower() == mac.lower(): ap_row = split_row + mac_found_5g = True except: print(" 'No stations are currently associated.'? from AP") print(" since possibly no stations: excption on compare split_row[0].lower() ") - print("selected ap_row (from split_row): {}".format(ap_row)) + if mac_found_5g == True: + mac_found_5g = False + print("selected ap_row (from split_row): {}".format(ap_row)) - # Find latency, jitter for connections using this port. - latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) + # Find latency, jitter for connections using this port. + latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) - # now report the ap_chanim_stats along side of the ap_stats_5g - xtop_reported = False - for row in ap_chanim_stats_rows_5g: - split_row = row.split() - if xtop_reported: - try: - xtop = split_row[7] - channel_utilization = 100 - int(xtop) - except: - print("detected chanspec with reading chanim_stats, failed reading xtop") - # should be only one channel utilization - break - else: - try: - if split_row[0].lower() == 'chanspec': - xtop_reported = True - except: - print("Error reading xtop") - # ap information is passed with ap_row so all information needs to be contained in ap_row - ap_row.append(str(channel_utilization)) - print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) - print("ap_row {ap_row}".format(ap_row=ap_row)) - - ap_stats_5g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] - - self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, - latency, jitter, tput, ap_row, ap_stats_5g_col_titles) #ap_stats_5g_col_titles used as a length + # now report the ap_chanim_stats along side of the ap_stats_5g + xtop_reported = False + for row in ap_chanim_stats_rows_5g: + split_row = row.split() + if xtop_reported: + try: + xtop = split_row[7] + channel_utilization = 100 - int(xtop) + except: + print("detected chanspec with reading chanim_stats, failed reading xtop") + # should be only one channel utilization + break + else: + try: + if split_row[0].lower() == 'chanspec': + xtop_reported = True + except: + print("Error reading xtop") + # ap information is passed with ap_row so all information needs to be contained in ap_row + ap_row.append(str(channel_utilization)) + print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) + print("ap_row {ap_row}".format(ap_row=ap_row)) + + ap_stats_5g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] + + self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, + latency, jitter, tput, ap_row, ap_stats_5g_col_titles) #ap_stats_5g_col_titles used as a length if self.ap_test_mode: # Create the test data as a continuous string ap_stats_2g="{}{}{}{}{}{}".format("root@Docsis-Gateway:~# wl -i wl1 bs_data\n", @@ -808,7 +814,7 @@ class L3VariableTime(Realm): pprint(response) else: # print("response".format(response)) - # pprint(response) + pprint(response) p = response['interface'] #print("#### From LANforge: p, response['insterface']:{}".format(p)) mac = p['mac'] @@ -822,47 +828,51 @@ class L3VariableTime(Realm): if self.ap_test_mode: if split_row[0].lower() != mac.lower(): ap_row = split_row + mac_found_2g = True else: try: # split_row[0].lower() , mac from AP # mac.lower() , mac from LANforge if split_row[0].lower() == mac.lower(): ap_row = split_row + mac_found_2g = True except: print(" 'No stations are currently associated.'? from AP") - print(" since possibly no stations: excption on compare split_row[0].lower() ") - print("selected ap_row (from split_row): {}".format(ap_row)) + print(" since possibly no stations: excption on compare split_row[0].lower() ") + if mac_found_2g == True: + mac_found_2g = False + print("selected ap_row (from split_row): {}".format(ap_row)) - # Find latency, jitter for connections using this port. - latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) + # Find latency, jitter for connections using this port. + latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) - # now report the ap_chanim_stats along side of the ap_stats_2g - xtop_reported = False - for row in ap_chanim_stats_rows_2g: - split_row = row.split() - if xtop_reported: - try: - xtop = split_row[7] - channel_utilization = 100 - int(xtop) - except: - print("detected chanspec with reading chanim_stats, failed reading xtop") - # should be only one channel utilization - break - else: - try: - if split_row[0].lower() == 'chanspec': - xtop_reported = True - except: - print("Error reading xtop") - # ap information is passed with ap_row so all information needs to be contained in ap_row - ap_row.append(str(channel_utilization)) - print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) - print("ap_row {ap_row}".format(ap_row=ap_row)) - - ap_stats_2g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] - - self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, - latency, jitter, tput, ap_row, ap_stats_2g_col_titles) #ap_stats_2g_col_titles used as a length + # now report the ap_chanim_stats along side of the ap_stats_2g + xtop_reported = False + for row in ap_chanim_stats_rows_2g: + split_row = row.split() + if xtop_reported: + try: + xtop = split_row[7] + channel_utilization = 100 - int(xtop) + except: + print("detected chanspec with reading chanim_stats, failed reading xtop") + # should be only one channel utilization + break + else: + try: + if split_row[0].lower() == 'chanspec': + xtop_reported = True + except: + print("Error reading xtop") + # ap information is passed with ap_row so all information needs to be contained in ap_row + ap_row.append(str(channel_utilization)) + print("channel_utilization {channel_utilization}".format(channel_utilization=channel_utilization)) + print("ap_row {ap_row}".format(ap_row=ap_row)) + + ap_stats_2g_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo','channel_utilization'] + + self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, + latency, jitter, tput, ap_row, ap_stats_2g_col_titles) #ap_stats_2g_col_titles used as a length else: From 53015a55017be540560767da1a5f344bbaef885a Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Thu, 22 Jul 2021 15:23:31 -0700 Subject: [PATCH 53/79] Updating to make better Ghost posts, with more details in the first table, and enabling reading test_tags from the kpi.csv files. Signed-off-by: Matthew Stidham --- py-dashboard/GhostRequest.py | 80 ++++++++++++++++++++++++----- py-dashboard/GrafanaRequest.py | 36 ++++++++++--- py-json/cv_test_manager.py | 5 ++ py-scripts/csv_to_influx.py | 4 +- py-scripts/influxgrafanaghost.sh | 31 ++++++++--- py-scripts/lf_wifi_capacity_test.py | 8 ++- py-scripts/regression_test.sh | 2 +- 7 files changed, 133 insertions(+), 33 deletions(-) diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py index 5ee5a0c9..ff820793 100644 --- a/py-dashboard/GhostRequest.py +++ b/py-dashboard/GhostRequest.py @@ -194,7 +194,8 @@ class GhostRequest: def upload_image(self, image): - print(image) + if self.debug: + print(image) ghost_json_url = self.ghost_json_url + '/admin/images/upload/' token = self.encode_token() @@ -202,7 +203,8 @@ class GhostRequest: proc = subprocess.Popen(bashCommand, shell=True, stdout=subprocess.PIPE) output = proc.stdout.read().decode('utf-8') - print(output) + if self.debug: + print(output) self.images.append(json.loads(output)['images'][0]['url']) def upload_images(self, @@ -211,7 +213,8 @@ class GhostRequest: if 'kpi' in image: if 'png' in image: self.upload_image(folder + '/' + image) - print('images %s' % self.images) + if self.debug: + print('images %s' % self.images) def custom_post(self, folder, @@ -274,16 +277,18 @@ class GhostRequest: scp_push = SCPClient(ssh_push.get_transport()) if parent_folder is not None: - print("parent_folder %s" % parent_folder) files = os.listdir(parent_folder) - print(files) + if self.debug: + print("parent_folder %s" % parent_folder) + print(files) for file in files: if os.path.isdir(parent_folder + '/' + file) is True: if os.path.exists(file): shutil.rmtree(file) shutil.copytree(parent_folder + '/' + file, file) target_folders.append(file) - print('Target folders: %s' % target_folders) + if self.debug: + print('Target folders: %s' % target_folders) else: for folder in folders: if self.debug: @@ -297,6 +302,10 @@ class GhostRequest: images = list() times = list() test_pass_fail = list() + subtest_pass_fail = list() + subtest_pass_total = 0 + subtest_fail_total = 0 + test_tag = dict() for target_folder in target_folders: try: @@ -304,13 +313,24 @@ class GhostRequest: df = csvreader.read_csv(file=target_file, sep='\t') test_rig = csvreader.get_column(df, 'test-rig')[0] test_id = csvreader.get_column(df, 'test-id')[0] + test_tag[test_id] = (csvreader.get_column(df, 'test-tag')[0]) pass_fail = Counter(csvreader.get_column(df, 'pass/fail')) test_pass_fail.append(pass_fail) dut_hw = csvreader.get_column(df, 'dut-hw-version')[0] dut_sw = csvreader.get_column(df, 'dut-sw-version')[0] dut_model = csvreader.get_column(df, 'dut-model-num')[0] dut_serial = csvreader.get_column(df, 'dut-serial-num')[0] - duts = [dut_serial, dut_hw, dut_sw, dut_model, test_rig] + subtest_pass = csvreader.get_column(df, 'Subtest-Pass') + subtest_fail = csvreader.get_column(df, 'Subtest-Fail') + for result in subtest_pass: + subtest_pass_total += int(result) + for result in subtest_fail: + subtest_fail_total += int(result) + subtest_pass_fail_list = dict() + subtest_pass_fail_list['PASS'] = subtest_pass_total + subtest_pass_fail_list['FAIL'] = subtest_fail_total + subtest_pass_fail.append(subtest_pass_fail_list) + duts = [dut_serial, dut_hw, dut_sw, dut_model, test_rig, test_tag] times_append = csvreader.get_column(df, 'Date') for target_time in times_append: times.append(float(target_time) / 1000) @@ -398,12 +418,13 @@ class GhostRequest: test_pass_fail_results = sum((Counter(test) for test in test_pass_fail), Counter()) + subtest_pass_fail_results = sum((Counter(test) for test in subtest_pass_fail), Counter()) if self.debug: print(times) end_time = max(times) start_time = '2021-07-01' - end_time = datetime.utcfromtimestamp(end_time) # .strftime('%Y-%m-%d %H:%M:%S') + end_time = datetime.utcfromtimestamp(end_time) now = time.time() offset = datetime.fromtimestamp(now) - datetime.utcfromtimestamp(now) end_time = end_time + offset @@ -417,6 +438,8 @@ class GhostRequest: ['Short Description', 'Score', 'Test Details']) high_priority.append(['Total Passed', test_pass_fail_results['PASS'], 'Total subtests passed during this run']) high_priority.append(['Total Failed', test_pass_fail_results['FAIL'], 'Total subtests failed during this run']) + high_priority.append(['Subtests Passed', subtest_pass_fail_results['PASS'], 'Total subtests passed during this run']) + high_priority.append(['Subtests Failed', subtest_pass_fail_results['FAIL'], 'Total subtests failed during this run']) if title is None: title = end_time.strftime('%B %d, %Y %I:%M %p report') @@ -434,7 +457,8 @@ class GhostRequest: from_date=start_time, to_date=end_time.strftime('%Y-%m-%d %H:%M:%S'), pass_fail='GhostRequest', - testbed=testbeds[0]) + testbed=testbeds[0], + test_tag=test_tag) if self.influx_token is not None: influxdb = RecordInflux(_influx_host=self.influx_host, @@ -442,7 +466,7 @@ class GhostRequest: _influx_org=self.influx_org, _influx_token=self.influx_token, _influx_bucket=self.influx_bucket) - short_description = 'Ghost Post Tests passed' # variable name + short_description = 'Tests passed' # variable name numeric_score = test_pass_fail_results['PASS'] # value tags = dict() print(datetime.utcfromtimestamp(max(times))) @@ -452,7 +476,7 @@ class GhostRequest: date = datetime.utcfromtimestamp(max(times)).isoformat() influxdb.post_to_influx(short_description, numeric_score, tags, date) - short_description = 'Ghost Post Tests failed' # variable name + short_description = 'Tests failed' # variable name numeric_score = test_pass_fail_results['FAIL'] # value tags = dict() tags['testbed'] = testbeds[0] @@ -461,12 +485,38 @@ class GhostRequest: date = datetime.utcfromtimestamp(max(times)).isoformat() influxdb.post_to_influx(short_description, numeric_score, tags, date) + short_description = 'Subtests passed' # variable name + numeric_score = subtest_pass_fail_results['PASS'] # value + tags = dict() + print(datetime.utcfromtimestamp(max(times))) + tags['testbed'] = testbeds[0] + tags['script'] = 'GhostRequest' + tags['Graph-Group'] = 'Subtest PASS' + date = datetime.utcfromtimestamp(max(times)).isoformat() + influxdb.post_to_influx(short_description, numeric_score, tags, date) + + short_description = 'Subtests failed' # variable name + numeric_score = subtest_pass_fail_results['FAIL'] # value + tags = dict() + tags['testbed'] = testbeds[0] + tags['script'] = 'GhostRequest' + tags['Graph-Group'] = 'Subtest FAIL' + date = datetime.utcfromtimestamp(max(times)).isoformat() + influxdb.post_to_influx(short_description, numeric_score, tags, date) + text = 'Testbed: %s
' % testbeds[0] + test_tag_table = '' + for tag in list(set(test_tag.values())): + print(tag) + test_tag_table += ( + 'Test Tag' \ + '%s' % tag) dut_table = '' \ '' \ '' \ '' \ + '%s' \ '' \ '' \ '' \ @@ -478,9 +528,13 @@ class GhostRequest: '' \ '' \ '' \ + '' \ + '' \ + '' \ + '' \ '' % ( - duts[4], duts[1], duts[2], duts[3], duts[0], test_pass_fail_results['PASS'], - test_pass_fail_results['FAIL']) + duts[4], test_tag_table, duts[1], duts[2], duts[3], duts[0], test_pass_fail_results['PASS'], + test_pass_fail_results['FAIL'], subtest_pass_total, subtest_fail_total) dut_table = dut_table + '
Test Information
Testbed%s
DUT_HW%s
DUT_SW
Tests passed%s
Tests failed%s
Subtests passed%s
Subtests failed%s
' text = text + dut_table diff --git a/py-dashboard/GrafanaRequest.py b/py-dashboard/GrafanaRequest.py index a6349938..302c29a0 100644 --- a/py-dashboard/GrafanaRequest.py +++ b/py-dashboard/GrafanaRequest.py @@ -137,6 +137,17 @@ class GrafanaRequest: self.units[script] = dict() for index in range(0, len(graph_groups)): self.units[script][graph_groups[index]] = units[index] + subtests = 0 + for score in list(self.csvreader.get_column(csv, 'Subtest-Pass')): + subtests += int(score) + for score in list(self.csvreader.get_column(csv, 'Subtest-Fail')): + subtests += int(score) + if subtests > 0: + dictionary[script].append('Subtests passed') + dictionary[script].append('Subtests failed') + print(subtests) + for item in dictionary[script]: + print('%s, %s' % (item, type(item))) print(dictionary) return dictionary @@ -146,7 +157,8 @@ class GrafanaRequest: groupBy, index, graph_group, - testbed): + testbed, + test_tag=None): query = ( 'from(bucket: "%s")\n ' '|> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n ' @@ -158,6 +170,9 @@ class GrafanaRequest: if graph_group is not None: graphgroup = ('|> filter(fn: (r) => r["Graph-Group"] == "%s")\n' % graph_group) query += graphgroup + if test_tag is not None: + graphgroup = ('|> filter(fn: (r) => r["Test-Tag"] == "%s")\n' % test_tag) + query += graphgroup if testbed is not None: query += ('|> filter(fn: (r) => r["testbed"] == "%s")\n' % testbed) targets = dict() @@ -195,7 +210,8 @@ class GrafanaRequest: to_date='now', graph_height=8, graph__width=12, - pass_fail=None): + pass_fail=None, + test_tag=None): options = string.ascii_lowercase + string.ascii_uppercase + string.digits uid = ''.join(random.choice(options) for i in range(9)) input1 = dict() @@ -261,7 +277,16 @@ class GrafanaRequest: targets = list() counter = 0 - new_target = self.maketargets(bucket, scriptname, groupBy, counter, graph_group, testbed) + try: + new_target = self.maketargets(bucket, + scriptname, + groupBy, + counter, + graph_group, + testbed, + test_tag=test_tag[scriptname]) + except: + new_target = self.maketargets(bucket, scriptname, groupBy, counter, graph_group, testbed) targets.append(new_target) fieldConfig = dict() @@ -331,10 +356,7 @@ class GrafanaRequest: panel['title'] = scriptname + ' ' + graph_group else: panel['title'] = scriptname - if 'PASS' in panel['title']: - panel['title'] = 'Total Passed' - if 'FAIL' in panel['title']: - panel['title'] = 'Total Failed' + print(panel['title']) panel['transformations'] = list() panel['transformations'].append(transformation) panel['type'] = "graph" diff --git a/py-json/cv_test_manager.py b/py-json/cv_test_manager.py index cb764e35..54647fa6 100644 --- a/py-json/cv_test_manager.py +++ b/py-json/cv_test_manager.py @@ -20,6 +20,9 @@ def cv_base_adjust_parser(args): # TODO: In future, can use TestRig once that GUI update has propagated args.set.append(["Test Rig ID:", args.test_rig]) + if args.test_tag != "": + args.set.append(["TestTag", args.test_tag]) + if args.influx_host is not None: if not args.pull_report: print("Specified influx host without pull_report, will enabled pull_request.") @@ -60,6 +63,8 @@ def cv_add_base_parser(parser): # Reporting info parser.add_argument("--test_rig", default="", help="Specify the test rig info for reporting purposes, for instance: testbed-01") + parser.add_argument("--test_tag", default="", + help="Specify the test tag info for reporting purposes, for instance: testbed-01") influx_add_parser_args(parser) # csv_to_influx diff --git a/py-scripts/csv_to_influx.py b/py-scripts/csv_to_influx.py index f9124813..c26908f6 100755 --- a/py-scripts/csv_to_influx.py +++ b/py-scripts/csv_to_influx.py @@ -61,9 +61,9 @@ class CSVtoInflux(): columns = dict(zip(df[0], length)) print('columns: %s' % columns) influx_variables = ['script', 'short-description', 'test_details', 'Graph-Group', - 'DUT-HW-version', 'DUT-SW-version', 'DUT-Serial-Num', 'testbed', 'Units'] + 'DUT-HW-version', 'DUT-SW-version', 'DUT-Serial-Num', 'testbed', 'Test Tag', 'Units'] csv_variables = ['test-id', 'short-description', 'test details', 'Graph-Group', - 'dut-hw-version', 'dut-sw-version', 'dut-serial-num', 'test-rig', 'Units'] + 'dut-hw-version', 'dut-sw-version', 'dut-serial-num', 'test-rig', 'test-tag', 'Units'] csv_vs_influx = dict(zip(csv_variables, influx_variables)) for row in df[1:]: row = [sub.replace('NaN', '0') for sub in row] diff --git a/py-scripts/influxgrafanaghost.sh b/py-scripts/influxgrafanaghost.sh index b65773c3..99587451 100755 --- a/py-scripts/influxgrafanaghost.sh +++ b/py-scripts/influxgrafanaghost.sh @@ -9,6 +9,7 @@ GHOSTTOKEN=60df4b0175953f400cd30650:d50e1fabf9a9b5d3d30fe97bc3bf04971d05496a89e9 INFLUXTOKEN=31N9QDhjJHBu4eMUlMBwbK3sOjXLRAhZuCzZGeO8WVCj-xvR8gZWWvRHOcuw-5RHeB7xBFnLs7ZV023k4koR1A== INFLUXHOST=c7-grafana.candelatech.com +INFLUXBUCKET=stidmatt GRAFANATOKEN=eyJrIjoiS1NGRU8xcTVBQW9lUmlTM2dNRFpqNjFqV05MZkM0dzciLCJuIjoibWF0dGhldyIsImlkIjoxfQ== @@ -20,27 +21,41 @@ mkdir ${LOCALDIR} sleep 10s -./create_l3.py --mgr ${MGR} --num_stations 4 --ssid stidmatt --password stidmatt --security wpa2 --radio wiphy0 +./create_l3.py --mgr ${MGR} --num_stations 4 --ssid stidmatt2 --password stidmatt2 --security wpa2 --radio wiphy0 ./lf_dataplane_test.py --mgr ${MGR} --lf_user ${LFUSER} --lf_password lanforge --instance_name wct_instance \ --config_name 64_stations --upstream 1.1.eth1 --influx_host c7-grafana.candelatech.com --influx_org Candela \ ---influx_token ${INFLUXTOKEN} --influx_bucket stidmatt --test_rig {TESTRIG} --influx_tag testbed ${TESTRIG} \ +--influx_token ${INFLUXTOKEN} --influx_bucket ${INFLUXBUCKET} --test_rig ${TESTRIG} --influx_tag testbed ${TESTRIG} \ --station 1.1.sta0000 --set DUT_NAME linksys-8450 --local_lf_report_dir ${LOCALDIR} \ --pull_report \ --download_speed 85% --upload_speed 0 \ --raw_line 'cust_pkt_sz: 88 1200' \ --raw_line 'directions: DUT Transmit;DUT Receive' \ ---raw_line 'traffic_types: UDP' \ ---test_rig Testbed-01 --pull_report +--raw_line 'traffic_types: UDP' --pull_report --test_tag influxgrafanaghost.sh #--raw_line 'pkts: Custom;60;142;256;512;1024;MTU' ./lf_wifi_capacity_test.py --mgr ${MGR} --lf_user ${LFUSER} --lf_password lanforge --instance_name linksys-8450 \ --config_name wifi_config --upstream 1.1.eth1 --radio wiphy0 --ssid lanforge --paswd lanforge --security wpa2 \ ---influx_host ${INFLUXHOST} --influx_org Candela --influx_bucket stidmatt --test_rig ${TESTRIG} \ +--influx_host ${INFLUXHOST} --influx_org Candela --influx_bucket ${INFLUXBUCKET} --test_rig ${TESTRIG} \ --influx_token ${INFLUXTOKEN} --influx_tag testbed ${TESTRIG} --set DUT_NAME linksys-8450 --local_lf_report_dir \ -${LOCALDIR} --enable FALSE --pull_report +${LOCALDIR} --enable FALSE --pull_report --test_tag influxgrafanaghost.sh + +./lf_wifi_capacity_test.py --mgr ${MGR} --lf_user ${LFUSER} --lf_password lanforge --instance_name linksys-8450 \ +--config_name wifi_config --upstream 1.1.eth1 --radio wiphy0 --ssid lanforge --paswd lanforge --security wpa2 \ +--influx_host ${INFLUXHOST} --influx_org Candela --influx_bucket ${INFLUXBUCKET} --test_rig ${TESTRIG} \ +--influx_token ${INFLUXTOKEN} --influx_tag testbed ${TESTRIG} --set DUT_NAME linksys-8450 --local_lf_report_dir \ +${LOCALDIR} --enable FALSE --pull_report --test_tag Can_we_use_two_test_tags + +./lf_ap_auto_test.py --mgr ${MGR} --instance_name ap-auto-instance --config_name test_con --upstream 1.1.eth1 \ +--dut5_0 'matthew-router lanforge 04:f0:21:c0:65:7b (1)' --dut2_0 'matthew-router lanforge 04:f0:21:c0:65:7b (1)' \ +--max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy0 --radio5 1.1.wiphy0 \ +--set 'Basic Client Connectivity' 1 --set 'Multi Band Performance' 1 --set 'Stability' 0 --set 'Capacity' 0 \ +--set 'Multi-Station Throughput vs Pkt Size' 0 --set 'Throughput vs Pkt Size' 0 --set 'Band-Steering' 1 \ +--influx_host ${INFLUXHOST} --influx_org Candela --influx_bucket ${INFLUXBUCKET} --test_rig ${TESTRIG} \ +--influx_token ${INFLUXTOKEN} --influx_tag testbed ${TESTRIG} --pull_report --test_tag influxgrafanaghost.sh \ +--local_lf_report_dir ${LOCALDIR} ./ghost_profile.py --ghost_token ${GHOSTTOKEN} --ghost_host 192.168.100.153 --authors Matthew --customer candela \ --user_push lanforge --password_push lanforge --kpi_to_ghost --grafana_token ${GRAFANATOKEN} \ ---grafana_host 192.168.100.201 --grafana_bucket lanforge_qa_testing --influx_host ${INFLUXHOST} --influx_org Candela \ ---influx_token ${INFLUXTOKEN} --influx_bucket stidmatt --parent_folder ${LOCALDIR} \ No newline at end of file +--grafana_host 192.168.100.201 --grafana_bucket ${INFLUXBUCKET} --influx_host ${INFLUXHOST} --influx_org Candela \ +--influx_token ${INFLUXTOKEN} --influx_bucket ${INFLUXBUCKET} --parent_folder ${LOCALDIR} \ No newline at end of file diff --git a/py-scripts/lf_wifi_capacity_test.py b/py-scripts/lf_wifi_capacity_test.py index 3e207317..6598cce9 100755 --- a/py-scripts/lf_wifi_capacity_test.py +++ b/py-scripts/lf_wifi_capacity_test.py @@ -318,7 +318,6 @@ if sys.version_info[0] != 3: if 'py-json' not in sys.path: sys.path.append(os.path.join(os.path.abspath('..'), 'py-json')) -from cv_test_manager import cv_test from cv_test_manager import * from LANforge import LFUtils @@ -357,6 +356,7 @@ class WiFiCapacityTest(cv_test): report_dir="", graph_groups=None, test_rig="", + test_tag="", local_lf_report_dir="" ): super().__init__(lfclient_host=lfclient_host, lfclient_port=lf_port) @@ -395,6 +395,7 @@ class WiFiCapacityTest(cv_test): self.report_dir = report_dir self.graph_groups = graph_groups self.test_rig = test_rig + self.test_tag = test_tag self.local_lf_report_dir = local_lf_report_dir def setup(self): @@ -453,6 +454,8 @@ class WiFiCapacityTest(cv_test): cfg_options.append("dl_rate: " + self.download_rate) if self.test_rig != "": cfg_options.append("test_rig: " + self.test_rig) + if self.test_tag != "": + cfg_options.append("test_tag: " + self.test_tag) cfg_options.append("save_csv: 1") @@ -487,7 +490,7 @@ def main(): --instance_name wct_instance --config_name wifi_config --upstream 1.1.eth1 --batch_size 1 --loop_iter 1 \ --protocol UDP-IPv4 --duration 6000 --pull_report --stations 1.1.sta0000,1.1.sta0001 \ --create_stations --radio wiphy0 --ssid test-ssid --security open --paswd [BLANK] \ - --test_rig Testbed-01 \ + --test_rig Testbed-01 -test_tag TAG\ --influx_host c7-graphana --influx_port 8086 --influx_org Candela \ --influx_token=-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ== \ --influx_bucket ben \ @@ -562,6 +565,7 @@ def main(): sets=args.set, graph_groups=args.graph_groups, test_rig=args.test_rig, + test_tag=args.test_tag, local_lf_report_dir=args.local_lf_report_dir ) WFC_Test.setup() diff --git a/py-scripts/regression_test.sh b/py-scripts/regression_test.sh index b3f81f96..2f18e5a2 100755 --- a/py-scripts/regression_test.sh +++ b/py-scripts/regression_test.sh @@ -131,7 +131,7 @@ if [[ $MGRLEN -gt 0 ]]; then testgroup_list_groups testgroup_list_connections testgroup_delete_group - "./testgroup2.py --num_stations 4 --ssid lanforge --passwd password --security wpa2 --radio wiphy0 --group_name group0 --add_group --mgr $MGR" + "./testgroup2.py --num_stations 4 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --radio $RADIO_USED --group_name group0 --add_group --mgr $MGR" "./test_ipv4_connection.py --radio $RADIO_USED --num_stations $NUM_STA --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --debug --mgr $MGR" "./test_ipv4_l4_urls_per_ten.py --radio $RADIO_USED --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --num_tests 1 --requests_per_ten 600 --target_per_ten 600 --debug --mgr $MGR" "./test_ipv4_l4_wifi.py --radio $RADIO_USED --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --test_duration 15s --debug --mgr $MGR" From 2e375f60261653db02798ae18fdb223d4fd28f9d Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 17:37:38 -0600 Subject: [PATCH 54/79] lf_check_95_6.json : update scripts tests Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check_95_6.json | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/py-scripts/tools/lf_check_95_6.json b/py-scripts/tools/lf_check_95_6.json index 261a19c0..d44434a4 100644 --- a/py-scripts/tools/lf_check_95_6.json +++ b/py-scripts/tools/lf_check_95_6.json @@ -1,17 +1,32 @@ { + "script_qa":{ + "Notes":[ + "The json is used to orchastrate the tests to be run on testbed ct_us_001", + "This json file is used as an input to the ./lf_check.py file", + "The variables that are all capitalized below are replaced with configuration", + "from the json file. so LF_MGR_IP in the test below is replaced by the json lf_mgr_ip", + "The replacement is loosely coupled so the upper and lower case convention is used", + "to identify replaced strings in the lf_check.py code." + ] + }, "test_parameters":{ - "test_timeout": 200, + "test_bed": "CT-US-001_QA", + "lf_mgr_ip": "192.168.100.116", + "lf_mgr_port": "8080", + "dut_name": "ASUSRT-AX88U", + "dut_bssid_5G": "3c:7c:3f:55:4d:64", + "dut_sw": "3.0.0.4.386_42820", + "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, "load_custom_db": false, "custom_db": "DFLT_ETH1_GEN", "email_list_production": "konikofi@candelatech.com,greearb@candelatech.com,logan.lipke@candelatech.com,dipti.dhond@candelatech.com,chuck.rekiere@candelatech.com,matthew@candelatech.com,iain.davidson@candelatech.com,jreynolds@candelatech.com", - "host_ip_production": "192.168.95.6", + "host_ip_production": "192.168.100.201", "email_list_test": "chuck.rekiere@candelatech.com,logan.lipke@candelatech.com", - "host_ip_test": "192.168.95.6", - "lf_mgr": "192.168.100.116", - "email_title_txt": "Lanforge QA Testing CT-US-001 - Scripts", - "email_txt": "Lanforge QA Testing CT-US-001 - Scripts" + "host_ip_test": "192.168.100.201", + "email_title_txt": "Lanforge Script QA Testing CT-US-001", + "email_txt": "Lanforge Script QA Testing CT-US-001 " }, "test_network":{ "http_test_ip": "10.40.0.10", From daac7f36b508c3f5b69e7d8e4bb2287abcfb4be6 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 17:40:41 -0600 Subject: [PATCH 55/79] lf_check_95_6.json : updated upstream port Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check_95_6.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/lf_check_95_6.json b/py-scripts/tools/lf_check_95_6.json index d44434a4..7233c424 100644 --- a/py-scripts/tools/lf_check_95_6.json +++ b/py-scripts/tools/lf_check_95_6.json @@ -40,7 +40,7 @@ "security_used": "wpa2", "num_sta": 4, "col_names": "name,tx_byptes,rx_bytes,dropped", - "upstream_port": "eth1" + "upstream_port": "eth2" }, "radio_dict":{ "RADIO_0_CFG":{"KEY":"RADIO_0_CFG","RADIO":"wiphy0","STATIONS":"4","SSID":"asus11ax-5","PASSWD":"hello123","SECURITY":"wpa2"}, From dd9a6a094e6d13c8c0785e5894107ba2ed46eb32 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Thu, 22 Jul 2021 17:57:05 -0600 Subject: [PATCH 56/79] lf_check_95_6.json : updates to scripts QA Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check_95_6.json | 71 +++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/py-scripts/tools/lf_check_95_6.json b/py-scripts/tools/lf_check_95_6.json index 7233c424..19a9223c 100644 --- a/py-scripts/tools/lf_check_95_6.json +++ b/py-scripts/tools/lf_check_95_6.json @@ -55,22 +55,53 @@ "test_l3_longevity":{"enabled":"TRUE","load_db":"NONE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth1 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} }, "suite_daily":{ - "test_l3_longevity":{"enabled":"TRUE","load_db":"NONE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth1 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"}, - "example_security_connection0":{"enabled":"TRUE","command":"example_security_connection.py","args":"--num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, - "example_security_connection1":{"enabled":"TRUE","command":"example_security_connection.py","args":"--num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, - "example_security_connection2":{"enabled":"TRUE","command":"example_security_connection.py","args":"--num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, - "example_security_connection3":{"enabled":"TRUE","command":"example_security_connection.py","args":"--num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, - "sta_connect2":{"enabled":"TRUE","command":"sta_connect2.py","args":"--dut_ssid asus11ax-5 --dut_passwd hello123 --dut_security wpa2"}, - "sta_connect_example":{"enabled":"FALSE","command":"sta_connect_example.py","args":""}, - "test_fileio":{"enabled":"TRUE","command":"test_fileio.py","args":"--macvlan_parent eth2 --num_ports 3 --use_macvlans --first_mvlan_ip 192.168.92.13 --netmask 255.255.255.0 --test_duration 30s --gateway 192.168.92.1"}, - "test_generic0":{"enabled":"FALSE","command":"test_generic.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type lfping --dest 10.40.0.1 --debug"}, - "test_generic1":{"enabled":"FALSE","command":"test_generic.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type speedtest --speedtest_min_up 20 --speedtest_min_dl 20 --speedtest_max_ping 150 --security wpa2 --debug"}, - "test_generic2":{"enabled":"FALSE","command":"test_generic.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type iperf3 --debug"}, - "test_generic3":{"enabled":"FALSE","command":"test_generic.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type lfcurl --dest 10.40.0.1 --file_output /home/lanforge/Documents/lfcurl_output.txt --debug"}, - "testgroup":{"enabled":"FALSE","command":"testgroup.py","args":"--group_name group1 --add_group --list_groups --debug"}, - "testgroup5":{"enabled":"FALSE","command":"testgroup.py","args":"--num_stations 4 --ssid lanforge --passwd password --security wpa2 --radio wiphy0 --group_name group0 --add_group"}, - "test_ip_connection-ipv4":{"enabled":"TRUE","command":"test_ip_connection.py","args":"--radio wiphy1 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, - "test_ip_variable_time0-ipv4":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format excel --layer3_cols name,tx_bytes,rx_bytes,dropped --traffic_type lf_udp --debug"}, + "test_l3_longevity":{ + "enabled":"TRUE", + "load_db":"NONE", + "command":"test_l3_longevity.py", + "args":"", + "args_list":[ + " --test_duration 15s --polling_interval 5s --upstream_port UPSTREAM_PORT", + " --radio 'radio==RADIO_USED,stations==4,ssid==SSID_USED,ssid_pw==SSID_PS_USED,security==SECURITY_USED'", + " --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000" + ] + }, + "example_security_connection0":{ + "enabled":"TRUE", + "command":"example_security_connection.py", + "args":"", + "args_list":[ + " --num_stations 4 --ssid SSID_USED --passwd SSID_PW_USED --radio RADIO_USED --security SECURITY_USED --debug" + ] + }, + "sta_connect2":{ + "enabled":"TRUE", + "command":"sta_connect2.py", + "args":" --dut_ssid SSID_USED --dut_passwd SSID_PW_USED --dut_security SECURITY_USED" + }, + "test_fileio":{ + "enabled":"TRUE", + "command":"test_fileio.py", + "args":"", + "args_list":[ + " --macvlan_parent eth2 --num_ports 3 --use_macvlans --first_mvlan_ip 192.168.92.13", + " --netmask 255.255.255.0 --test_duration 30s --gateway 192.168.92.1" + ] + }, + "test_ip_connection-ipv4":{ + "enabled":"TRUE", + "command":"test_ip_connection.py", + "args":"--radio RADIO_USED --num_stations 4 --ssid SSID_USED --passwd SSID_PS_USED --security SECURITY_USED --debug"}, + "test_ip_variable_time0-ipv4":{ + "enabled":"TRUE", + "command":"test_ip_variable_time.py", + "args":"", + "args_list":[ + " --radio RADIO_USED --ssid SSID_USED --passwd SSID_PW_USED --security SECURITY_USED", + " --test_duration 15s --output_format excel --layer3_cols name,tx_bytes,rx_bytes,dropped", + " --traffic_type lf_udp --debug" + ] + }, "test_ip_variable_time1-ipv4":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format csv --layer3_cols name,tx_bytes,rx_bytes,dropped --traffic_type lf_udp --debug"}, "test_ip_connection-ipv6":{"enabled":"FALSE","command":"test_ip_connection.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --ipv6 --debug"}, "test_ip_variable_time0-ipv6":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format excel --layer3_cols name,tx_bytes,rx_bytes,dropped --ipv6 --traffic_type lf_udp --debug"}, @@ -81,17 +112,17 @@ "test_l4_ftp_bytes-rd":{"enabled":"TRUE","command":"test_l4.py","args":"--radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type bytes-rd --test_duration 15s --url 'dl ftp://10.40.0.1 /dev/null' --debug"}, "test_l4_ftp_bytes-wr":{"enabled":"FALSE","command":"test_l4.py","args":"--radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type bytes-wr --test_duration 15s --url 'ul ftp://10.40.0.1' --debug"}, "test_l4_ftp_urls_s":{"enabled":"TRUE","command":"test_l4.py","args":"--radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type urls --requests_per_ten 600 --target_per_ten 600 --test_duration 15s --url 'dl ftp://10.40.0.1 /dev/null' --debug"}, - "test_l3_longevity_1":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth1 --radio 'radio==wiphy0,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"}, + "test_l3_longevity_1":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy0,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"}, "test_l3_powersave_traffic":{"enabled":"TRUE","command":"test_l3_powersave_traffic.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, "test_status_msg":{"enabled":"TRUE","command":"test_status_msg.py","args":"--action run_test"}, "test_wanlink":{"enabled":"TRUE","command":"test_wanlink.py","args":"--debug"}, - "create_bridge":{"enabled":"TRUE","command":"create_bridge.py","args":"--radio wiphy1 --upstream_port eth1 --target_device sta0000 --debug"}, + "create_bridge":{"enabled":"TRUE","command":"create_bridge.py","args":"--radio wiphy1 --upstream_port eth2 --target_device sta0000 --debug"}, "create_l3":{"enabled":"TRUE","command":"create_l3.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, "create_l4":{"enabled":"TRUE","command":"create_l4.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, - "create_macvlan":{"enabled":"TRUE","command":"create_macvlan.py","args":"--radio wiphy1 --macvlan_parent eth1 --debug"}, + "create_macvlan":{"enabled":"TRUE","command":"create_macvlan.py","args":"--radio wiphy1 --macvlan_parent eth2 --debug"}, "create_station":{"enabled":"TRUE","command":"create_station.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, "create_vap":{"enabled":"TRUE","command":"create_vap.py","args":"--radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, - "create_qvlan":{"enabled":"TRUE","command":"create_qvlan.py","args":"--radio wiphy1 --qvlan_parent eth1"}, + "create_qvlan":{"enabled":"TRUE","command":"create_qvlan.py","args":"--radio wiphy1 --qvlan_parent eth2"}, "wlan_capacity_calculator1":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11abg -t Voice -p 48 -m 106 -e WEP -q Yes -b 1 2 5.5 11 -pre Long -s N/A -co G.711 -r Yes -c Yes"}, "wlan_capacity_calculator2":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11n -t Voice -d 17 -ch 40 -gu 800 -high 9 -e WEP -q Yes -ip 5 -mc 42 -b 6 9 12 24 -m 1538 -co G.729 -pl Greenfield -cw 15 -r Yes -c Yes"}, "wlan_capacity_calculator3":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11ac -t Voice -d 9 -spa 3 -ch 20 -gu 800 -high 1 -e TKIP -q Yes -ip 3 -mc 0 -b 6 12 24 54 -m 1518 -co Greenfield -cw 15 -rc Yes"} From 08b75c8473ed1368e22d65799500a79f91d7a43e Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 05:47:14 -0600 Subject: [PATCH 57/79] ct_us_001_scripts.json : adding the QA for the scripts Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001_scripts.json | 92 +++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 py-scripts/tools/ct_us_001_scripts.json diff --git a/py-scripts/tools/ct_us_001_scripts.json b/py-scripts/tools/ct_us_001_scripts.json new file mode 100755 index 00000000..6cac4894 --- /dev/null +++ b/py-scripts/tools/ct_us_001_scripts.json @@ -0,0 +1,92 @@ +{ + "test_parameters":{ + "test_timeout": 200, + "load_blank_db": false, + "load_factory_default_db": true, + "load_custom_db": false, + "custom_db": "DFLT_ETH1_GEN", + "email_list_production": "konikofi@candelatech.com,greearb@candelatech.com,logan.lipke@candelatech.com,dipti.dhond@candelatech.com,chuck.rekiere@candelatech.com,matthew@candelatech.com,iain.davidson@candelatech.com,jreynolds@candelatech.com", + "host_ip_production": "192.168.95.6", + "email_list_test": "chuck.rekiere@candelatech.com,logan.lipke@candelatech.com", + "host_ip_test": "192.168.95.6", + "lf_mgr": "192.168.100.116", + "email_title_txt": "Lanforge QA Testing CT-US-001 - Scripts", + "email_txt": "Lanforge QA Testing CT-US-001 - Scripts" + }, + "test_network":{ + "http_test_ip": "10.40.0.10", + "ftp_test_ip": "10.40.0.10", + "test_ip": "192.168.0.104" + }, + "test_generic":{ + "radio_used": "wiphy1", + "ssid_used": "asus11ax-5", + "ssid_pw_used": "hello123", + "security_used": "wpa2", + "num_sta": 4, + "col_names": "name,tx_byptes,rx_bytes,dropped", + "upstream_port": "eth2" + }, + "radio_dict":{ + "RADIO_0_CFG":{"KEY":"RADIO_0_CFG","RADIO":"wiphy0","STATIONS":"4","SSID":"asus11ax-5","PASSWD":"hello123","SECURITY":"wpa2"}, + "RADIO_1_CFG":{"KEY":"RADIO_1_CFG","RADIO":"wiphy1","STATIONS":"4","SSID":"asus11ax-5","PASSWD":"hello123","SECURITY":"wpa2"} + }, + "test_suites":{ + "suite_short":{ + "create_l3":{"enabled":"TRUE","command":"create_l4.py","args":"--mgr 192.168.100.116 --radio RADIO_USED --ssid SSID_USED --passwd SSID_PW_USED --security SECURITY_USED --debug"}, + "test_l3_longevity":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--mgr 192.168.100.116 --test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} + }, + "suite_l3":{ + "test_l3_longevity":{"enabled":"TRUE","load_db":"NONE","command":"test_l3_longevity.py","args":"--mgr 192.168.100.116 --test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"} + }, + "suite_l3r":{ + "test_l3_longevity":{"enabled":"TRUE","load_db":"NONE","command":"test_l3_longevity.py","args":"--mgr 192.168.100.116 --test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000 --local_lf_report_dir REPORT_PATH"} + }, + "suite_daily":{ + "test_l3_longevity":{"enabled":"TRUE","load_db":"NONE","command":"test_l3_longevity.py","args":"--mgr 192.168.100.116 --test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy1,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"}, + "example_security_connection0":{"enabled":"TRUE","command":"example_security_connection.py","args":"--mgr 192.168.100.116 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, + "example_security_connection1":{"enabled":"TRUE","command":"example_security_connection.py","args":"--mgr 192.168.100.116 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, + "example_security_connection2":{"enabled":"TRUE","command":"example_security_connection.py","args":"--mgr 192.168.100.116 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, + "example_security_connection3":{"enabled":"TRUE","command":"example_security_connection.py","args":"--mgr 192.168.100.116 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --radio wiphy1 --security wpa2 --debug"}, + "sta_connect2":{"enabled":"FALSE","command":"sta_connect2.py","args":"--mgr 192.168.100.116 --dut_ssid asus11ax-5 --dut_passwd hello123 --dut_security wpa2"}, + "sta_connect_example":{"enabled":"FALSE","command":"sta_connect_example.py","args":"--mgr 192.168.100.116 "}, + "test_fileio":{"enabled":"TRUE","command":"test_fileio.py","args":"--mgr 192.168.100.116 --macvlan_parent eth2 --num_ports 3 --use_macvlans --first_mvlan_ip 192.168.92.13 --netmask 255.255.255.0 --test_duration 30s --gateway 192.168.92.1"}, + "test_generic0":{"enabled":"FALSE","command":"test_generic.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type lfping --dest 10.40.0.1 --debug"}, + "test_generic1":{"enabled":"FALSE","command":"test_generic.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type speedtest --speedtest_min_up 20 --speedtest_min_dl 20 --speedtest_max_ping 150 --security wpa2 --debug"}, + "test_generic2":{"enabled":"FALSE","command":"test_generic.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type iperf3 --debug"}, + "test_generic3":{"enabled":"FALSE","command":"test_generic.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --num_stations 4 --type lfcurl --dest 10.40.0.1 --file_output /home/lanforge/Documents/lfcurl_output.txt --debug"}, + "testgroup":{"enabled":"FALSE","command":"testgroup.py","args":"--mgr 192.168.100.116 --group_name group1 --add_group --list_groups --debug"}, + "testgroup5":{"enabled":"FALSE","command":"testgroup.py","args":"--mgr 192.168.100.116 --num_stations 4 --ssid lanforge --passwd password --security wpa2 --radio wiphy0 --group_name group0 --add_group"}, + "test_ip_connection-ipv4":{"enabled":"TRUE","command":"test_ip_connection.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "test_ip_variable_time0-ipv4":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format excel --layer3_cols name,tx_bytes,rx_bytes,dropped --traffic_type lf_udp --debug"}, + "test_ip_variable_time1-ipv4":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format csv --layer3_cols name,tx_bytes,rx_bytes,dropped --traffic_type lf_udp --debug"}, + "test_ip_connection-ipv6":{"enabled":"FALSE","command":"test_ip_connection.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --ipv6 --debug"}, + "test_ip_variable_time0-ipv6":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format excel --layer3_cols name,tx_bytes,rx_bytes,dropped --ipv6 --traffic_type lf_udp --debug"}, + "test_ip_variable_time1-ipv6":{"enabled":"TRUE","command":"test_ip_variable_time.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --test_duration 15s --output_format csv --layer3_cols name,tx_bytes,rx_bytes,dropped --ipv6 --traffic_type lf_udp --debug"}, + "test_l4_bytes-rd":{"enabled":"TRUE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --test_type bytes-rd --test_duration 15s --url 'dl http://10.40.0.1 /dev/null' --debug"}, + "test_l4_bytes-wr":{"enabled":"FALSE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --test_type bytes-wr --test_duration 15s --url 'ul http://10.40.0.1' --debug"}, + "test_l4_urls_s":{"enabled":"TRUE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --test_type urls --test_duration 15s --requests_per_ten 600 --target_per_ten 600 --url 'dl http://10.40.0.1 /dev/null' --debug"}, + "test_l4_ftp_bytes-rd":{"enabled":"TRUE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type bytes-rd --test_duration 15s --url 'dl ftp://10.40.0.1 /dev/null' --debug"}, + "test_l4_ftp_bytes-wr":{"enabled":"FALSE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type bytes-wr --test_duration 15s --url 'ul ftp://10.40.0.1' --debug"}, + "test_l4_ftp_urls_s":{"enabled":"TRUE","command":"test_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --num_stations 4 --security wpa2 --ssid asus11ax-5 --passwd hello123 --ftp --test_type urls --requests_per_ten 600 --target_per_ten 600 --test_duration 15s --url 'dl ftp://10.40.0.1 /dev/null' --debug"}, + "test_l3_longevity_1":{"enabled":"TRUE","command":"test_l3_longevity.py","args":"--mgr 192.168.100.116 --test_duration 15s --polling_interval 5s --upstream_port eth2 --radio 'radio==wiphy0,stations==4,ssid==asus11ax-5,ssid_pw==hello123,security==wpa2' --endp_type lf_udp --rates_are_totals --side_a_min_bps=20000 --side_b_min_bps=300000000"}, + "test_l3_powersave_traffic":{"enabled":"FALSE","command":"test_l3_powersave_traffic.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "test_status_msg":{"enabled":"TRUE","command":"test_status_msg.py","args":"--mgr 192.168.100.116 --action run_test"}, + "test_wanlink":{"enabled":"TRUE","command":"test_wanlink.py","args":"--mgr 192.168.100.116 --debug"}, + "create_bridge":{"enabled":"TRUE","command":"create_bridge.py","args":"--mgr 192.168.100.116 --radio wiphy1 --upstream_port eth2 --target_device sta0000 --debug"}, + "create_l3":{"enabled":"TRUE","command":"create_l3.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "create_l4":{"enabled":"TRUE","command":"create_l4.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "create_macvlan":{"enabled":"TRUE","command":"create_macvlan.py","args":"--mgr 192.168.100.116 --radio wiphy1 --macvlan_parent eth2 --debug"}, + "create_station":{"enabled":"TRUE","command":"create_station.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "create_vap":{"enabled":"TRUE","command":"create_vap.py","args":"--mgr 192.168.100.116 --radio wiphy1 --ssid asus11ax-5 --passwd hello123 --security wpa2 --debug"}, + "create_qvlan":{"enabled":"TRUE","command":"create_qvlan.py","args":"--mgr 192.168.100.116 --radio wiphy1 --qvlan_parent eth2"}, + "wlan_capacity_calculator1":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11abg -t Voice -p 48 -m 106 -e WEP -q Yes -b 1 2 5.5 11 -pre Long -s N/A -co G.711 -r Yes -c Yes"}, + "wlan_capacity_calculator2":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11n -t Voice -d 17 -ch 40 -gu 800 -high 9 -e WEP -q Yes -ip 5 -mc 42 -b 6 9 12 24 -m 1538 -co G.729 -pl Greenfield -cw 15 -r Yes -c Yes"}, + "wlan_capacity_calculator3":{"enabled":"TRUE","command":"./wlan_capacity_calculator.py","args":"-sta 11ac -t Voice -d 9 -spa 3 -ch 20 -gu 800 -high 1 -e TKIP -q Yes -ip 3 -mc 0 -b 6 12 24 54 -m 1518 -co Greenfield -cw 15 -rc Yes"} + } + } +} + + + + \ No newline at end of file From 3c0a36b20eec5d1d1acae2d23e2e77379e23374f Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 07:23:03 -0600 Subject: [PATCH 58/79] added --test-tag , this will need to be auto generated in the future by the test framework. Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 4796d492..2e7a410a 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -114,6 +114,7 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --test-tag 'ap_auto 32 stations'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -132,6 +133,7 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --test-tag 'ap_auto'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -176,7 +178,7 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_wifi_capacity_wiphy0_wiphy1_ATH10K(9984)_sta128":{ + "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta128":{ "enabled":"TRUE", "timeout":"600", "load_db":"skip", @@ -185,6 +187,7 @@ "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --test-tag 'wifi_capacity 64 stations'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -213,12 +216,13 @@ " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH ", + " --test-tag 'dataplane_wiphy1_ATH10K(9984)'", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, "CT-US-001_create_chamberview_dut_asus11ax_5_2":{ - "enabled":"FALSE", + "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview_dut.py", "args":"", @@ -230,7 +234,7 @@ ] }, "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{ - "enabled":"FALSE", + "enabled":"TRUE", "load_db":"skip", "command":"create_chamberview.py", "args":"", @@ -242,20 +246,21 @@ ] }, "CT-US-001_wifi_capacity_wiphy3_AX210_sta1":{ - "enabled":"FALSE", + "enabled":"TRUE", "load_db":"skip", "command":"lf_wifi_capacity_test.py", "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", + " --test-tag 'dataplane_wiphy3_AX210'", " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan3", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, "CT-US-001_dataplane_wiphy3_AX210_sta1":{ - "enabled":"FALSE", + "enabled":"TRUE", "load_db":"skip", "command":"lf_dataplane_test.py", "args":"", @@ -264,7 +269,9 @@ " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan3", " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", - " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH", + " --raw_line 'spatial_streams: 1'", + " --test-tag 'dataplane_wiphy3_AX210'", + " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] @@ -306,6 +313,7 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --test-tag 'ap_auto_wiphy2'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" From f433198123424a24aa859d3971d1885beebe8d1b Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 07:48:21 -0600 Subject: [PATCH 59/79] Revert "added --test-tag , this will need to be auto generated in the future" This reverts commit 3c0a36b20eec5d1d1acae2d23e2e77379e23374f. --- py-scripts/tools/ct_us_001.json | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 2e7a410a..4796d492 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -114,7 +114,6 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", - " --test-tag 'ap_auto 32 stations'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -133,7 +132,6 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", - " --test-tag 'ap_auto'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -178,7 +176,7 @@ " --raw_line \"profile_link 1.1 upstream-dhcp 1 NA NA UPSTREAM_PORT,AUTO -1 NA\"" ] }, - "CT-US-001_wifi_capacity_wiphy1_ATH10K(9984)_sta128":{ + "CT-US-001_wifi_capacity_wiphy0_wiphy1_ATH10K(9984)_sta128":{ "enabled":"TRUE", "timeout":"600", "load_db":"skip", @@ -187,7 +185,6 @@ "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", - " --test-tag 'wifi_capacity 64 stations'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" @@ -216,13 +213,12 @@ " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH ", - " --test-tag 'dataplane_wiphy1_ATH10K(9984)'", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, "CT-US-001_create_chamberview_dut_asus11ax_5_2":{ - "enabled":"TRUE", + "enabled":"FALSE", "load_db":"skip", "command":"create_chamberview_dut.py", "args":"", @@ -234,7 +230,7 @@ ] }, "CT-US-001_create_chamberview_wiphy3_AX210_sta1":{ - "enabled":"TRUE", + "enabled":"FALSE", "load_db":"skip", "command":"create_chamberview.py", "args":"", @@ -246,21 +242,20 @@ ] }, "CT-US-001_wifi_capacity_wiphy3_AX210_sta1":{ - "enabled":"TRUE", + "enabled":"FALSE", "load_db":"skip", "command":"lf_wifi_capacity_test.py", "args":"", "args_list":[ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge --instance_name cicd-wct", " --upstream 1.1.eth2 --batch_size 1,5,25 --loop_iter 1 --protocol UDP-IPv4 --duration 6000", - " --test-tag 'dataplane_wiphy3_AX210'", " --pull_report --local_lf_report_dir REPORT_PATH --stations 1.1.wlan3", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] }, "CT-US-001_dataplane_wiphy3_AX210_sta1":{ - "enabled":"TRUE", + "enabled":"FALSE", "load_db":"skip", "command":"lf_dataplane_test.py", "args":"", @@ -269,9 +264,7 @@ " --config_name test_con --upstream 1.1.eth2 --dut asus_5g --duration 30s --station 1.1.wlan3", " --download_speed 85% --upload_speed 0 --raw_line 'pkts: 60;88;120;256;512;1024;MTU' ", " --raw_line 'directions: DUT Transmit' --raw_line 'traffic_types: UDP' --raw_line 'bandw_options: 20'", - " --raw_line 'spatial_streams: 1'", - " --test-tag 'dataplane_wiphy3_AX210'", - " --pull_report --local_lf_report_dir REPORT_PATH", + " --raw_line 'spatial_streams: 1' --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" ] @@ -313,7 +306,6 @@ " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", - " --test-tag 'ap_auto_wiphy2'", " --pull_report --local_lf_report_dir REPORT_PATH", " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" From d44d87fce2a2daa03269ffb634a85854464cc78a Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Fri, 23 Jul 2021 09:36:06 -0700 Subject: [PATCH 60/79] Check to make sure that column variables exist in table before grabbing data Signed-off-by: Matthew Stidham --- py-scripts/csv_to_influx.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/py-scripts/csv_to_influx.py b/py-scripts/csv_to_influx.py index c26908f6..c69735e4 100755 --- a/py-scripts/csv_to_influx.py +++ b/py-scripts/csv_to_influx.py @@ -77,9 +77,10 @@ class CSVtoInflux(): date = row[columns['Date']] date = datetime.datetime.utcfromtimestamp(int(date) / 1000).isoformat() #convert to datetime so influx can read it, this is required for variable in csv_variables: - index = columns[variable] - influx_variable = csv_vs_influx[variable] - tags[influx_variable] = row[index] + if variable in columns.keys(): + index = columns[variable] + influx_variable = csv_vs_influx[variable] + tags[influx_variable] = row[index] self.influxdb.post_to_influx(short_description, numeric_score, tags, date) def script_name(self): From 49ccefd750cec1135c738549af28af4d4641a388 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 11:33:30 -0600 Subject: [PATCH 61/79] ct_us_001.json , ct_us_004.json : fixed typo Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 2 +- py-scripts/tools/ct_us_004.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index 4796d492..da56c577 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -14,7 +14,7 @@ "lf_mgr_ip": "192.168.100.116", "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", - "dut_bssid_5G": "3c:7c:3f:55:4d:64", + "dut_bssid_5g": "3c:7c:3f:55:4d:64", "dut_sw": "3.0.0.4.386_42820", "test_timeout": 300, "load_blank_db": false, diff --git a/py-scripts/tools/ct_us_004.json b/py-scripts/tools/ct_us_004.json index 5100ac82..201fc8fe 100644 --- a/py-scripts/tools/ct_us_004.json +++ b/py-scripts/tools/ct_us_004.json @@ -14,7 +14,7 @@ "lf_mgr_ip": "192.168.100.194", "lf_mgr_port": "8080", "dut_name": "NetgearAX12", - "dut_bssid_5G": "94:a6:7e:54:d4:33", + "dut_bssid_5g": "94:a6:7e:54:d4:33", "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, From 29cf163a88f79dc2427a8b419c16ae8507f661cb Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 17:13:37 -0600 Subject: [PATCH 62/79] report.css , lf_report.py lf_check.py : formatting changes on the report Signed-off-by: Chuck SmileyRekiere --- py-scripts/artifacts/report.css | 6 ++++++ py-scripts/lf_report.py | 3 +++ py-scripts/tools/lf_check.py | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/py-scripts/artifacts/report.css b/py-scripts/artifacts/report.css index 420a5265..5c3c9280 100644 --- a/py-scripts/artifacts/report.css +++ b/py-scripts/artifacts/report.css @@ -84,6 +84,12 @@ th { li { line-height: 1.5; } +.contentDiv2 { + min-width: 800px; + max-width: 8in; + margin: 1em; + padding: 0; +} .contentDiv { min-width: 800px; max-width: 8in; diff --git a/py-scripts/lf_report.py b/py-scripts/lf_report.py index 2215f033..962ac176 100755 --- a/py-scripts/lf_report.py +++ b/py-scripts/lf_report.py @@ -336,6 +336,9 @@ class lf_report(): """.format(title=self.table_title) self.html += self.table_title_html + def start_content_div2(self): + self.html += "\n
\n" + def start_content_div(self): self.html += "\n
\n" diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 442c132f..40ea090c 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -1141,7 +1141,7 @@ Example : # generate output reports report.set_title("LF Check: lf_check.py") report.build_banner() - report.start_content_div() + report.start_content_div2() report.set_table_title("LF Check Test Results") report.build_table_title() report.set_text("lanforge-scripts git sha: {}".format(git_sha)) From d79a3c1829723136f202060f11cc7d771f754d59 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Fri, 23 Jul 2021 18:09:38 -0600 Subject: [PATCH 63/79] report.css, lf_report.py , lf_check.py : formatting updates to have report anchored left Signed-off-by: Chuck SmileyRekiere --- py-scripts/artifacts/report.css | 14 ++++++++++++++ py-scripts/lf_report.py | 33 +++++++++++++++++++++++++++++++++ py-scripts/tools/lf_check.py | 4 ++-- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/py-scripts/artifacts/report.css b/py-scripts/artifacts/report.css index 5c3c9280..311f55ac 100644 --- a/py-scripts/artifacts/report.css +++ b/py-scripts/artifacts/report.css @@ -187,6 +187,20 @@ li { max-width: 1000px; max-height: 205px; } + +#BannerLeft { + background-image:url("banner.png"); + background-repeat:no-repeat; + padding: 0; + margin: 1em; + min-width: 1000px; + min-height: 205px; + width: 1000px; + height: 205px; + max-width: 1000px; + max-height: 205px; +} + #BannerLogo { text-align: right; padding: 25px; diff --git a/py-scripts/lf_report.py b/py-scripts/lf_report.py index 962ac176..04d2ae8a 100755 --- a/py-scripts/lf_report.py +++ b/py-scripts/lf_report.py @@ -329,6 +329,39 @@ class lf_report(): ) self.html += self.banner_html + def build_banner_left(self): + # NOTE: {{ }} are the ESCAPED curly braces + self.banner_html = """ + + + + + + + + {title} + + +
+
+
+ +
+
+

{title}

+

{date}

+
+
+
+ """.format( + title=self.title, + date=self.date, + ) + self.html += self.banner_html + + def build_table_title(self): self.table_title_html = """ diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 40ea090c..198e55f9 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -1140,7 +1140,7 @@ Example : # generate output reports report.set_title("LF Check: lf_check.py") - report.build_banner() + report.build_banner_left() report.start_content_div2() report.set_table_title("LF Check Test Results") report.build_table_title() @@ -1149,7 +1149,7 @@ Example : html_results = check.get_html_results() report.set_custom_html(html_results) report.build_custom() - report.build_footer_no_png() + report.build_footer() html_report = report.write_html_with_timestamp() print("html report: {}".format(html_report)) try: From cda9a461f9631bbd381ee41aff349373e18f20da Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 06:12:16 -0600 Subject: [PATCH 64/79] candela_swirl_small-72h.png : updated permissions , may fix presentation so there is no broken link Signed-off-by: Chuck SmileyRekiere --- py-scripts/artifacts/candela_swirl_small-72h.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 py-scripts/artifacts/candela_swirl_small-72h.png diff --git a/py-scripts/artifacts/candela_swirl_small-72h.png b/py-scripts/artifacts/candela_swirl_small-72h.png old mode 100644 new mode 100755 From eb73b735aa42ab1467361f137e8c56a6cd34a3e1 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 07:04:06 -0600 Subject: [PATCH 65/79] lf_check.py : move footer image so may be displayed with latest results Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 198e55f9..f0ecbb56 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -1169,6 +1169,8 @@ Example : banner_dest_png = parent_report_dir + "/banner.png" CandelaLogo_src_png = report_path + "/CandelaLogo2-90dpi-200x90-trans.png" CandelaLogo_dest_png = parent_report_dir + "/CandelaLogo2-90dpi-200x90-trans.png" + CandelaLogo_small_src_png = report_path + "/candela_swirl_small-72h.png" + CandelaLogo_small_dest_png = parent_report_dir + "/candela_swirl_small-72h.png" report_src_css = report_path + "/report.css" report_dest_css = parent_report_dir + "/report.css" custom_src_css = report_path + "/custom.css" @@ -1192,12 +1194,13 @@ Example : print("check permissions on {lf_check_latest_html}".format(lf_check_latest_html=lf_check_latest_html)) shutil.copyfile(html_report, lf_check_html_report) - # copy banner and logo - shutil.copyfile(banner_src_png, banner_dest_png) - shutil.copyfile(CandelaLogo_src_png, CandelaLogo_dest_png) - shutil.copyfile(report_src_css, report_dest_css) - shutil.copyfile(custom_src_css, custom_dest_css) - shutil.copyfile(font_src_woff, font_dest_woff) + # copy banner and logo up one directory, + shutil.copyfile(banner_src_png, banner_dest_png) + shutil.copyfile(CandelaLogo_src_png, CandelaLogo_dest_png) + shutil.copyfile(report_src_css, report_dest_css) + shutil.copyfile(custom_src_css, custom_dest_css) + shutil.copyfile(font_src_woff, font_dest_woff) + shutil.copyfile(CandelaLogo_small_src_png, CandelaLogo_small_dest_png) # print out locations of results print("lf_check_latest.html: "+lf_check_latest_html) From e5870a879a6acb600c91a366a362341e75182071 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 11:24:36 -0600 Subject: [PATCH 66/79] lf_check.py : formatting updates Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index f0ecbb56..5c529f80 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -76,6 +76,7 @@ import shutil from os import path import shlex import paramiko +import pandas as pd # lf_report is from the parent of the current file dir_path = os.path.dirname(os.path.realpath(__file__)) @@ -216,11 +217,11 @@ class lf_check(): #ssh.connect(self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('uname -r') - output = stdout.readlines() + lanforge_kernel_verion = stdout.readlines() # print('\n'.join(output)) ssh.close() time.sleep(1) - return output + return lanforge_kernel_version def get_lanforge_gui_version(self): output = "" @@ -228,11 +229,11 @@ class lf_check(): ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # automatically adds the missing host key ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('./btserver --version | grep Version') - output = stdout.readlines() + lanforge_gui_version = stdout.readlines() # print('\n'.join(output)) ssh.close() time.sleep(1) - return output + return lanforge_gui_version # NOT complete : will send the email results @@ -1057,6 +1058,12 @@ Example : else: print("EXITING: NOTFOUND TEST CONFIG : {} ".format(config_ini)) exit(1) + + # Test-rig information information + scripts_git_sha = 'NO_GIT_SHA' + lanforge_kernel_version = 'NO_KERNEL_VER' + lanforge_gui_version = 'NO_LF_GUI_VER' + # select test suite test_suite = args.suite @@ -1135,13 +1142,22 @@ Example : check.read_config() check.run_script_test() - # read lanforge - + # LANforge and scripts config + lf_test_setup = pd.DataFrame({ + 'LANforge Config': [""], + 'kernel version': [lanforge_kernel_version], + 'GUI version': [lanforge_gui_version], + 'scripts git sha': [scripts_git_sha] + }) # generate output reports report.set_title("LF Check: lf_check.py") report.build_banner_left() report.start_content_div2() + report.set_obj_html("Objective","Run QA Tests") + report.build_objective() + report.set_table_dataframe(lf_test_setup) + report.build_table() report.set_table_title("LF Check Test Results") report.build_table_title() report.set_text("lanforge-scripts git sha: {}".format(git_sha)) From b0c5b270779d858933f56eab6c38399843038e8a Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 11:45:30 -0600 Subject: [PATCH 67/79] lf_check.py typo on verion -> version Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 5c529f80..6c9adc05 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -217,7 +217,7 @@ class lf_check(): #ssh.connect(self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('uname -r') - lanforge_kernel_verion = stdout.readlines() + lanforge_kernel_version = stdout.readlines() # print('\n'.join(output)) ssh.close() time.sleep(1) From 156d0e5510d95b1f2f843b431be2d1bbf04e984e Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 17:40:02 -0600 Subject: [PATCH 68/79] ct_us_001_scripts.json : update lanforge IP for script regression Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001_scripts.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/py-scripts/tools/ct_us_001_scripts.json b/py-scripts/tools/ct_us_001_scripts.json index 6cac4894..f6e5899d 100755 --- a/py-scripts/tools/ct_us_001_scripts.json +++ b/py-scripts/tools/ct_us_001_scripts.json @@ -1,17 +1,22 @@ { "test_parameters":{ - "test_timeout": 200, + "test_bed": "CT-US-001", + "lf_mgr_ip": "192.168.100.116", + "lf_mgr_port": "8080", + "dut_name": "ASUSRT-AX88U", + "dut_bssid_5g": "3c:7c:3f:55:4d:64", + "dut_sw": "3.0.0.4.386_42820", + "test_timeout": 300, "load_blank_db": false, "load_factory_default_db": true, "load_custom_db": false, "custom_db": "DFLT_ETH1_GEN", "email_list_production": "konikofi@candelatech.com,greearb@candelatech.com,logan.lipke@candelatech.com,dipti.dhond@candelatech.com,chuck.rekiere@candelatech.com,matthew@candelatech.com,iain.davidson@candelatech.com,jreynolds@candelatech.com", "host_ip_production": "192.168.95.6", - "email_list_test": "chuck.rekiere@candelatech.com,logan.lipke@candelatech.com", + "email_list_test": "chuck.rekiere@candelatech.com", "host_ip_test": "192.168.95.6", - "lf_mgr": "192.168.100.116", - "email_title_txt": "Lanforge QA Testing CT-US-001 - Scripts", - "email_txt": "Lanforge QA Testing CT-US-001 - Scripts" + "email_title_txt": "Lanforge QA Testing CT-US-001 Scripting", + "email_txt": "Lanforge QA Testing CT-US-001 Scripting" }, "test_network":{ "http_test_ip": "10.40.0.10", From 4e3c0ec9b60646ab3ca8434a53080428f33a64d9 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 17:54:36 -0600 Subject: [PATCH 69/79] lf_check.py need to check for kernel version, GUI version AFTER the ip is set by the json Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 40 ++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 6c9adc05..04a2ce7f 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -1102,24 +1102,6 @@ Example : exit_code = process.wait() git_sha = commit_hash.decode('utf-8','ignore') - try: - scripts_git_sha = check.get_scripts_git_sha() - print("git_sha {sha}".format(sha=scripts_git_sha)) - except: - print("git_sha read exception ") - - try: - lanforge_kernel_version = check.get_lanforge_kernel_version() - print("lanforge_kernel_version {kernel_ver}".format(kernel_ver=lanforge_kernel_version)) - except: - print("lanforge_kernel_version exception") - - try: - lanforge_gui_version = check.get_lanforge_gui_version() - print("lanforge_gui_version {gui_ver}".format(gui_ver=lanforge_gui_version)) - except: - print("lanforge_gui_version exception") - # set up logging logfile = args.logfile[:-4] print("logfile: {}".format(logfile)) @@ -1142,6 +1124,28 @@ Example : check.read_config() check.run_script_test() + # get sha and lanforge informaiton for results + # Need to do this after reading the configuration + try: + scripts_git_sha = check.get_scripts_git_sha() + print("git_sha {sha}".format(sha=scripts_git_sha)) + except: + print("git_sha read exception ") + + try: + lanforge_kernel_version = check.get_lanforge_kernel_version() + print("lanforge_kernel_version {kernel_ver}".format(kernel_ver=lanforge_kernel_version)) + except: + print("lanforge_kernel_version exception") + + try: + lanforge_gui_version = check.get_lanforge_gui_version() + print("lanforge_gui_version {gui_ver}".format(gui_ver=lanforge_gui_version)) + except: + print("lanforge_gui_version exception") +# + + # LANforge and scripts config lf_test_setup = pd.DataFrame({ 'LANforge Config': [""], From 84a4fcce9a9f75f6e12612456da6a40751ead51e Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 18:06:59 -0600 Subject: [PATCH 70/79] lf_check.py : formatting on the kernel and gui values Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 04a2ce7f..5aa1e4b4 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -218,6 +218,7 @@ class lf_check(): ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('uname -r') lanforge_kernel_version = stdout.readlines() + lanforge_kernel_version = lanforge_kernel_version.replace('\n','') # print('\n'.join(output)) ssh.close() time.sleep(1) @@ -230,6 +231,7 @@ class lf_check(): ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('./btserver --version | grep Version') lanforge_gui_version = stdout.readlines() + lanforge_gui_version = lanforge_gui_version.replace('\n','') # print('\n'.join(output)) ssh.close() time.sleep(1) @@ -1143,15 +1145,13 @@ Example : print("lanforge_gui_version {gui_ver}".format(gui_ver=lanforge_gui_version)) except: print("lanforge_gui_version exception") -# - # LANforge and scripts config lf_test_setup = pd.DataFrame({ 'LANforge Config': [""], - 'kernel version': [lanforge_kernel_version], - 'GUI version': [lanforge_gui_version], - 'scripts git sha': [scripts_git_sha] + 'kernel version': lanforge_kernel_version, + 'GUI version': lanforge_gui_version, + 'scripts git sha': scripts_git_sha }) # generate output reports From 1c328b2aab6f4aee33be0e99e2cdd2146277e4b2 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Sat, 24 Jul 2021 18:13:15 -0600 Subject: [PATCH 71/79] lf_check.py : replace does not work on a list Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 5aa1e4b4..e4d196f7 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -218,7 +218,6 @@ class lf_check(): ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('uname -r') lanforge_kernel_version = stdout.readlines() - lanforge_kernel_version = lanforge_kernel_version.replace('\n','') # print('\n'.join(output)) ssh.close() time.sleep(1) @@ -231,7 +230,6 @@ class lf_check(): ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) stdin, stdout, stderr = ssh.exec_command('./btserver --version | grep Version') lanforge_gui_version = stdout.readlines() - lanforge_gui_version = lanforge_gui_version.replace('\n','') # print('\n'.join(output)) ssh.close() time.sleep(1) From 2af342777d3d4e54283e4b94b219fbdf58d3bd10 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Mon, 26 Jul 2021 06:41:38 -0600 Subject: [PATCH 72/79] lf_check.py : comments updates Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index e4d196f7..817d5aa9 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -32,8 +32,8 @@ Using .json: 2. update lf_check.json to enable (TRUE) tests to be run in the test suite, the default TEST_DICTIONARY NOTES: getting radio information: -1. curl -H 'Accept: application/json' http://localhost:8080/radiostatus/all | json_pp | less -2. response = self.json_get("/radiostatus/all") +1. (Using Curl) curl -H 'Accept: application/json' http://localhost:8080/radiostatus/all | json_pp | less +2. (using Python) response = self.json_get("/radiostatus/all") GENERIC NOTES: Starting LANforge: From 1913c0422732eac0b5ef6511a304e8f71491a0e0 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Mon, 26 Jul 2021 08:10:16 -0600 Subject: [PATCH 73/79] lf_check.py : removed \n from the kernel version , node version , GUI build date read from LANforge. Getting data ready to do the software version analysis Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 817d5aa9..99b1e13d 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -211,6 +211,19 @@ class lf_check(): scripts_git_sha = commit_hash.decode('utf-8','ignore') return scripts_git_sha + def get_lanforge_node_version(self): + ssh = paramiko.SSHClient() # creating shh client object we use this object to connect to router + ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # automatically adds the missing host key + #ssh.connect(self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) + ssh.connect(hostname=self.lf_mgr_ip, port=22, username=self.lf_mgr_user, password=self.lf_mgr_pass, banner_timeout=600) + stdin, stdout, stderr = ssh.exec_command('uname -n') + lanforge_node_version = stdout.readlines() + # print('\n'.join(output)) + lanforge_node_version =[line.replace('\n','') for line in lanforge_node_version] + ssh.close() + time.sleep(1) + return lanforge_node_version + def get_lanforge_kernel_version(self): ssh = paramiko.SSHClient() # creating shh client object we use this object to connect to router ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # automatically adds the missing host key @@ -219,6 +232,7 @@ class lf_check(): stdin, stdout, stderr = ssh.exec_command('uname -r') lanforge_kernel_version = stdout.readlines() # print('\n'.join(output)) + lanforge_kernel_version =[line.replace('\n','') for line in lanforge_kernel_version] ssh.close() time.sleep(1) return lanforge_kernel_version @@ -231,6 +245,7 @@ class lf_check(): stdin, stdout, stderr = ssh.exec_command('./btserver --version | grep Version') lanforge_gui_version = stdout.readlines() # print('\n'.join(output)) + lanforge_gui_version =[line.replace('\n','') for line in lanforge_gui_version] ssh.close() time.sleep(1) return lanforge_gui_version @@ -1060,6 +1075,7 @@ Example : exit(1) # Test-rig information information + lanforge_node_version = 'NO_LF_NODE_VER' scripts_git_sha = 'NO_GIT_SHA' lanforge_kernel_version = 'NO_KERNEL_VER' lanforge_gui_version = 'NO_LF_GUI_VER' @@ -1125,13 +1141,19 @@ Example : check.run_script_test() # get sha and lanforge informaiton for results - # Need to do this after reading the configuration + # Need to do this after reading the configuration try: scripts_git_sha = check.get_scripts_git_sha() print("git_sha {sha}".format(sha=scripts_git_sha)) except: print("git_sha read exception ") + try: + lanforge_node_version = check.get_lanforge_node_version() + print("lanforge_node_version {node_ver}".format(node_node=lanforge_node_version)) + except: + print("lanforge_node_version exception") + try: lanforge_kernel_version = check.get_lanforge_kernel_version() print("lanforge_kernel_version {kernel_ver}".format(kernel_ver=lanforge_kernel_version)) @@ -1146,7 +1168,7 @@ Example : # LANforge and scripts config lf_test_setup = pd.DataFrame({ - 'LANforge Config': [""], + 'LANforge': lanforge_node_version, 'kernel version': lanforge_kernel_version, 'GUI version': lanforge_gui_version, 'scripts git sha': scripts_git_sha @@ -1158,12 +1180,14 @@ Example : report.start_content_div2() report.set_obj_html("Objective","Run QA Tests") report.build_objective() + report.set_text("LANforge") + report.build_text() report.set_table_dataframe(lf_test_setup) report.build_table() report.set_table_title("LF Check Test Results") report.build_table_title() - report.set_text("lanforge-scripts git sha: {}".format(git_sha)) - report.build_text() + # report.set_text("lanforge-scripts git sha: {}".format(git_sha)) + # report.build_text() html_results = check.get_html_results() report.set_custom_html(html_results) report.build_custom() From d6c0b50f56d342d5cf546dcc8802b1c278a0daff Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Mon, 26 Jul 2021 08:13:24 -0600 Subject: [PATCH 74/79] lf_check.py : typo fix Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/lf_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 99b1e13d..1cd2ede9 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -50,7 +50,7 @@ Starting LANforge: # for a while that appear to clear up once the entire testbed is power cycled # issue a shutdown command on the lanforge(s) -# ssh root@lanforgex reboot (need to verify) or do a shutdown +# ssh root@lanforge reboot (need to verify) or do a shutdown # send curl command to remote power switch to reboot testbed # curl -s http://admin:lanforge@192.168.100.237/outlet?1=CCL -o /dev/null 2>&1 # From 7c52f583094adbcadf10c4c7207c3aefa36d3766 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 27 Jul 2021 16:24:21 -0600 Subject: [PATCH 75/79] lf_check.py : comment update for starting lanforge on boot ct_us_001.json : start of configuation for ap auto test Signed-off-by: Chuck SmileyRekiere --- py-scripts/tools/ct_us_001.json | 19 +++++++++++++++++++ py-scripts/tools/lf_check.py | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/py-scripts/tools/ct_us_001.json b/py-scripts/tools/ct_us_001.json index da56c577..aa2834ac 100644 --- a/py-scripts/tools/ct_us_001.json +++ b/py-scripts/tools/ct_us_001.json @@ -14,6 +14,7 @@ "lf_mgr_ip": "192.168.100.116", "lf_mgr_port": "8080", "dut_name": "ASUSRT-AX88U", + "dut_bssid_2g": "3c:7c:3f:55:4d:60", "dut_bssid_5g": "3c:7c:3f:55:4d:64", "dut_sw": "3.0.0.4.386_42820", "test_timeout": 300, @@ -110,6 +111,24 @@ " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_5G (1)'", + " --max_stations_2 4 --max_stations_5 32 --max_stations_dual 4 --radio2 1.1.wiphy1", + " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", + " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", + " --set 'Throughput vs Pkt Size' 0 --set 'Capacity' 0 --set 'Band-Steering' 0 --set 'Skip 2.4 Ghz Tests' 1", + " --pull_report --local_lf_report_dir REPORT_PATH", + " --test_rig TEST_RIG --influx_host DATABASE_HOST --influx_port DATABASE_PORT --influx_org DATABASE_ORG", + " --influx_token=DATABASE_TOKEN --influx_bucket DATABASE_BUCKET --influx_tag DATABASE_TAG --set DUT_SET_NAME" + ] + }, + "CT-US-001_lf_ap_auto_test1": { + "enabled": "FALSE", + "command": "lf_ap_auto_test.py", + "timeout":"1200", + "args": "", + "args_list":[ + " --mgr LF_MGR_IP --port LF_MGR_PORT --lf_user lanforge --lf_password lanforge", + " --instance_name ap-auto-instance --config_name test_con --upstream UPSTREAM_PORT", + " --dut5_0 'DUT_NAME lanforge DUT_BSSID_5G (1)' --dut2_0 'DUT_NAME lanforge DUT_BSSID_2G (1)'", " --max_stations_2 32 --max_stations_5 32 --max_stations_dual 100 --radio2 1.1.wiphy1", " --radio5 1.1.wiphy2 --set 'Basic Client Connectivity' 1", " --set 'Multi Band Performance' 0 --set 'Stability' 0 --set 'Multi-Station Throughput vs Pkt Size' 0,", diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 1cd2ede9..89f47643 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -40,6 +40,9 @@ Starting LANforge: On local or remote system: /home/lanforge/LANforgeGUI/lfclient.bash -cli-socket 3990 -s LF_MGR On local system the -s LF_MGR will be local_host if not provided + On LANforge ~lanforge/.config/autostart/LANforge-auto.desktop is used to restart lanforge on boot. + http://www.candelatech.com/cookbook.php?vol=misc&book=Automatically+starting+LANforge+GUI+on+login + 1. add server (telnet localhost 4001) build info, GUI build sha, and Kernel version to the output. A. for build information on LANforgeGUI : /home/lanforge ./btserver --version B. for the kernel version uname -r (just verion ), uname -a build date @@ -54,6 +57,8 @@ Starting LANforge: # send curl command to remote power switch to reboot testbed # curl -s http://admin:lanforge@192.168.100.237/outlet?1=CCL -o /dev/null 2>&1 # + + ''' import datetime import pprint From 0596c9df1f68e408cc2ca17eb843c324d4cbfebf Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 27 Jul 2021 16:35:25 -0600 Subject: [PATCH 76/79] sandbox : example code , will be deleted Signed-off-by: Chuck SmileyRekiere --- py-scripts/sandbox/kpi_3.py | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 py-scripts/sandbox/kpi_3.py diff --git a/py-scripts/sandbox/kpi_3.py b/py-scripts/sandbox/kpi_3.py new file mode 100644 index 00000000..9a377faf --- /dev/null +++ b/py-scripts/sandbox/kpi_3.py @@ -0,0 +1,48 @@ +# Run this app with `python app.py` and +# visit http://127.0.0.1:8050/ in your web browser. + +import dash +import dash_core_components as dcc +import dash_html_components as html +import plotly.express as px +import pandas as pd + + +external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] + +app = dash.Dash(__name__, external_stylesheets=external_stylesheets) + +df = pd.read_csv('http://192.168.95.6/html-reports/2021-07-20-16-25-05_lf_check/dataplane-2021-07-20-04-28-42/kpi.csv', sep='\t') + +append_df = pd.read_csv('http://192.168.95.6/html-reports/2021-07-24-03-00-01_lf_check/dataplane-2021-07-24-03-06-02/kpi.csv', sep='\t') + +df = df.append(append_df, ignore_index=True) + +print(df) + +fig = px.scatter(df, x="Date", y="numeric-score", + color="short-description", hover_name="short-description", + size_max=60) +''' +fig = px.scatter(df, x="short-description", y="numeric-score", + color="short-description", hover_name="short-description", + size_max=60) +''' +fig .update_layout( + title="Throughput vs Packet size", + xaxis_title="Packet Size", + yaxis_title="Mbps", + xaxis = {'type' : 'date'} +) + + +app.layout = html.Div([ + dcc.Graph( + id='packet-size vs rate', + figure=fig + ) +]) + +if __name__ == '__main__': + app.run_server(debug=True) + \ No newline at end of file From ba654b1502a23ea89d0b3d0c3720a215f3d64ae3 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 27 Jul 2021 17:53:55 -0600 Subject: [PATCH 77/79] kpi_3.py : udpated lines with markers Signed-off-by: Chuck SmileyRekiere --- py-scripts/sandbox/kpi_3.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/py-scripts/sandbox/kpi_3.py b/py-scripts/sandbox/kpi_3.py index 9a377faf..da7f648a 100644 --- a/py-scripts/sandbox/kpi_3.py +++ b/py-scripts/sandbox/kpi_3.py @@ -18,11 +18,17 @@ append_df = pd.read_csv('http://192.168.95.6/html-reports/2021-07-24-03-00-01_lf df = df.append(append_df, ignore_index=True) -print(df) +#print(df) + +fig = (px.scatter(df, x="Date", y="numeric-score", + color="short-description", hover_name="short-description", + size_max=60)).update_traces(mode='lines+markers') +''' fig = px.scatter(df, x="Date", y="numeric-score", color="short-description", hover_name="short-description", size_max=60) +''' ''' fig = px.scatter(df, x="short-description", y="numeric-score", color="short-description", hover_name="short-description", From 6a2d9fb72d9ac1cd558ad6b83e66d67a2a802b79 Mon Sep 17 00:00:00 2001 From: jitendracandela Date: Wed, 28 Jul 2021 22:28:56 +0530 Subject: [PATCH 78/79] added legend location,legend column,legend fontsize,legend box --- py-scripts/lf_graph.py | 12 +++++++++++- py-scripts/lf_report_test.py | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/py-scripts/lf_graph.py b/py-scripts/lf_graph.py index 9575989b..e01fe19e 100755 --- a/py-scripts/lf_graph.py +++ b/py-scripts/lf_graph.py @@ -53,6 +53,11 @@ class lf_bar_graph(): _text_font=None, _text_rotation=None, _grp_title = "", + _legend_handles=None, + _legend_loc="best", + _legend_box=None, + _legend_ncol=1, + _legend_fontsize=None, _dpi=96, _enable_csv=False): @@ -79,6 +84,11 @@ class lf_bar_graph(): self.grp_title = _grp_title self.enable_csv = _enable_csv self.lf_csv = lf_csv() + self.legend_handles = _legend_handles + self.legend_loc = _legend_loc + self.legend_box = _legend_box + self.legend_ncol = _legend_ncol + self.legend_fontsize = _legend_fontsize def build_bar_graph(self): if self.color is None: @@ -121,7 +131,7 @@ class lf_bar_graph(): else: plt.xticks(np.arange(0, len(self.data_set[0]), step=self.xaxis_step), self.xaxis_categories, fontsize = self.xticks_font) - plt.legend() + plt.legend(handles=self.legend_handles, loc=self.legend_loc, bbox_to_anchor=self.legend_box, ncol=self.legend_ncol, fontsize=self.legend_fontsize) plt.suptitle(self.title, fontsize=self.title_size) plt.title(self.grp_title) fig = plt.gcf() diff --git a/py-scripts/lf_report_test.py b/py-scripts/lf_report_test.py index adedf1f9..8c1af448 100755 --- a/py-scripts/lf_report_test.py +++ b/py-scripts/lf_report_test.py @@ -103,7 +103,11 @@ if __name__ == "__main__": _show_bar_value=True, _text_font=7, _text_rotation=45, - _xticks_font=7) + _xticks_font=7, + _legend_loc="best", + _legend_box=(1,1), + _legend_ncol=1, + _legend_fontsize=None) graph_png = graph.build_bar_graph() From 5d55973fad9ada0825e7949de7013fe1c7901d8e Mon Sep 17 00:00:00 2001 From: shivamcandela Date: Thu, 29 Jul 2021 00:55:45 +0530 Subject: [PATCH 79/79] changed the fields to /all in collect_endp_stats to collect all endpoint data Signed-off-by: shivamcandela --- py-scripts/sta_connect2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py-scripts/sta_connect2.py b/py-scripts/sta_connect2.py index 0210243a..bf69e72b 100755 --- a/py-scripts/sta_connect2.py +++ b/py-scripts/sta_connect2.py @@ -320,7 +320,7 @@ class StaConnect2(LFCliBase): def collect_endp_stats(self, endp_map): print("Collecting Data") - fields="?fields=name,tx+bytes,rx+bytes" + fields="/all" for (cx_name, endps) in endp_map.items(): try: endp_url = "/endp/%s%s" % (endps[0], fields)