diff --git a/py-json/realm.py b/py-json/realm.py index 5f75d21c..9aa27ebb 100755 --- a/py-json/realm.py +++ b/py-json/realm.py @@ -767,7 +767,7 @@ class WifiMonitor: self.lfclient_url = lfclient_url self.up = up self.local_realm = local_realm - self.station_name = None + self.monitor_name = None self.resource = resource_ self.flag_names = [] self.flag_mask_names = [] @@ -775,22 +775,31 @@ class WifiMonitor: self.aid = "NA" # used when sniffing /ax radios self.bsssid = "00:00:00:00:00:00" # used when sniffing on /ax radios - def create(self, resource_=1, radio_="wiphy0", name_="moni0" ): + def create(self, resource_=1,channel=None, radio_="wiphy0", name_="moni0" ): print("Creating monitor " + name_) + self.monitor_name = name_ computed_flags = 0 for flag_n in self.flag_names: computed_flags += add_monitor.flags[flag_n] + data ={ + "shelf": 1, + "resource": resource_, + "radio": radio_, + "freqency":5785, + "mode": "NA", #0 for AUTO or "NA" + "channel": channel + + } + self.local_realm.json_post("/cli-json/set_wifi_radio", _data= data) self.local_realm.json_post("/cli-json/add_monitor", { "shelf": 1, "resource": resource_, "radio": radio_, - "ap_name": name_, + "ap_name": self.monitor_name, "flags": computed_flags, "flags_mask": self.flags_mask }) - - def set_flag(self, param_name, value): if (param_name not in add_monitor.flags): raise ValueError("Flag '%s' does not exist for add_monitor, consult add_monitor.py" % param_name) @@ -802,17 +811,33 @@ class WifiMonitor: def cleanup(self): print("Cleaning up monitors") - LFUtils.removePort(resource=self.resource, port_name = self.station_name, baseurl=self.lfclient_url, debug=self.debug) - pass + LFUtils.removePort(resource=self.resource, port_name = self.monitor_name, baseurl=self.lfclient_url, debug=self.debug) + def admin_up(self): - up_request = LFUtils.port_up_request(resource_id=self.resource, port_name=self.station_name) + up_request = LFUtils.port_up_request(resource_id=self.resource, port_name=self.monitor_name) self.local_realm.json_post("/cli-json/set_port", up_request) def admin_down(self): - down_request = LFUtils.portDownRequest(resource_id=self.resource, port_name=self.station_name) + down_request = LFUtils.portDownRequest(resource_id=self.resource, port_name=self.monitor_name) self.local_realm.json_post("/cli-json/set_port", down_request) + def start_sniff(self): + data = { + "shelf": 1, + "resource": 1, + "port": self.monitor_name, + "display": "NA", + "flags": 0x2, + "outfile": "/home/lanforge/Documents/out.cap", + "duration": 45 + } + self.local_realm.json_post("/cli-json/sniff_port", _data= data) + + + # "sniff_port 1 %s %s NA %s %s.pcap %i"%(r, m, sflags, m, int(dur)) + + # use the station profile to set the combination of features you want on your stations # once this combination is configured, build the stations with the build(resource, radio, number) call @@ -869,19 +894,19 @@ class StationProfile: # TODO: create use_wpa3() - def use_security(self, security_type, ssid=None, passwd=None): - security_type = security_type.lower() - types = {"wep": "wep_enable", "wpa": "wpa_enable", "wpa2": "wpa2_enable", "wpa3": "use-wpa3"} + def use_wpa2(self, on=False, ssid=None, passwd=None): self.add_sta_data["ssid"] = ssid - if security_type in types.keys(): + if on: if (ssid is None) or ("" == ssid): - raise ValueError("use_security: %s requires ssid" % security_type) + raise ValueError("use_wpa2: WPA2 requires ssid") if (passwd is None) or ("" == passwd): - raise ValueError("use_security: %s requires passphrase or [BLANK]" % security_type) + raise ValueError("use_wpa2: WPA2 requires passphrase or [BLANK]") self.set_command_param("add_sta", "ssid", ssid) self.set_command_param("add_sta", "key", passwd) - self.set_command_flag("add_sta", types[security_type], 1) + self.set_command_flag("add_sta", "wpa2_enable", 1) self.add_sta_data["key"] = passwd + else: + self.set_command_flag("add_sta", "wpa2_enable", 0) def set_command_param(self, command_name, param_name, param_value): # we have to check what the param name is diff --git a/py-scripts/test_l3_powersave_traffic.py b/py-scripts/test_l3_powersave_traffic.py index 98ae586d..c957cfe3 100755 --- a/py-scripts/test_l3_powersave_traffic.py +++ b/py-scripts/test_l3_powersave_traffic.py @@ -53,7 +53,7 @@ class L3PowersaveTraffic(LFCliBase): dhcp=True, debug_=False) self.newMonitor = realm.WifiMonitor(self.lfclient_url, self.local_realm,debug_= _debug_on) - self.station_profile.admin_up(resource=1) + @@ -65,9 +65,15 @@ class L3PowersaveTraffic(LFCliBase): self.station_profile.set_command_param("set_port", "report_timer", 1500) self.station_profile.set_command_flag("set_port", "rpt_timer", 1) self.station_profile.set_command_flag("add_sta", "power_save_enable", 1) + #channel = self.json_get("/port/1/%s/%s/"%(1,"wiphy0")) + #rint("The channel name is...") + #pprint.pprint(channel) + self.newMonitor.create(resource_=1, channel=157, radio_= "wiphy1", name_="moni0") self.station_profile.create(resource=1, radio="wiphy0", sta_names_=self.sta_list, debug=False) - self.newMonitor.create(resource_=1, radio_= "wiphy1", name_="moni_powersave") + # station_channel = self.json_get("/port/1/%s/%s") + # pprint.pprint(station_channel) + self._pass("PASS: Station builds finished") temp_sta_list = [] @@ -99,7 +105,7 @@ class L3PowersaveTraffic(LFCliBase): def __get_rx_values(self): - cx_list = self.json_get("/endp/list?fields=name,rx+bytes", debug_=True) + cx_list = self.json_get("/endp/list?fields=name,rx+bytes", debug_=False) #print("==============\n", cx_list, "\n==============") cx_rx_map = {} for cx_name in cx_list['endpoint']: @@ -118,6 +124,10 @@ class L3PowersaveTraffic(LFCliBase): end_time = self.local_realm.parse_time(self.test_duration) + cur_time #admin up on new monitor self.newMonitor.admin_up() + self.newMonitor.start_sniff() + #admin up on station + self.station_profile.admin_up(resource=1) + #self.newMonitor.set_flag() self.__set_all_cx_state("RUNNING") while cur_time < end_time: @@ -149,7 +159,8 @@ def main(): lfjson_host = "localhost" lfjson_port = 8080 - station_list = LFUtils.portNameSeries(prefix_="sta", start_id_=0, end_id_=4, padding_number_=10000) + #station_list = LFUtils.portNameSeries(prefix_="sta", start_id_=0, end_id_=4, padding_number_=10000) + station_list = ["sta0000","sta0001"] ip_powersave_test = L3PowersaveTraffic(lfjson_host, lfjson_port, ssid = "jedway-open" , security = "open", password ="[BLANK]", station_list = station_list , side_a_min_rate=2000, side_b_min_rate=2000, side_a_max_rate=0, side_b_max_rate=0, prefix="00000", test_duration="30s",