From 70548dabe6756b7a0dc6833f2b938968dcb599a0 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 16 Sep 2016 08:26:48 -0400 Subject: [PATCH] libnm/tests: add object manager mock --- tools/test-networkmanager-service.py | 53 +++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index dea8da94ee..cfd7290c1f 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -93,6 +93,7 @@ class ExportedObj(dbus.service.Object): self._bus = bus self.path = object_path self.__ensure_dbus_ifaces() + object_manager.add_object(self) def __ensure_dbus_ifaces(self): if not hasattr(self, '_ExportedObj__dbus_ifaces'): @@ -132,6 +133,16 @@ class ExportedObj(dbus.service.Object): def Get(self, dbus_iface, name): return self._dbus_property_get(dbus_iface, name) + def get_managed_ifaces(self): + my_ifaces = {} + for iface in self.__dbus_ifaces: + my_ifaces[iface] = self.__dbus_ifaces[iface].get_props_func() + return self.path, my_ifaces + + def remove_from_connection(self): + object_manager.remove_object(self) + dbus.service.Object.remove_from_connection(self) + ################################################################### IFACE_DEVICE = 'org.freedesktop.NetworkManager.Device' @@ -1208,6 +1219,45 @@ class AgentManager(dbus.service.Object): continue return secrets +################################################################### +IFACE_OBJECT_MANAGER = 'org.freedesktop.DBus.ObjectManager' + +PATH_OBJECT_MANAGER = '/org/freedesktop' + +class ObjectManager(dbus.service.Object): + def __init__(self, bus, object_path): + dbus.service.Object.__init__(self, bus, object_path) + self.objs = [] + self.bus = bus + + @dbus.service.method(dbus_interface=IFACE_OBJECT_MANAGER, + in_signature='', out_signature='a{oa{sa{sv}}}', + sender_keyword='sender') + def GetManagedObjects(self, sender=None): + managed_objects = {} + for obj in self.objs: + name, ifaces = obj.get_managed_ifaces() + managed_objects[name] = ifaces + return managed_objects + + def add_object(self, obj): + self.objs.append(obj) + name, ifaces = obj.get_managed_ifaces() + self.InterfacesAdded(name, ifaces) + + def remove_object(self, obj): + self.objs.remove(obj) + name, ifaces = obj.get_managed_ifaces() + self.InterfacesRemoved(name, ifaces.keys()) + + @dbus.service.signal(IFACE_OBJECT_MANAGER, signature='oa{sa{sv}}') + def InterfacesAdded(self, name, ifaces): + pass + + @dbus.service.signal(IFACE_OBJECT_MANAGER, signature='oas') + def InterfacesRemoved(self, name, ifaces): + pass + ################################################################### def stdin_cb(io, condition): @@ -1223,7 +1273,8 @@ def main(): bus = dbus.SessionBus() - global manager, settings, agent_manager + global manager, settings, agent_manager, object_manager + object_manager = ObjectManager(bus, "/org/freedesktop") manager = NetworkManager(bus, "/org/freedesktop/NetworkManager") settings = Settings(bus, "/org/freedesktop/NetworkManager/Settings") agent_manager = AgentManager(bus, "/org/freedesktop/NetworkManager/AgentManager")