mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-04 04:38:02 +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