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:
Angus Gratton 2020-06-26 18:16:20 +10:00 committed by bot
parent e0fc7b1c48
commit d7f251aef3
2 changed files with 46 additions and 40 deletions

View file

@ -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"softAP assign IP to 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"softAP assign IP to 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__':

View file

@ -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)