mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 22:20:27 +01:00
libnm/tests: add object manager mock
This commit is contained in:
parent
ab0e0ed117
commit
70548dabe6
1 changed files with 52 additions and 1 deletions
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue