mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-20 20:14:57 +00:00
lf_cisco_snp.py : updates for results csv
This commit is contained in:
@@ -622,11 +622,12 @@ class cisco_():
|
|||||||
|
|
||||||
class L3VariableTime(LFCliBase):
|
class L3VariableTime(LFCliBase):
|
||||||
def __init__(self, host, port, endp_type, args, tos, side_b, radio_name_list, number_of_stations_per_radio_list,
|
def __init__(self, host, port, endp_type, args, tos, side_b, radio_name_list, number_of_stations_per_radio_list,
|
||||||
ssid_list, ssid_password_list, ssid_security_list, wifimode_list,station_lists, name_prefix, debug_on, outfile,
|
ssid_list, ssid_password_list, ssid_security_list, wifimode_list,station_lists, name_prefix, debug_on, outfile, results,
|
||||||
test_keys,test_config,
|
test_keys,test_config,
|
||||||
reset_port_enable_list,
|
reset_port_enable_list,
|
||||||
reset_port_time_min_list,
|
reset_port_time_min_list,
|
||||||
reset_port_time_max_list,
|
reset_port_time_max_list,
|
||||||
|
csv_started=False,
|
||||||
side_a_min_bps=560000, side_a_max_bps=0,
|
side_a_min_bps=560000, side_a_max_bps=0,
|
||||||
side_a_min_pdu=1518,side_a_max_pdu=0,
|
side_a_min_pdu=1518,side_a_max_pdu=0,
|
||||||
side_b_min_bps=560000, side_b_max_bps=0,
|
side_b_min_bps=560000, side_b_max_bps=0,
|
||||||
@@ -662,7 +663,8 @@ class L3VariableTime(LFCliBase):
|
|||||||
self.station_profiles = []
|
self.station_profiles = []
|
||||||
self.args = args
|
self.args = args
|
||||||
self.outfile = outfile
|
self.outfile = outfile
|
||||||
self.csv_started = False
|
self.results = results
|
||||||
|
self.csv_started = csv_started
|
||||||
self.epoch_time = int(time.time())
|
self.epoch_time = int(time.time())
|
||||||
self.debug = debug_on
|
self.debug = debug_on
|
||||||
self.test_keys = test_keys
|
self.test_keys = test_keys
|
||||||
@@ -676,6 +678,10 @@ class L3VariableTime(LFCliBase):
|
|||||||
self.csv_file = open(self.outfile, "a+")
|
self.csv_file = open(self.outfile, "a+")
|
||||||
self.csv_writer = csv.writer(self.csv_file, delimiter=",")
|
self.csv_writer = csv.writer(self.csv_file, delimiter=",")
|
||||||
|
|
||||||
|
if self.results is not None:
|
||||||
|
self.csv_results = open(self.results, "a+")
|
||||||
|
self.csv_results_writer = csv.writer(self.csv_results, delimiter=",")
|
||||||
|
|
||||||
for (radio_, ssid_, ssid_password_, ssid_security_, wifimode_,\
|
for (radio_, ssid_, ssid_password_, ssid_security_, wifimode_,\
|
||||||
reset_port_enable_, reset_port_time_min_, reset_port_time_max_) \
|
reset_port_enable_, reset_port_time_min_, reset_port_time_max_) \
|
||||||
in zip(radio_name_list, ssid_list, ssid_password_list, ssid_security_list, wifimode_list,\
|
in zip(radio_name_list, ssid_list, ssid_password_list, ssid_security_list, wifimode_list,\
|
||||||
@@ -766,6 +772,7 @@ class L3VariableTime(LFCliBase):
|
|||||||
csv_rx_drop_percent_data.append(rx_drop_percent[item])
|
csv_rx_drop_percent_data.append(rx_drop_percent[item])
|
||||||
|
|
||||||
self.csv_add_row(csv_rx_drop_percent_data,self.csv_writer,self.csv_file)
|
self.csv_add_row(csv_rx_drop_percent_data,self.csv_writer,self.csv_file)
|
||||||
|
self.csv_add_row(csv_rx_drop_percent_data,self.csv_results_writer,self.csv_results)
|
||||||
|
|
||||||
def __compare_vals(self, old_list, new_list):
|
def __compare_vals(self, old_list, new_list):
|
||||||
passes = 0
|
passes = 0
|
||||||
@@ -776,9 +783,9 @@ class L3VariableTime(LFCliBase):
|
|||||||
csv_rx_delta_row_data = []
|
csv_rx_delta_row_data = []
|
||||||
csv_rx_delta_dict = {}
|
csv_rx_delta_dict = {}
|
||||||
|
|
||||||
for key in self.test_keys:
|
#for key in self.test_keys:
|
||||||
csv_rx_row_data.append(self.test_config_dict[key])
|
# csv_rx_row_data.append(self.test_config_dict[key])
|
||||||
csv_rx_delta_row_data.append(self.test_config_dict[key])
|
# csv_rx_delta_row_data.append(self.test_config_dict[key])
|
||||||
|
|
||||||
|
|
||||||
for key in [key for key in old_list if "mtx" in key]: del old_list[key]
|
for key in [key for key in old_list if "mtx" in key]: del old_list[key]
|
||||||
@@ -787,8 +794,6 @@ class L3VariableTime(LFCliBase):
|
|||||||
filtered_values = [v for _, v in new_list.items() if v !=0]
|
filtered_values = [v for _, v in new_list.items() if v !=0]
|
||||||
average_rx= sum(filtered_values) / len(filtered_values) if len(filtered_values) != 0 else 0
|
average_rx= sum(filtered_values) / len(filtered_values) if len(filtered_values) != 0 else 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# only evaluate upstream or downstream
|
# only evaluate upstream or downstream
|
||||||
new_evaluate_list = new_list.copy()
|
new_evaluate_list = new_list.copy()
|
||||||
print("new_evaluate_list before",new_evaluate_list)
|
print("new_evaluate_list before",new_evaluate_list)
|
||||||
@@ -798,6 +803,7 @@ class L3VariableTime(LFCliBase):
|
|||||||
elif "downstream" in self.test_config_dict.values():
|
elif "downstream" in self.test_config_dict.values():
|
||||||
for key in [key for key in new_evaluate_list if "-B" in key]: del new_evaluate_list[key]
|
for key in [key for key in new_evaluate_list if "-B" in key]: del new_evaluate_list[key]
|
||||||
print("downstream in dictionary values")
|
print("downstream in dictionary values")
|
||||||
|
#follow code left in for now provides the best 5 worst 5
|
||||||
'''print("new_evaluate_list after",new_evaluate_list)
|
'''print("new_evaluate_list after",new_evaluate_list)
|
||||||
csv_performance_values=sorted(new_evaluate_list.items(), key=lambda x: (x[1],x[0]), reverse=False)
|
csv_performance_values=sorted(new_evaluate_list.items(), key=lambda x: (x[1],x[0]), reverse=False)
|
||||||
csv_performance_values=self.csv_validate_list(csv_performance_values,5)
|
csv_performance_values=self.csv_validate_list(csv_performance_values,5)
|
||||||
@@ -819,6 +825,7 @@ class L3VariableTime(LFCliBase):
|
|||||||
if len(old_evaluate_list) == len(new_evaluate_list):
|
if len(old_evaluate_list) == len(new_evaluate_list):
|
||||||
for item, value in old_evaluate_list.items():
|
for item, value in old_evaluate_list.items():
|
||||||
expected_passes +=1
|
expected_passes +=1
|
||||||
|
print("ITEM: {} VALUE: {}".format(item, value))
|
||||||
if new_evaluate_list[item] > old_evaluate_list[item]:
|
if new_evaluate_list[item] > old_evaluate_list[item]:
|
||||||
passes += 1
|
passes += 1
|
||||||
#if self.debug: logg.info(item, new_evaluate_list[item], old_evaluate_list[item], " Difference: ", new_evaluate_list[item] - old_evaluate_list[item])
|
#if self.debug: logg.info(item, new_evaluate_list[item], old_evaluate_list[item], " Difference: ", new_evaluate_list[item] - old_evaluate_list[item])
|
||||||
@@ -840,6 +847,9 @@ class L3VariableTime(LFCliBase):
|
|||||||
# need to generate list first to determine worst and best
|
# need to generate list first to determine worst and best
|
||||||
filtered_values = [v for _, v in csv_rx_delta_dict.items() if v !=0]
|
filtered_values = [v for _, v in csv_rx_delta_dict.items() if v !=0]
|
||||||
#average_rx_delta= sum(filtered_values) / len(filtered_values) if len(filtered_values) != 0 else 0
|
#average_rx_delta= sum(filtered_values) / len(filtered_values) if len(filtered_values) != 0 else 0
|
||||||
|
for key in self.test_keys:
|
||||||
|
csv_rx_row_data.append(self.test_config_dict[key])
|
||||||
|
csv_rx_delta_row_data.append(self.test_config_dict[key])
|
||||||
|
|
||||||
max_tp_mbps = sum(filtered_values)
|
max_tp_mbps = sum(filtered_values)
|
||||||
csv_rx_row_data.append(max_tp_mbps)
|
csv_rx_row_data.append(max_tp_mbps)
|
||||||
@@ -855,6 +865,9 @@ class L3VariableTime(LFCliBase):
|
|||||||
csv_rx_row_data.append("fail")
|
csv_rx_row_data.append("fail")
|
||||||
|
|
||||||
csv_rx_row_data.extend([self.epoch_time, self.time_stamp(),'rx_delta'])
|
csv_rx_row_data.extend([self.epoch_time, self.time_stamp(),'rx_delta'])
|
||||||
|
|
||||||
|
print("csv_rx_row_data {}".format(csv_rx_row_data))
|
||||||
|
#TODO: may want to pass in the information that needs to be in the csv file into the class
|
||||||
'''
|
'''
|
||||||
csv_rx_row_data.extend([self.epoch_time, self.time_stamp(),'rx'])
|
csv_rx_row_data.extend([self.epoch_time, self.time_stamp(),'rx'])
|
||||||
csv_rx_delta_row_data.extend([self.epoch_time, self.time_stamp(),'rx_delta'])
|
csv_rx_delta_row_data.extend([self.epoch_time, self.time_stamp(),'rx_delta'])
|
||||||
@@ -880,20 +893,23 @@ class L3VariableTime(LFCliBase):
|
|||||||
csv_rx_headers.append(item)
|
csv_rx_headers.append(item)
|
||||||
# note need to have all upstream and downstream in the csv table thus new_list and old_list
|
# note need to have all upstream and downstream in the csv table thus new_list and old_list
|
||||||
#csv_rx_row_data.append(new_list[item])
|
#csv_rx_row_data.append(new_list[item])
|
||||||
|
# provide delta
|
||||||
csv_rx_row_data.append(new_list[item] - old_list[item])
|
csv_rx_row_data.append(new_list[item] - old_list[item])
|
||||||
|
|
||||||
self.csv_add_row(csv_rx_row_data,self.csv_writer,self.csv_file)
|
self.csv_add_row(csv_rx_row_data,self.csv_writer,self.csv_file)
|
||||||
|
#self.csv_add_row(csv_rx_row_data,self.csv_results_writer,self.csv_results)
|
||||||
|
|
||||||
#self.csv_add_row(csv_rx_delta_row_data,self.csv_writer,self.csv_file)
|
#self.csv_add_row(csv_rx_delta_row_data,self.csv_writer,self.csv_file)
|
||||||
|
|
||||||
if passes == expected_passes:
|
if passes == expected_passes:
|
||||||
return True
|
return True, max_tp_mbps, csv_rx_row_data
|
||||||
else:
|
else:
|
||||||
return False
|
return False, max_tp_mbps, csv_rx_row_data
|
||||||
else:
|
else:
|
||||||
print("Old-list length: %i new: %i does not match in compare-vals."%(len(old_list), len(new_list)))
|
print("Old-list length: %i new: %i does not match in compare-vals."%(len(old_list), len(new_list)))
|
||||||
print("old-list:",old_list)
|
print("old-list:",old_list)
|
||||||
print("new-list:",new_list)
|
print("new-list:",new_list)
|
||||||
return False
|
return False, None, None # check to see if this is valid
|
||||||
|
|
||||||
def verify_controller(self):
|
def verify_controller(self):
|
||||||
if self.args == None:
|
if self.args == None:
|
||||||
@@ -1002,6 +1018,11 @@ class L3VariableTime(LFCliBase):
|
|||||||
self._pass("PASS: Stations build finished")
|
self._pass("PASS: Stations build finished")
|
||||||
|
|
||||||
def start(self, print_pass=False, print_fail=False):
|
def start(self, print_pass=False, print_fail=False):
|
||||||
|
best_max_tp_mbps = 0
|
||||||
|
best_csv_rx_row_data = " "
|
||||||
|
max_tp_mbps = 0
|
||||||
|
csv_rx_row_data = " "
|
||||||
|
Result = False
|
||||||
logg.info("Bringing up stations")
|
logg.info("Bringing up stations")
|
||||||
self.local_realm.admin_up(self.side_b)
|
self.local_realm.admin_up(self.side_b)
|
||||||
for station_profile in self.station_profiles:
|
for station_profile in self.station_profiles:
|
||||||
@@ -1052,7 +1073,21 @@ class L3VariableTime(LFCliBase):
|
|||||||
new_rx_values, rx_drop_percent = self.__get_rx_values()
|
new_rx_values, rx_drop_percent = self.__get_rx_values()
|
||||||
|
|
||||||
expected_passes += 1
|
expected_passes += 1
|
||||||
if self.__compare_vals(old_rx_values, new_rx_values):
|
'''
|
||||||
|
#self.csv_add_row(csv_rx_row_data,self.csv_results_writer,self.csv_results)
|
||||||
|
|
||||||
|
|
||||||
|
if passes == expected_passes:
|
||||||
|
return True, max_tp_mbps, csv_rx_row_data
|
||||||
|
else:
|
||||||
|
return False, max_tp_mbps, csv_rx_row_data
|
||||||
|
'''
|
||||||
|
Result, max_tp_mbps, csv_rx_row_data = self.__compare_vals(old_rx_values, new_rx_values)
|
||||||
|
if max_tp_mbps > best_max_tp_mbps:
|
||||||
|
best_max_tp_mbps = max_tp_mbps
|
||||||
|
best_csv_rx_row_data = csv_rx_row_data
|
||||||
|
|
||||||
|
if Result:
|
||||||
passes += 1
|
passes += 1
|
||||||
else:
|
else:
|
||||||
self._fail("FAIL: Not all stations increased traffic", print_fail)
|
self._fail("FAIL: Not all stations increased traffic", print_fail)
|
||||||
@@ -1062,7 +1097,7 @@ class L3VariableTime(LFCliBase):
|
|||||||
#self.__record_rx_dropped_percent(rx_drop_percent)
|
#self.__record_rx_dropped_percent(rx_drop_percent)
|
||||||
|
|
||||||
cur_time = datetime.datetime.now()
|
cur_time = datetime.datetime.now()
|
||||||
|
self.csv_add_row(best_csv_rx_row_data,self.csv_results_writer,self.csv_results)
|
||||||
if passes == expected_passes:
|
if passes == expected_passes:
|
||||||
self._pass("PASS: All tests passed", print_pass)
|
self._pass("PASS: All tests passed", print_pass)
|
||||||
|
|
||||||
@@ -1095,14 +1130,17 @@ class L3VariableTime(LFCliBase):
|
|||||||
if self.csv_file is not None:
|
if self.csv_file is not None:
|
||||||
self.csv_writer.writerow(headers)
|
self.csv_writer.writerow(headers)
|
||||||
self.csv_file.flush()
|
self.csv_file.flush()
|
||||||
|
if self.csv_results is not None:
|
||||||
|
self.csv_results_writer.writerow(headers)
|
||||||
|
self.csv_results.flush()
|
||||||
|
|
||||||
def csv_validate_list(self, csv_list, length):
|
def csv_validate_list(self, csv_list, length):
|
||||||
if len(csv_list) < length:
|
if len(csv_list) < length:
|
||||||
csv_list = csv_list + [('no data','no data')] * (length - len(csv_list))
|
csv_list = csv_list + [('no data','no data')] * (length - len(csv_list))
|
||||||
return csv_list
|
return csv_list
|
||||||
|
|
||||||
def csv_add_row(self,row,writer,csv_file):
|
def csv_add_row(self,row,writer,csv_file): # can make two calls eventually
|
||||||
if self.csv_file is not None:
|
if csv_file is not None:
|
||||||
writer.writerow(row)
|
writer.writerow(row)
|
||||||
csv_file.flush()
|
csv_file.flush()
|
||||||
|
|
||||||
@@ -1466,6 +1504,7 @@ Eventual Realm at Cisco
|
|||||||
if args.csv_outfile != None:
|
if args.csv_outfile != None:
|
||||||
current_time = time.strftime("%m_%d_%Y_%H_%M_%S", time.localtime())
|
current_time = time.strftime("%m_%d_%Y_%H_%M_%S", time.localtime())
|
||||||
csv_outfile = "{}_{}.csv".format(args.csv_outfile,current_time)
|
csv_outfile = "{}_{}.csv".format(args.csv_outfile,current_time)
|
||||||
|
csv_results = "results_{}_{}.csv".format(args.csv_outfile,current_time)
|
||||||
print("csv output file : {}".format(csv_outfile))
|
print("csv output file : {}".format(csv_outfile))
|
||||||
|
|
||||||
if args.log:
|
if args.log:
|
||||||
@@ -1707,12 +1746,12 @@ Eventual Realm at Cisco
|
|||||||
cisco_chan_widths = "20".split()
|
cisco_chan_widths = "20".split()
|
||||||
cisco_ap_modes = "local".split()
|
cisco_ap_modes = "local".split()
|
||||||
cisco_data_encryptions = "disable".split()
|
cisco_data_encryptions = "disable".split()
|
||||||
cisco_packet_types = "lf_udp lf_tcp".split()
|
#cisco_packet_types = "lf_udp lf_tcp".split()
|
||||||
#cisco_packet_types = "lf_udp".split()
|
cisco_packet_types = "lf_udp".split()
|
||||||
#cisco_directions = "upstream downstream".split()
|
#cisco_directions = "upstream downstream".split()
|
||||||
cisco_directions = "upstream downstream".split()
|
cisco_directions = "upstream downstream".split()
|
||||||
cisco_packet_sizes = "88 512 1370 1518".split()
|
#cisco_packet_sizes = "88 512 1370 1518".split()
|
||||||
#cisco_packet_sizes = "1518".split()
|
cisco_packet_sizes = "1518".split()
|
||||||
cisco_client_densities = "1".split()
|
cisco_client_densities = "1".split()
|
||||||
cisco_data_encryptions = "disable".split()
|
cisco_data_encryptions = "disable".split()
|
||||||
|
|
||||||
@@ -1760,11 +1799,12 @@ Eventual Realm at Cisco
|
|||||||
logg.info(cisco_client_densities)
|
logg.info(cisco_client_densities)
|
||||||
logg.info(cisco_data_encryptions)
|
logg.info(cisco_data_encryptions)
|
||||||
|
|
||||||
ap_set = None
|
__ap_set = None
|
||||||
band_set = None
|
__band_set = None
|
||||||
chan_width_set = None
|
__chan_width_set = None
|
||||||
ap_mode_set = None
|
__ap_mode_set = None
|
||||||
tx_power_set = None
|
__tx_power_set = None
|
||||||
|
__csv_started = False
|
||||||
|
|
||||||
for cisco_ap in cisco_aps:
|
for cisco_ap in cisco_aps:
|
||||||
for cisco_band in cisco_bands: # frequency
|
for cisco_band in cisco_bands: # frequency
|
||||||
@@ -1794,20 +1834,20 @@ Eventual Realm at Cisco
|
|||||||
logg.info("# NO CONTROLLER SET , TEST MODE")
|
logg.info("# NO CONTROLLER SET , TEST MODE")
|
||||||
logg.info("################################################")
|
logg.info("################################################")
|
||||||
else:
|
else:
|
||||||
if( cisco_ap != ap_set or
|
if( cisco_ap != __ap_set or
|
||||||
cisco_band != band_set or
|
cisco_band != __band_set or
|
||||||
cisco_chan_width != chan_width_set or
|
cisco_chan_width != __chan_width_set or
|
||||||
cisco_ap_mode != ap_mode_set or
|
cisco_ap_mode != __ap_mode_set or
|
||||||
cisco_tx_power != tx_power_set
|
cisco_tx_power != __tx_power_set
|
||||||
):
|
):
|
||||||
logg.info("###############################################")
|
logg.info("###############################################")
|
||||||
logg.info("# NEW CONTROLLER CONFIG")
|
logg.info("# NEW CONTROLLER CONFIG")
|
||||||
logg.info("###############################################")
|
logg.info("###############################################")
|
||||||
ap_set = cisco_ap
|
__ap_set = cisco_ap
|
||||||
band_set = cisco_band
|
__band_set = cisco_band
|
||||||
chan_width_set = cisco_chan_width
|
__chan_width_set = cisco_chan_width
|
||||||
ap_mode_set = cisco_ap_mode
|
__ap_mode_set = cisco_ap_mode
|
||||||
tx_power_set = cisco_tx_power
|
__tx_power_set = cisco_tx_power
|
||||||
#############################################
|
#############################################
|
||||||
# configure cisco controller
|
# configure cisco controller
|
||||||
#############################################
|
#############################################
|
||||||
@@ -1969,8 +2009,11 @@ Eventual Realm at Cisco
|
|||||||
side_b_min_pdu =cisco_packet_size,
|
side_b_min_pdu =cisco_packet_size,
|
||||||
debug_on=debug_on,
|
debug_on=debug_on,
|
||||||
outfile=csv_outfile,
|
outfile=csv_outfile,
|
||||||
|
results=csv_results,
|
||||||
test_keys=test_keys,
|
test_keys=test_keys,
|
||||||
test_config=test_config)
|
test_config=test_config,
|
||||||
|
csv_started=__csv_started )
|
||||||
|
__csv_started = True
|
||||||
ip_var_test.pre_cleanup()
|
ip_var_test.pre_cleanup()
|
||||||
ip_var_test.build()
|
ip_var_test.build()
|
||||||
if not ip_var_test.passes():
|
if not ip_var_test.passes():
|
||||||
|
|||||||
Reference in New Issue
Block a user