mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +00:00 
			
		
		
		
	Updates to import statements:
- Import importlib, os, and sys to each python script.
 - Append "lanforge-scripts" root directory to the system path, allowing each script to be called from an antecedent directory. e.g.
if 'lanforge-scripts' not in sys.path:
    sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../../")))
 - All statements of the form 'from <module> import <class>' replace with:
<module> = importlib.import_module("lanforge-scripts.<directory>.<module>")
<class> = <module>.<class>
			
			
This commit is contained in:
		| @@ -44,34 +44,38 @@ COPYRIGHT: | ||||
| Copyright 2021 Candela Technologies Inc | ||||
|  | ||||
| INCLUDE_IN_README | ||||
|  | ||||
| ''' | ||||
|  | ||||
|  | ||||
| import sys | ||||
| import os | ||||
| import importlib | ||||
| from pprint import pprint | ||||
| import re | ||||
| import serial | ||||
| import pexpect | ||||
| from pexpect_serial import SerialSpawn | ||||
| import argparse | ||||
| import time | ||||
| import datetime | ||||
| import subprocess | ||||
| import csv | ||||
|  | ||||
| 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')) | ||||
| if 'py-dashboard' not in sys.path: | ||||
|     sys.path.append(os.path.join(os.path.abspath('..'), 'py-dashboard')) | ||||
| if 'lanforge-scripts' not in sys.path: | ||||
|     sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../"))) | ||||
|  | ||||
| lf_report = importlib.import_module("lanforge-scripts.py-scripts.lf_report") | ||||
| # lfcli_base = importlib.import_module("lanforge-scripts.py-json.LANforge.lfcli_base") | ||||
| # LFCliBase = lfcli_base.LFCliBase | ||||
| LFUtils = importlib.import_module("lanforge-scripts.py-json.LANforge.LFUtils") | ||||
| realm = importlib.import_module("lanforge-scripts.py-json.realm") | ||||
| Realm = realm.Realm | ||||
| csv_to_influx = importlib.import_module("lanforge-scripts.py-scripts.csv_to_influx") | ||||
| InfluxRequest = importlib.import_module("lanforge-scripts.py-dashboard.InfluxRequest") | ||||
| influx_add_parser_args = InfluxRequest.influx_add_parser_args | ||||
|  | ||||
| from pprint import pprint | ||||
| from InfluxRequest import * | ||||
| import serial | ||||
| import pexpect | ||||
| from pexpect_serial import SerialSpawn | ||||
| from lf_report import lf_report | ||||
| import argparse | ||||
| from LANforge import LFUtils | ||||
| from realm import Realm | ||||
| import time | ||||
| import datetime | ||||
| import csv | ||||
|  | ||||
| # This class handles running the test and generating reports. | ||||
| class L3VariableTime(Realm): | ||||
| @@ -288,83 +292,52 @@ class L3VariableTime(Realm): | ||||
|     def get_endp_stats_for_port(self, eid_name, endps): | ||||
|         lat = 0 | ||||
|         jit = 0 | ||||
|         total_dl_rate = 0 | ||||
|         total_dl_rate_ll = 0 | ||||
|         total_dl_pkts_ll = 0 | ||||
|         total_ul_rate = 0 | ||||
|         total_ul_rate_ll = 0 | ||||
|         total_ul_pkts_ll = 0 | ||||
|         tput = 0 | ||||
|         count = 0 | ||||
|         sta_name = 'no_station' | ||||
|  | ||||
|         #print("endp-stats-for-port, port-eid: {}".format(eid_name)) | ||||
|         eid = self.name_to_eid(eid_name) | ||||
|         print("eid_name: {eid_name} eid: {eid}".format(eid_name=eid_name,eid=eid)) | ||||
|  | ||||
|         # Convert all eid elements to strings | ||||
|         eid[0] = str(eid[0]) | ||||
|         eid[1] = str(eid[1]) | ||||
|         eid[2] = str(eid[2]) | ||||
|  | ||||
|         for endp in endps: | ||||
|             pprint(endp) | ||||
|             eid_endp = endp["eid"].split(".") | ||||
|             print("Comparing eid:{eid} to endp-id {eid_endp}".format(eid=eid,eid_endp=eid_endp)) | ||||
|         for e in endps: | ||||
|             #pprint(e) | ||||
|             eid_endp = e["eid"].split(".") | ||||
|             print("Comparing eid: ", eid, " to endp-id: ", eid_endp) | ||||
|             # Look through all the endpoints (endps), to find the port the eid_name is using. | ||||
|             # The eid_name that has the same Shelf, Resource, and Port as the eid_endp (looking at all the endps) | ||||
|             # Then read the eid_endp to get the delay, jitter and rx rate | ||||
|             # Note: the endp eid is shelf.resource.port.endp-id, the eid can be treated somewhat as  | ||||
|             # child class of port-eid , and look up the port the eid is using. | ||||
|             if eid[0] == eid_endp[0] and eid[1] == eid_endp[1] and eid[2] == eid_endp[2]: | ||||
|                 lat += int(endp["delay"]) | ||||
|                 jit += int(endp["jitter"]) | ||||
|                 name = endp["name"] | ||||
|                 print("endp name {name}".format(name=name)) | ||||
|                 sta_name = name.replace('-A','') | ||||
|                 #only the -A endpoint will be found so need to look  | ||||
|  | ||||
|  | ||||
|                 lat += int(e["delay"]) | ||||
|                 jit += int(e["jitter"]) | ||||
|                 tput += int(e["rx rate"]) | ||||
|                 count += 1 | ||||
|                 print("Matched: name: {name} eid:{eid} to endp-id {eid_endp}".format(name=name,eid=eid,eid_endp=eid_endp)) | ||||
|                 print("matched: ") | ||||
|             else: | ||||
|                 name = endp["name"] | ||||
|                 print("No Match: name: {name} eid:{eid} to endp-id {eid_endp}".format(name=name,eid=eid,eid_endp=eid_endp)) | ||||
|                 print("Did not match") | ||||
|  | ||||
|         if count > 1: | ||||
|             lat = int(lat / count) | ||||
|             jit = int(jit / count) | ||||
|  | ||||
|         # need to loop though again to find the upload and download per station if the name matched | ||||
|         for endp in endps: | ||||
|             if sta_name in endp["name"]: | ||||
|                 name = endp["name"] | ||||
|                 if name.endswith("-A"): | ||||
|                     print("name has -A") | ||||
|                     total_dl_rate += int(endp["rx rate"]) | ||||
|                     total_dl_rate_ll += int(endp["rx rate ll"]) | ||||
|                     total_dl_pkts_ll += int(endp["rx pkts ll"]) | ||||
|                 # -B upload side                     | ||||
|                 else:                     | ||||
|                     total_ul_rate += int(endp["rx rate"]) | ||||
|                     total_ul_rate_ll += int(endp["rx rate ll"]) | ||||
|                     total_ul_pkts_ll += int(endp["rx pkts ll"]) | ||||
|  | ||||
|  | ||||
|         return lat, jit, total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll, total_ul_rate, total_ul_rate_ll, total_ul_pkts_ll | ||||
|         return lat, jit, tput | ||||
|  | ||||
|     # Query all endpoints to generate rx and other stats, returned | ||||
|     # as an array of objects. | ||||
|     def __get_rx_values(self): | ||||
|         endp_list = self.json_get("endp?fields=name,eid,delay,jitter,rx+rate,rx+rate+ll,rx+bytes,rx+drop+%25,rx+pkts+ll", debug_=False) | ||||
|         endp_list = self.json_get("endp?fields=name,eid,delay,jitter,rx+rate,rx+bytes,rx+drop+%25", debug_=False) | ||||
|         endp_rx_drop_map = {} | ||||
|         endp_rx_map = {} | ||||
|         our_endps = {} | ||||
|         endps = [] | ||||
|  | ||||
|         total_ul = 0 | ||||
|         total_ul_ll = 0 | ||||
|         total_dl = 0 | ||||
|         total_dl_ll = 0 | ||||
|  | ||||
|         for e in self.multicast_profile.get_mc_names(): | ||||
|             our_endps[e] = e; | ||||
| @@ -377,16 +350,10 @@ class L3VariableTime(Realm): | ||||
|                         endps.append(value) | ||||
|                         print("endpoint: ", item, " value:\n") | ||||
|                         pprint(value) | ||||
|                          | ||||
|                      | ||||
|                         for value_name, value in value.items(): | ||||
|                             if value_name == 'rx bytes': | ||||
|                                 endp_rx_map[item] = value | ||||
|                             if value_name == 'rx rate': | ||||
|                                 endp_rx_map[item] = value | ||||
|                             if value_name == 'rx rate ll': | ||||
|                                 endp_rx_map[item] = value | ||||
|                             if value_name == 'rx pkts ll': | ||||
|                                 endp_rx_map[item] = value | ||||
|                             if value_name == 'rx drop %': | ||||
|                                 endp_rx_drop_map[item] = value | ||||
|                             if value_name == 'rx rate': | ||||
| @@ -396,16 +363,9 @@ class L3VariableTime(Realm): | ||||
|                                     total_dl += int(value) | ||||
|                                 else: | ||||
|                                     total_ul += int(value) | ||||
|                             if value_name == 'rx rate ll': | ||||
|                                 # This hack breaks for mcast or if someone names endpoints weirdly. | ||||
|                                 if item.endswith("-A"): | ||||
|                                     total_dl_ll += int(value) | ||||
|                                 else: | ||||
|                                     total_ul_ll += int(value) | ||||
|  | ||||
|  | ||||
|         #print("total-dl: ", total_dl, " total-ul: ", total_ul, "\n") | ||||
|         return endp_rx_map, endp_rx_drop_map, endps, total_dl, total_ul, total_dl_ll, total_ul_ll | ||||
|         return endp_rx_map, endp_rx_drop_map, endps, total_dl, total_ul | ||||
|  | ||||
|     # Common code to generate timestamp for CSV files. | ||||
|     def time_stamp(self): | ||||
| @@ -535,7 +495,7 @@ class L3VariableTime(Realm): | ||||
|             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 from AP: {}".format(ap_stats_5g)) | ||||
|             print("ap_stats_5g {}".format(ap_stats_5g)) | ||||
|  | ||||
|         except: | ||||
|             print("WARNING unable to read AP") | ||||
| @@ -551,8 +511,8 @@ class L3VariableTime(Realm): | ||||
|             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_2g = ss.before.decode('utf-8','ignore') | ||||
|             print("ap_stats_2g from AP: {}".format(ap_stats_2g)) | ||||
|             ap_stats = ss.before.decode('utf-8','ignore') | ||||
|             print("ap_stats_2g {}".format(ap_stats_2g)) | ||||
|  | ||||
|         except: | ||||
|             print("WARNING unable to read AP") | ||||
| @@ -683,7 +643,7 @@ class L3VariableTime(Realm): | ||||
|  | ||||
|                     cur_time = datetime.datetime.now() | ||||
|                     print("Getting initial values.") | ||||
|                     old_rx_values, rx_drop_percent, endps, total_dl_bps, total_ul_bps, total_dl_ll_bps, total_ul_ll_bps = self.__get_rx_values() | ||||
|                     old_rx_values, rx_drop_percent, endps, total_dl_bps, total_ul_bps = self.__get_rx_values() | ||||
|  | ||||
|                     end_time = self.parse_time(self.test_duration) + cur_time | ||||
|  | ||||
| @@ -694,8 +654,6 @@ class L3VariableTime(Realm): | ||||
|                     expected_passes = 0 | ||||
|                     total_dl_bps = 0 | ||||
|                     total_ul_bps = 0 | ||||
|                     total_dl_ll_bps = 0 | ||||
|                     total_ul_ll_bps = 0 | ||||
|                     endps = [] | ||||
|                     ap_row = [] | ||||
|                     ap_stats_col_titles = [] | ||||
| @@ -712,9 +670,9 @@ class L3VariableTime(Realm): | ||||
|                             time.sleep(.2) | ||||
|  | ||||
|                         self.epoch_time = int(time.time()) | ||||
|                         new_rx_values, rx_drop_percent, endps, total_dl_bps, total_ul_bps, total_dl_ll_bps, total_ul_ll_bps = self.__get_rx_values() | ||||
|                         new_rx_values, rx_drop_percent, endps, total_dl_bps, total_ul_bps = self.__get_rx_values() | ||||
|  | ||||
|                         print("main loop, total-dl: ", total_dl_bps, " total-ul: ", total_ul_bps, " total-dl-ll: ", total_dl_ll_bps," total-ul-ll: ", total_ul_ll_bps) | ||||
|                         #print("main loop, total-dl: ", total_dl_bps, " total-ul: ", total_ul_bps) | ||||
|  | ||||
|                         # AP OUTPUT | ||||
|                         if self.ap_read: | ||||
| @@ -733,9 +691,7 @@ class L3VariableTime(Realm): | ||||
|                                 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") | ||||
|                                 "0xe06a  1.67  15.00   0.00   17.00   0.00    0.00     97.33    53.00   2.00    0         0       -91     65      343370578\n") | ||||
|  | ||||
|                                 "0xe06a  61      15      0       17      0       0       6       53      2       0       0       -91     65      343370578\n") | ||||
|                             else: | ||||
|                                 # read from the AP | ||||
|                                 ap_stats_5g = self.read_ap_stats_5g() | ||||
| @@ -763,7 +719,7 @@ class L3VariableTime(Realm): | ||||
|                                     # print("response".format(response)) | ||||
|                                     pprint(response) | ||||
|                                     p = response['interface'] | ||||
|                                     print("#### From LANforge: p, response['insterface']:{}".format(p)) | ||||
|                                     #print("#### From LANforge: p, response['insterface']:{}".format(p)) | ||||
|                                     mac = p['mac'] | ||||
|                                     #print("#### From LANforge: p['mac']: {mac}".format(mac=mac)) | ||||
|      | ||||
| @@ -791,7 +747,7 @@ class L3VariableTime(Realm): | ||||
|                                         print("selected ap_row (from split_row): {}".format(ap_row)) | ||||
|  | ||||
|                                         # Find latency, jitter for connections using this port. | ||||
|                                         latency, jitter, total_ul_rate, total_ul_rate_ll, total_ul_pkts_ll, total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll = self.get_endp_stats_for_port(p["port"], endps) | ||||
|                                         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 | ||||
| @@ -800,9 +756,7 @@ class L3VariableTime(Realm): | ||||
|                                             if xtop_reported: | ||||
|                                                 try: | ||||
|                                                     xtop = split_row[7] | ||||
|                                                     print("xtop 5g {xtop}".format(xtop=xtop)) | ||||
|                                                     channel_utilization = float(100) - float(xtop) | ||||
|                                                     print("channel_utilization {utilization}".format(utilization=channel_utilization)) | ||||
|                                                     channel_utilization = 100 - int(xtop) | ||||
|                                                 except: | ||||
|                                                     print("detected chanspec with reading chanim_stats, failed reading xtop") | ||||
|                                                 # should be only one channel utilization     | ||||
| @@ -821,8 +775,7 @@ class L3VariableTime(Realm): | ||||
|                                         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, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll,  | ||||
|                                                             total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll , ap_row, ap_stats_5g_col_titles) #ap_stats_5g_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", | ||||
| @@ -838,8 +791,7 @@ class L3VariableTime(Realm): | ||||
|                                 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  62      15      0       17      0       0       6       53      2       0       0       -91     65      343370578\n") | ||||
|                                 "0xe06a  1.67  15.00   0.00   17.00   0.00    0.00     97.33    53.00   2.00    0         0       -91     65      343370578\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() | ||||
| @@ -895,7 +847,7 @@ class L3VariableTime(Realm): | ||||
|                                         print("selected ap_row (from split_row): {}".format(ap_row)) | ||||
|  | ||||
|                                         # Find latency, jitter for connections using this port. | ||||
|                                         latency, jitter, total_ul_rate, total_ul_rate_ll, total_ul_pkts_ll, total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll = self.get_endp_stats_for_port(p["port"], endps) | ||||
|                                         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 | ||||
| @@ -904,9 +856,7 @@ class L3VariableTime(Realm): | ||||
|                                             if xtop_reported: | ||||
|                                                 try: | ||||
|                                                     xtop = split_row[7] | ||||
|                                                     print("xtop 2g {xtop}".format(xtop=xtop)) | ||||
|                                                     channel_utilization = float(100) - float(xtop) | ||||
|                                                     print("channel_utilization 2g {utilization}".format(utilization=channel_utilization)) | ||||
|                                                     channel_utilization = 100 - int(xtop) | ||||
|                                                 except: | ||||
|                                                     print("detected chanspec with reading chanim_stats, failed reading xtop") | ||||
|                                                 # should be only one channel utilization     | ||||
| @@ -925,8 +875,7 @@ class L3VariableTime(Realm): | ||||
|                                         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, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll,  | ||||
|                                                             total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll, ap_row, ap_stats_2g_col_titles) #ap_stats_2g_col_titles used as a length | ||||
|                                                             latency, jitter, tput, ap_row, ap_stats_2g_col_titles) #ap_stats_2g_col_titles used as a length | ||||
|  | ||||
|                         else: | ||||
|  | ||||
| @@ -942,15 +891,14 @@ class L3VariableTime(Realm): | ||||
|                                     pprint(response) | ||||
|                                 else: | ||||
|                                     p = response['interface'] | ||||
|                                     latency, jitter, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll, total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll= self.get_endp_stats_for_port(p["port"], endps) | ||||
|                                     latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) | ||||
|                                  | ||||
|                                     self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, | ||||
|                                         latency, jitter, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll,  | ||||
|                                         total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll, ap_row, ap_stats_col_titles) #ap_stats_col_titles used as a length | ||||
|                                         latency, jitter, tput, ap_row, ap_stats_col_titles) #ap_stats_col_titles used as a length | ||||
|  | ||||
|  | ||||
|                     # At end of test step, record KPI information. This is different the kpi.csv | ||||
|                     self.record_kpi(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, total_dl_bps, total_ul_bps, total_dl_ll_bps, total_ul_ll_bps) | ||||
|                     # At end of test step, record KPI information. | ||||
|                     self.record_kpi(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, total_dl_bps, total_ul_bps) | ||||
|  | ||||
|                     # At end of test if requested store upload and download stats | ||||
|                     if self.ap_scheduler_stats: | ||||
| @@ -975,15 +923,15 @@ class L3VariableTime(Realm): | ||||
|                     if passes == expected_passes: | ||||
|                             self._pass("PASS: Requested-Rate: %s <-> %s  PDU: %s <-> %s   All tests passed" % (ul, dl, ul_pdu, dl_pdu), print_pass) | ||||
|  | ||||
|     def write_port_csv(self, sta_count, ul, dl, ul_pdu, dl_pdu, atten, eid_name, port_data, latency, jitter, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll,  | ||||
|                     total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll, ap_row, ap_stats_col_titles): | ||||
|     def write_port_csv(self, sta_count, ul, dl, ul_pdu, dl_pdu, atten, eid_name, port_data, latency, jitter, tput, | ||||
|                        ap_row, ap_stats_col_titles): | ||||
|         row = [self.epoch_time, self.time_stamp(), sta_count, | ||||
|                ul, ul, dl, dl, dl_pdu, dl_pdu, ul_pdu, ul_pdu, | ||||
|                atten, eid_name | ||||
|                ] | ||||
|  | ||||
|         row = row + [port_data['bps rx'], port_data['bps tx'], port_data['rx-rate'], port_data['tx-rate'], | ||||
|                      port_data['signal'], port_data['ap'], port_data['mode'], latency, jitter, total_ul_rate,  total_ul_rate_ll, total_ul_pkts_ll, total_dl_rate, total_dl_rate_ll, total_dl_pkts_ll] | ||||
|                      port_data['signal'], port_data['ap'], port_data['mode'], latency, jitter, tput] | ||||
|  | ||||
|         #Add in info queried from AP. NOTE: do not need to pass in the ap_stats_col_titles | ||||
|         #print("ap_row length {} col_titles length {}".format(len(ap_row),len(self.ap_stats_col_titles))) | ||||
| @@ -1001,7 +949,7 @@ class L3VariableTime(Realm): | ||||
|  | ||||
|  | ||||
|     # Submit data to the influx db if configured to do so. | ||||
|     def record_kpi(self, sta_count, ul, dl, ul_pdu, dl_pdu, atten, total_dl_bps, total_ul_bps, total_dl_ll_bps, total_ul_ll_bps): | ||||
|     def record_kpi(self, sta_count, ul, dl, ul_pdu, dl_pdu, atten, total_dl_bps, total_ul_bps): | ||||
|  | ||||
|         tags = dict() | ||||
|         tags['requested-ul-bps'] = ul | ||||
| @@ -1029,8 +977,7 @@ class L3VariableTime(Realm): | ||||
|             row = [self.epoch_time, self.time_stamp(), sta_count, | ||||
|                    ul, ul, dl, dl, dl_pdu, dl_pdu, ul_pdu, ul_pdu, | ||||
|                    atten, | ||||
|                    total_dl_bps, total_ul_bps, (total_ul_bps + total_dl_bps), | ||||
|                    total_dl_ll_bps, total_ul_ll_bps, (total_ul_ll_bps + total_dl_ll_bps) | ||||
|                    total_dl_bps, total_ul_bps, (total_ul_bps + total_dl_bps) | ||||
|                    ] | ||||
|             # Add values for any user specified tags | ||||
|             for k in self.user_tags: | ||||
| @@ -1067,7 +1014,7 @@ class L3VariableTime(Realm): | ||||
|                           'UL-Min-Requested','UL-Max-Requested','DL-Min-Requested','DL-Max-Requested', | ||||
|                           'UL-Min-PDU','UL-Max-PDU','DL-Min-PDU','DL-Max-PDU','Attenuation', | ||||
|                           'Name', 'Rx-Bps', 'Tx-Bps', 'Rx-Link-Rate', 'Tx-Link-Rate', 'RSSI', 'AP', 'Mode', | ||||
|                           'Rx-Latency', 'Rx-Jitter', 'Ul-Rx-Goodput-bps', 'Ul-Rx-Rate-ll', 'Ul-Rx-Pkts-ll', 'Dl-Rx-Goodput-bps', 'Dl-Rx-Rate-ll', 'Dl-Rx-Pkts-ll' | ||||
|                           'Rx-Latency', 'Rx-Jitter', 'Rx-Goodput-Bps' | ||||
|                           ] | ||||
|         # Add in columns we are going to query from the AP | ||||
|         for col in self.ap_stats_col_titles: | ||||
| @@ -1079,8 +1026,7 @@ class L3VariableTime(Realm): | ||||
|         csv_rx_headers = ['Time epoch', 'Time', 'Station-Count', | ||||
|                           'UL-Min-Requested','UL-Max-Requested','DL-Min-Requested','DL-Max-Requested', | ||||
|                           'UL-Min-PDU','UL-Max-PDU','DL-Min-PDU','DL-Max-PDU','Attenuation', | ||||
|                           'Total-Download-Bps', 'Total-Upload-Bps', 'Total-UL/DL-Bps', | ||||
|                           'Total-Download-LL-Bps', 'Total-Upload-LL-Bps','Total-UL/DL-LL-Bps' | ||||
|                           'Total-Download-Bps', 'Total-Upload-Bps', 'Total-UL/DL-Bps' | ||||
|                           ] | ||||
|         for k in self.user_tags: | ||||
|             csv_rx_headers.append(k[0]) | ||||
| @@ -1227,7 +1173,7 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m | ||||
|     parser.add_argument('--amount_ports_to_reset', help='--amount_ports_to_reset \"<min amount ports> <max amount ports>\" ', default=None) | ||||
|     parser.add_argument('--port_reset_seconds', help='--ports_reset_seconds \"<min seconds> <max seconds>\" ', default="10 30") | ||||
|  | ||||
|     parser.add_argument('--lfmgr', help='--lfmgr <hostname for where LANforge GUI is running>',default='localhost') | ||||
|     parser.add_argument('--mgr', help='--mgr <hostname for where LANforge GUI is running>',default='localhost') | ||||
|     parser.add_argument('--test_duration', help='--test_duration <how long to run>  example --time 5d (5 days) default: 3m options: number followed by d, h, m or s',default='3m') | ||||
|     parser.add_argument('--tos', help='--tos:  Support different ToS settings: BK | BE | VI | VO | numeric',default="BE") | ||||
|     parser.add_argument('--debug', help='--debug flag present debug on  enable debugging',action='store_true') | ||||
| @@ -1243,9 +1189,7 @@ 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') | ||||
|     # note wl1 is the 5G interface , check the MAC ifconfig -a of the interface to the AP BSSID connection (default may be eth7) | ||||
|     parser.add_argument('--ap_cmd_5g', help='ap_cmd_5g \'wl -i wl1 bs_data\'', default="wl -i wl1 bs_data") | ||||
|     # note wl1 is the 2.4G interface , check the MAC ifconfig -a of the interface to the AP BSSID connection | ||||
|     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 wl0 chanim_stats") | ||||
| @@ -1333,8 +1277,8 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m | ||||
|     if args.endp_type: | ||||
|         endp_types = args.endp_type | ||||
|  | ||||
|     if args.lfmgr: | ||||
|         lfjson_host = args.lfmgr | ||||
|     if args.mgr: | ||||
|         lfjson_host = args.mgr | ||||
|  | ||||
|     if args.upstream_port: | ||||
|         side_b = args.upstream_port | ||||
| @@ -1366,7 +1310,7 @@ python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp m | ||||
|  | ||||
|     influxdb = None | ||||
|     if args.influx_bucket is not None: | ||||
|         from InfluxRequest import RecordInflux | ||||
|         from influx2 import RecordInflux | ||||
|         influxdb = RecordInflux(_influx_host=args.influx_host, | ||||
|                                 _influx_port=args.influx_port, | ||||
|                                 _influx_org=args.influx_org, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 erinnerim
					erinnerim