77
77
from subprocess import call
78
78
from optparse import OptionParser
80
from datetime import datetime, timedelta
81
from time import sleep
80
83
class ListDictHandler(logging.StreamHandler):
82
85
Extends logging.StreamHandler to handle list, tuple and dict objects
272
275
logging.debug('mode is %s so we\'re skipping success check' % mode)
279
class NetworkManagerException(Exception):
284
class NetworkManager(object):
286
NM_SERVICE = "org.freedesktop.NetworkManager"
287
NM_PATH = "/org/freedesktop/NetworkManager"
288
NM_INTERFACE = NM_SERVICE
290
NM_PATH_DEVICES = "/org/freedesktop/NetworkManager/Devices"
291
NM_INTERFACE_DEVICES = "org.freedesktop.NetworkManager.Devices"
293
NMI_SERVICE = "org.freedesktop.NetworkManagerInfo"
294
NMI_PATH = "/org/freedesktop/NetworkManagerInfo"
295
NMI_INTERFACE = NMI_SERVICE
297
HAL_SERVICE = "org.freedesktop.Hal"
298
HAL_PATH = "/org/freedesktop/Hal/Manager"
299
HAL_INTERFACE = "org.freedesktop.Hal.Manager"
300
HAL_INTERFACE_DEVICE = "org.freedesktop.Hal.Device"
302
STATE_UNKNOWN = "unknown"
303
STATE_ASLEEP = "asleep"
304
STATE_CONNECTING = "connecting"
305
STATE_CONNECTED = "connected"
306
STATE_DISCONNECTED = "disconnected"
319
raise NetworkManagerException, "Python module not found: dbus"
322
self._bus = dbus.SystemBus()
323
self.nm_object = self._bus.get_object(self.NM_SERVICE, self.NM_PATH)
324
self.nm_service = dbus.Interface(self.nm_object, self.NM_INTERFACE)
325
except dbus.exceptions.DBusException:
326
raise NetworkManagerException, "Failed to connect to dbus service"
329
state = self.nm_service.state()
330
return self._state_table[state]
335
nm = NetworkManager()
336
except NetworkManagerException:
339
start = datetime.now()
341
if nm.get_state() == nm.STATE_CONNECTED:
343
# give 60 seconds to NetworkManager to get to a CONNECTED state, then give up
344
if datetime.now() - start > timedelta(60):
277
349
usage = 'Usage: %prog [OPTIONS]'
354
426
run_result[run_count] = 'Pass'
428
# Be reasonably sure the network is up before returning, we want
429
# the network to be up for possible following tests.
430
network_is_live = check_network()
356
432
if 'Fail' in run_result.values():
357
433
logging.error('One or more suspend tests failed')
358
434
logging.error(run_result)