Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1185)

Unified Diff: server/site_wlan_connect.py

Issue 2790009: A large retooling of site_wlan_connect.py association code. (Closed) Base URL: ssh://gitrw.chromium.org/autotest.git
Patch Set: Typo fix Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: server/site_wlan_connect.py
diff --git a/server/site_wlan_connect.py b/server/site_wlan_connect.py
index 1a0981200bd0112cd3dbae0f0e6ede07ccfad3db..273cf5e96c8986552bb77dd3485d71d29873ae88 100644
--- a/server/site_wlan_connect.py
+++ b/server/site_wlan_connect.py
@@ -11,7 +11,7 @@ bus_loop = dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus(mainloop=bus_loop)
manager = dbus.Interface(bus.get_object("org.chromium.flimflam", "/"),
"org.chromium.flimflam.Manager")
-
+connect_quirks = {}
def DbusSetup():
try:
@@ -46,9 +46,11 @@ def ResetService(init_state):
return
if init_state == 'ready':
# flimflam is already connected. Disconnect.
+ connect_quirks['already_connected'] = 1
service.Disconnect()
else:
# Workaround to force flimflam out of error state and back to 'idle'
+ connect_quirks['clear_error'] = 1
service.ClearProperty('Error')
while wait_time < reset_timeout:
@@ -65,8 +67,15 @@ def ResetService(init_state):
def TryConnect(assoc_time):
init_assoc_time = assoc_time
try:
- init_state = service.GetProperties().get("State", None)
+ init_props = service.GetProperties()
+ init_state = init_props.get("State", None)
+ if init_state == "configuration" or init_state == "ready":
+ if assoc_time > 0:
+ # We connected in the time between the last failure and now
+ print>>sys.stderr, "Associated while we weren't looking!"
+ return (init_props, None)
except dbus.exceptions.DBusException, e:
+ connect_quirks['lost_dbus'] = 1
print>>sys.stderr, "We just lost the service handle!"
return (None, 'DBUSFAIL')
@@ -76,6 +85,12 @@ def TryConnect(assoc_time):
try:
service.Connect()
+ except org.chromium.flimflam.Error.InProgress, e:
+ # We can hope that a ResetService in the next call will solve this
+ connect_quirks['in_progress'] = 1
+ print>>sys.stderr, "Previous connect is still in progress!"
+ time.sleep(.5)
+ return (None, 'FAIL')
except Exception, e:
print "FAIL(Connect): ssid %s exception %s" %(ssid, e)
sys.exit(2)
@@ -88,6 +103,7 @@ def TryConnect(assoc_time):
# print>>sys.stderr, "time %3.1f state %s" % (assoc_time, status)
if status == "failure":
if assoc_time == init_assoc_time:
+ connect_quirks['fast_fail'] = 1
print>>sys.stderr, "failure on first try! Sleep 5 seconds"
time.sleep(5)
return (properties, 'FAIL')
@@ -143,10 +159,13 @@ for attempt in range(5):
assoc_time = time.time() - assoc_start
+if attempt > 0:
+ connect_quirks['multiple_attempts'] = 1
+
if failure_type is not None:
print "%s(assoc): ssid %s assoc %3.1f secs props %s" \
%(failure_type, ssid, assoc_time, ParseProps(properties))
- DumpLogs()
+ DumpLogs(logs)
sys.exit(3)
# wait another config_timeout seconds to get an ip address
@@ -172,10 +191,10 @@ if status != "ready":
if config_time >= config_timeout:
print "TIMEOUT(config): ssid %s assoc %3.1f config %3.1f secs" \
%(ssid, assoc_time, config_time)
- DumpLogs()
+ DumpLogs(logs)
sys.exit(6)
-print "OK %3.1f %3.1f (assoc and config times in sec)" \
- %(assoc_time, config_time)
+print "OK %3.1f %3.1f %s (assoc and config times in sec, quirks)" \
+ %(assoc_time, config_time, str(connect_quirks.keys()))
sys.exit(0)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698