summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2011-09-13 11:54:34 +0100
committerWill Thompson <will.thompson@collabora.co.uk>2011-09-13 12:33:36 +0100
commit57175d04e0b70a112de89e9d85e0e753915780e1 (patch)
tree31c040c190cf274f2441b8e5e6cbe788eda5eb2e
parentcb19851532bb95ef18e162fc055dbed8c4d579d9 (diff)
mctest: allow running FakeCM on a separate bus connection
This was possible before, but not exactly straightforward: you had to clone the guts of create_fakecm_account(). By adding an optional parameter to create_fakecm_account(), and a method to SimulatedConnection to drop its bus name, it becomes pretty easy to run the fake CM on a separate bus, and hence simulate it crashing.
-rw-r--r--tests/twisted/mctest.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/twisted/mctest.py b/tests/twisted/mctest.py
index bd0db02c..417cd4d3 100644
--- a/tests/twisted/mctest.py
+++ b/tests/twisted/mctest.py
@@ -323,6 +323,9 @@ class SimulatedConnection(object):
self.presence = dbus.Struct((cs.PRESENCE_TYPE_OFFLINE, 'offline', ''),
signature='uss')
+ def release_name(self):
+ del self._bus_name_ref
+
def GetAll_Connection(self, e):
self.q.dbus_return(e.message, {
'Interfaces': dbus.Array(self.interfaces, signature='s'),
@@ -828,17 +831,24 @@ class SimulatedClient(object):
def take_fakecm_name(bus):
return dbus.service.BusName(cs.CM + '.fakecm', bus=bus)
-def create_fakecm_account(q, bus, mc, params, properties={}):
+def create_fakecm_account(q, bus, mc, params, properties={},
+ cm_bus=None):
"""Create a fake connection manager and an account that uses it.
Optional keyword arguments:
properties -- a dictionary from qualified property names to values to pass
to CreateAccount. If provided, this function will check that
the newly-created account has these properties.
+ cm_bus -- if not None, a BusConnection via which to claim the CM's
+ name. If None, 'bus' will be used.
Returns: (a BusName for the fake CM, an Account proxy)"""
- cm_name_ref = take_fakecm_name(bus)
+ if cm_bus is None:
+ cm_bus = bus
+
+ cm_name_ref = take_fakecm_name(cm_bus)
+
account_manager = AccountManager(bus)
servicetest.call_async(q, account_manager, 'CreateAccount',