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

Unified Diff: test/mm.py

Issue 6731056: Update to test scripts to work with both ModemManager and Cromo (Closed) Base URL: ssh://gitrw.chromium.org:9222/flimflam.git@master
Patch Set: Fix review comments Created 9 years, 9 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 | test/mm-activate » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mm.py
diff --git a/test/mm.py b/test/mm.py
index 2fc4f3f75becc877924d11963c40d0caf3177e8e..dfdb0a092bed0451a8add1c3ef027d13ba819641 100755
--- a/test/mm.py
+++ b/test/mm.py
@@ -1,18 +1,15 @@
#!/usr/bin/python
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import dbus
import os
+MMPROVIDERS = [ 'org.chromium', 'org.freedesktop' ]
+
class ModemManager(object):
- MMPROVIDER = os.getenv('MMPROVIDER')
- if not MMPROVIDER:
- MMPROVIDER = 'org.chromium'
- SERVICE = '%s.ModemManager' % (MMPROVIDER)
- PATH = '/%s/ModemManager' % (MMPROVIDER.replace('.', '/'))
INTERFACE = 'org.freedesktop.ModemManager'
MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem'
SIMPLE_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Simple'
@@ -26,42 +23,44 @@ class ModemManager(object):
GSM_MODEM = 1
CDMA_MODEM = 2
- def __init__(self):
+ def __init__(self, provider=None):
self.bus = dbus.SystemBus()
- self.manager = dbus.Interface(self.bus.get_object(ModemManager.SERVICE,
- ModemManager.PATH),
+ self.provider = provider or os.getenv('MMPROVIDER') or 'org.chromium'
+ self.service = '%s.ModemManager' % self.provider
+ self.path = '/%s/ModemManager' % (self.provider.replace('.', '/'))
+ self.manager = dbus.Interface(self.bus.get_object(self.service, self.path),
ModemManager.INTERFACE)
def Modem(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.MODEM_INTERFACE)
def SimpleModem(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.SIMPLE_MODEM_INTERFACE)
def CdmaModem(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.CDMA_MODEM_INTERFACE)
def GobiModem(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.GOBI_MODEM_INTERFACE)
def GsmModem(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.GSM_MODEM_INTERFACE)
def GsmCard(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.GSM_CARD_INTERFACE)
def GsmNetwork(self, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
return dbus.Interface(obj, ModemManager.GSM_NETWORK_INTERFACE)
def GetAll(self, iface, path):
- obj = self.bus.get_object(ModemManager.SERVICE, path)
+ obj = self.bus.get_object(self.service, path)
obj_iface = dbus.Interface(obj, ModemManager.PROPERTIES_INTERFACE)
return obj_iface.GetAll(iface)
@@ -86,11 +85,53 @@ class ModemManager(object):
return props
-def PickOneModem(manager, modem_pattern):
- devices = manager.manager.EnumerateDevices()
- matches = [path for path in devices if modem_pattern in path]
- if not len(matches):
+
+def EnumerateDevices(manager=None):
+ """ Enumerate all modems in the system
+
+ Args:
+ manager - the specific manager to use, if None check all known managers
+
+ Returns:
+ a list of (ModemManager object, modem dbus path)
+ """
+ if manager:
+ managers = [manager]
+ else:
+ managers = [ModemManager(x) for x in MMPROVIDERS]
+
+ result = []
+ for m in managers:
+ for path in m.manager.EnumerateDevices():
+ result.append((m, path))
+
+ return result
+
+
+def PickOneModem(modem_pattern, manager=None):
+ """ Pick a modem
+
+ If a machine has a single modem, managed by one one of the
+ MMPROVIDERS, return the dbus path and a ModemManager object for
+ that modem.
+
+ Args:
+ modem_pattern - pattern that should match the modem path
+ manager - the specific manager to use, if None check all known managers
+
+ Returns:
+ ModemManager object, modem dbus path
+
+ Raises:
+ ValueError - if there are no matching modems, or there are more
+ than one
+ """
+ devices = EnumerateDevices(manager)
+
+ matches = [(m, path) for m, path in devices if modem_pattern in path]
+ if not matches:
raise ValueError("No modems had substring: " + modem_pattern)
if len(matches) > 1:
- raise ValueError("Expected only one modem, got: " + ', '.join(matches))
+ raise ValueError("Expected only one modem, got: " +
+ ", ".join([path for _, path in matches]))
return matches[0]
« no previous file with comments | « no previous file | test/mm-activate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698