mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-02 19:58:03 +00:00
lf_cisco_snp.py : updates for results csv
This commit is contained in:
@@ -622,11 +622,12 @@ class cisco_():
|
||||
|
||||
class L3VariableTime(LFCliBase):
|
||||
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,
|
||||
reset_port_enable_list,
|
||||
reset_port_time_min_list,
|
||||
reset_port_time_max_list,
|
||||
csv_started=False,
|
||||
side_a_min_bps=560000, side_a_max_bps=0,
|
||||
side_a_min_pdu=1518,side_a_max_pdu=0,
|
||||
side_b_min_bps=560000, side_b_max_bps=0,
|
||||
@@ -662,7 +663,8 @@ class L3VariableTime(LFCliBase):
|
||||
self.station_profiles = []
|
||||
self.args = args
|
||||
self.outfile = outfile
|
||||
self.csv_started = False
|
||||
self.results = results
|
||||
self.csv_started = csv_started
|
||||
self.epoch_time = int(time.time())
|
||||
self.debug = debug_on
|
||||
self.test_keys = test_keys
|
||||
@@ -676,6 +678,10 @@ class L3VariableTime(LFCliBase):
|
||||
self.csv_file = open(self.outfile, "a+")
|
||||
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_,\
|
||||
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,\
|
||||
@@ -766,6 +772,7 @@ class L3VariableTime(LFCliBase):
|
||||
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_results_writer,self.csv_results)
|
||||
|
||||
def __compare_vals(self, old_list, new_list):
|
||||
passes = 0
|
||||
@@ -776,9 +783,9 @@ class L3VariableTime(LFCliBase):
|
||||
csv_rx_delta_row_data = []
|
||||
csv_rx_delta_dict = {}
|
||||
|
||||
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])
|
||||
#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])
|
||||
|
||||
|
||||
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]
|
||||
average_rx= sum(filtered_values) / len(filtered_values) if len(filtered_values) != 0 else 0
|
||||
|
||||
|
||||
|
||||
# only evaluate upstream or downstream
|
||||
new_evaluate_list = new_list.copy()
|
||||
print("new_evaluate_list before",new_evaluate_list)
|
||||
@@ -798,6 +803,7 @@ class L3VariableTime(LFCliBase):
|
||||
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]
|
||||
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)
|
||||
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)
|
||||
@@ -819,6 +825,7 @@ class L3VariableTime(LFCliBase):
|
||||
if len(old_evaluate_list) == len(new_evaluate_list):
|
||||
for item, value in old_evaluate_list.items():
|
||||
expected_passes +=1
|
||||
print("ITEM: {} VALUE: {}".format(item, value))
|
||||
if new_evaluate_list[item] > old_evaluate_list[item]:
|
||||
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])
|
||||
@@ -840,6 +847,9 @@ class L3VariableTime(LFCliBase):
|
||||
# need to generate list first to determine worst and best
|
||||
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
|
||||
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)
|
||||
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.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_delta_row_data.extend([self.epoch_time, self.time_stamp(),'rx_delta'])
|
||||
@@ -880,20 +893,23 @@ class L3VariableTime(LFCliBase):
|
||||
csv_rx_headers.append(item)
|
||||
# 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])
|
||||
# provide delta
|
||||
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_results_writer,self.csv_results)
|
||||
|
||||
#self.csv_add_row(csv_rx_delta_row_data,self.csv_writer,self.csv_file)
|
||||
|
||||
if passes == expected_passes:
|
||||
return True
|
||||
return True, max_tp_mbps, csv_rx_row_data
|
||||
else:
|
||||
return False
|
||||
return False, max_tp_mbps, csv_rx_row_data
|
||||
else:
|
||||
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("new-list:",new_list)
|
||||
return False
|
||||
return False, None, None # check to see if this is valid
|
||||
|
||||
def verify_controller(self):
|
||||
if self.args == None:
|
||||
@@ -1002,6 +1018,11 @@ class L3VariableTime(LFCliBase):
|
||||
self._pass("PASS: Stations build finished")
|
||||
|
||||
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")
|
||||
self.local_realm.admin_up(self.side_b)
|
||||
for station_profile in self.station_profiles:
|
||||
@@ -1052,7 +1073,21 @@ class L3VariableTime(LFCliBase):
|
||||
new_rx_values, rx_drop_percent = self.__get_rx_values()
|
||||
|
||||
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
|
||||
else:
|
||||
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)
|
||||
|
||||
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:
|
||||
self._pass("PASS: All tests passed", print_pass)
|
||||
|
||||
@@ -1095,14 +1130,17 @@ class L3VariableTime(LFCliBase):
|
||||
if self.csv_file is not None:
|
||||
self.csv_writer.writerow(headers)
|
||||
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):
|
||||
if len(csv_list) < length:
|
||||
csv_list = csv_list + [('no data','no data')] * (length - len(csv_list))
|
||||
return csv_list
|
||||
|
||||
def csv_add_row(self,row,writer,csv_file):
|
||||
if self.csv_file is not None:
|
||||
def csv_add_row(self,row,writer,csv_file): # can make two calls eventually
|
||||
if csv_file is not None:
|
||||
writer.writerow(row)
|
||||
csv_file.flush()
|
||||
|
||||
@@ -1466,6 +1504,7 @@ Eventual Realm at Cisco
|
||||
if args.csv_outfile != None:
|
||||
current_time = time.strftime("%m_%d_%Y_%H_%M_%S", time.localtime())
|
||||
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))
|
||||
|
||||
if args.log:
|
||||
@@ -1707,12 +1746,12 @@ Eventual Realm at Cisco
|
||||
cisco_chan_widths = "20".split()
|
||||
cisco_ap_modes = "local".split()
|
||||
cisco_data_encryptions = "disable".split()
|
||||
cisco_packet_types = "lf_udp lf_tcp".split()
|
||||
#cisco_packet_types = "lf_udp".split()
|
||||
#cisco_packet_types = "lf_udp lf_tcp".split()
|
||||
cisco_packet_types = "lf_udp".split()
|
||||
#cisco_directions = "upstream downstream".split()
|
||||
cisco_directions = "upstream downstream".split()
|
||||
cisco_packet_sizes = "88 512 1370 1518".split()
|
||||
#cisco_packet_sizes = "1518".split()
|
||||
#cisco_packet_sizes = "88 512 1370 1518".split()
|
||||
cisco_packet_sizes = "1518".split()
|
||||
cisco_client_densities = "1".split()
|
||||
cisco_data_encryptions = "disable".split()
|
||||
|
||||
@@ -1760,11 +1799,12 @@ Eventual Realm at Cisco
|
||||
logg.info(cisco_client_densities)
|
||||
logg.info(cisco_data_encryptions)
|
||||
|
||||
ap_set = None
|
||||
band_set = None
|
||||
chan_width_set = None
|
||||
ap_mode_set = None
|
||||
tx_power_set = None
|
||||
__ap_set = None
|
||||
__band_set = None
|
||||
__chan_width_set = None
|
||||
__ap_mode_set = None
|
||||
__tx_power_set = None
|
||||
__csv_started = False
|
||||
|
||||
for cisco_ap in cisco_aps:
|
||||
for cisco_band in cisco_bands: # frequency
|
||||
@@ -1794,20 +1834,20 @@ Eventual Realm at Cisco
|
||||
logg.info("# NO CONTROLLER SET , TEST MODE")
|
||||
logg.info("################################################")
|
||||
else:
|
||||
if( cisco_ap != ap_set or
|
||||
cisco_band != band_set or
|
||||
cisco_chan_width != chan_width_set or
|
||||
cisco_ap_mode != ap_mode_set or
|
||||
cisco_tx_power != tx_power_set
|
||||
if( cisco_ap != __ap_set or
|
||||
cisco_band != __band_set or
|
||||
cisco_chan_width != __chan_width_set or
|
||||
cisco_ap_mode != __ap_mode_set or
|
||||
cisco_tx_power != __tx_power_set
|
||||
):
|
||||
logg.info("###############################################")
|
||||
logg.info("# NEW CONTROLLER CONFIG")
|
||||
logg.info("###############################################")
|
||||
ap_set = cisco_ap
|
||||
band_set = cisco_band
|
||||
chan_width_set = cisco_chan_width
|
||||
ap_mode_set = cisco_ap_mode
|
||||
tx_power_set = cisco_tx_power
|
||||
__ap_set = cisco_ap
|
||||
__band_set = cisco_band
|
||||
__chan_width_set = cisco_chan_width
|
||||
__ap_mode_set = cisco_ap_mode
|
||||
__tx_power_set = cisco_tx_power
|
||||
#############################################
|
||||
# configure cisco controller
|
||||
#############################################
|
||||
@@ -1969,8 +2009,11 @@ Eventual Realm at Cisco
|
||||
side_b_min_pdu =cisco_packet_size,
|
||||
debug_on=debug_on,
|
||||
outfile=csv_outfile,
|
||||
results=csv_results,
|
||||
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.build()
|
||||
if not ip_var_test.passes():
|
||||
|
||||
Reference in New Issue
Block a user