ci provisioning: Add some experiments to check the runner's STA state
Not clear why sometimes it associates without negotiating a new DHCP lease.
This commit is contained in:
parent
ab55bea55a
commit
002a13a71a
2 changed files with 46 additions and 40 deletions
|
@ -51,52 +51,55 @@ def test_examples_provisioning_softap(env, extra_data):
|
||||||
print("SoftAP SSID : " + ssid)
|
print("SoftAP SSID : " + ssid)
|
||||||
print("SoftAP Password : " + password)
|
print("SoftAP Password : " + password)
|
||||||
|
|
||||||
ctrl = wifi_tools.wpa_cli(iface, reset_on_exit=True)
|
try:
|
||||||
print("Connecting to DUT SoftAP...")
|
ctrl = wifi_tools.wpa_cli(iface, reset_on_exit=True)
|
||||||
ip = ctrl.connect(ssid, password)
|
print("Connecting to DUT SoftAP...")
|
||||||
got_ip = dut1.expect(re.compile(r"DHCP server assigned IP to a station, IP is: (\d+.\d+.\d+.\d+)"), timeout=60)[0]
|
ip = ctrl.connect(ssid, password)
|
||||||
if ip != got_ip:
|
got_ip = dut1.expect(re.compile(r"DHCP server assigned IP to a station, IP is: (\d+.\d+.\d+.\d+)"), timeout=60)[0]
|
||||||
raise RuntimeError("SoftAP connected to another host! " + ip + "!=" + got_ip)
|
if ip != got_ip:
|
||||||
print("Connected to DUT SoftAP")
|
raise RuntimeError("SoftAP connected to another host! " + ip + "!=" + got_ip)
|
||||||
|
print("Connected to DUT SoftAP")
|
||||||
|
|
||||||
print("Starting Provisioning")
|
print("Starting Provisioning")
|
||||||
verbose = False
|
verbose = False
|
||||||
protover = "V0.1"
|
protover = "V0.1"
|
||||||
secver = 1
|
secver = 1
|
||||||
pop = "abcd1234"
|
pop = "abcd1234"
|
||||||
provmode = "softap"
|
provmode = "softap"
|
||||||
ap_ssid = "myssid"
|
ap_ssid = "myssid"
|
||||||
ap_password = "mypassword"
|
ap_password = "mypassword"
|
||||||
softap_endpoint = ip.split('.')[0] + "." + ip.split('.')[1] + "." + ip.split('.')[2] + ".1:80"
|
softap_endpoint = ip.split('.')[0] + "." + ip.split('.')[1] + "." + ip.split('.')[2] + ".1:80"
|
||||||
|
|
||||||
print("Getting security")
|
print("Getting security")
|
||||||
security = esp_prov.get_security(secver, pop, verbose)
|
security = esp_prov.get_security(secver, pop, verbose)
|
||||||
if security is None:
|
if security is None:
|
||||||
raise RuntimeError("Failed to get security")
|
raise RuntimeError("Failed to get security")
|
||||||
|
|
||||||
print("Getting transport")
|
print("Getting transport")
|
||||||
transport = esp_prov.get_transport(provmode, softap_endpoint)
|
transport = esp_prov.get_transport(provmode, softap_endpoint)
|
||||||
if transport is None:
|
if transport is None:
|
||||||
raise RuntimeError("Failed to get transport")
|
raise RuntimeError("Failed to get transport")
|
||||||
|
|
||||||
print("Verifying protocol version")
|
print("Verifying protocol version")
|
||||||
if not esp_prov.version_match(transport, protover):
|
if not esp_prov.version_match(transport, protover):
|
||||||
raise RuntimeError("Mismatch in protocol version")
|
raise RuntimeError("Mismatch in protocol version")
|
||||||
|
|
||||||
print("Starting Session")
|
print("Starting Session")
|
||||||
if not esp_prov.establish_session(transport, security):
|
if not esp_prov.establish_session(transport, security):
|
||||||
raise RuntimeError("Failed to start session")
|
raise RuntimeError("Failed to start session")
|
||||||
|
|
||||||
print("Sending Wifi credential to DUT")
|
print("Sending Wifi credential to DUT")
|
||||||
if not esp_prov.send_wifi_config(transport, security, ap_ssid, ap_password):
|
if not esp_prov.send_wifi_config(transport, security, ap_ssid, ap_password):
|
||||||
raise RuntimeError("Failed to send Wi-Fi config")
|
raise RuntimeError("Failed to send Wi-Fi config")
|
||||||
|
|
||||||
print("Applying config")
|
print("Applying config")
|
||||||
if not esp_prov.apply_wifi_config(transport, security):
|
if not esp_prov.apply_wifi_config(transport, security):
|
||||||
raise RuntimeError("Failed to send apply config")
|
raise RuntimeError("Failed to send apply config")
|
||||||
|
|
||||||
if not esp_prov.wait_wifi_connected(transport, security):
|
if not esp_prov.wait_wifi_connected(transport, security):
|
||||||
raise RuntimeError("Provisioning failed")
|
raise RuntimeError("Provisioning failed")
|
||||||
|
finally:
|
||||||
|
ctrl.reset()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -55,8 +55,9 @@ class wpa_cli:
|
||||||
if self.iface_ifc is None:
|
if self.iface_ifc is None:
|
||||||
raise RuntimeError('supplicant : Failed to fetch interface')
|
raise RuntimeError('supplicant : Failed to fetch interface')
|
||||||
|
|
||||||
self.old_network = self.iface_obj.Get("fi.w1.wpa_supplicant1.Interface", "CurrentNetwork",
|
self.old_network = self._get_iface_property("CurrentNetwork")
|
||||||
dbus_interface='org.freedesktop.DBus.Properties')
|
print("Old network is %s" % self.old_network)
|
||||||
|
|
||||||
if self.old_network == '/':
|
if self.old_network == '/':
|
||||||
self.old_network = None
|
self.old_network = None
|
||||||
else:
|
else:
|
||||||
|
@ -78,6 +79,8 @@ class wpa_cli:
|
||||||
if self.new_network is not None:
|
if self.new_network is not None:
|
||||||
self.iface_ifc.RemoveNetwork(self.new_network)
|
self.iface_ifc.RemoveNetwork(self.new_network)
|
||||||
|
|
||||||
|
print("Pre-connect state is %s, IP is %s" % (self._get_iface_property("State"), get_wiface_IPv4(self.iface_name)))
|
||||||
|
|
||||||
self.new_network = self.iface_ifc.AddNetwork({"ssid": ssid, "psk": password})
|
self.new_network = self.iface_ifc.AddNetwork({"ssid": ssid, "psk": password})
|
||||||
self.iface_ifc.SelectNetwork(self.new_network)
|
self.iface_ifc.SelectNetwork(self.new_network)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
Loading…
Reference in a new issue