diff options
author | Dan Winship <danw@gnome.org> | 2014-08-06 18:07:42 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-08-07 15:43:43 -0400 |
commit | 66a34803293e1012d7a1728d503dd64a1d906366 (patch) | |
tree | 92987a9e7fa480b90597bbcae4b864eadff5737e /tools | |
parent | d83f3777adfc587be56755fc567a8fbcfac5d5b9 (diff) | |
download | NetworkManager-66a34803293e1012d7a1728d503dd64a1d906366.tar.gz |
libnm: add a test for connection-deleted-while-being-created
Since NMRemoteSettings doesn't announce new connections until it has
fetched their properties, it's possible that a connection could get
deleted while we're waiting for it to be created. NMRemoteSettings has
code to deal with this, so add a test to make sure that it works.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/test-networkmanager-service.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index 437381eb06..e04621fba2 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -747,6 +747,10 @@ class NetworkManager(ExportedObj): return raise UnknownDeviceException("Device not found") + @dbus.service.method(IFACE_TEST, in_signature='', out_signature='') + def AutoRemoveNextConnection(self): + settings.auto_remove_next_connection() + ################################################################### IFACE_CONNECTION = 'org.freedesktop.NetworkManager.Settings.Connection' @@ -789,6 +793,7 @@ class Connection(dbus.service.Object): @dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='', out_signature='') def Delete(self): + self.remove_from_connection() self.remove_func(self) self.Removed() @@ -809,10 +814,14 @@ class Settings(dbus.service.Object): self.connections = {} self.bus = bus self.counter = 1 + self.remove_next_connection = False self.props = {} self.props['Hostname'] = "foobar.baz" self.props['CanModify'] = True + def auto_remove_next_connection(self): + self.remove_next_connection = True; + @dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='', out_signature='ao') def ListConnections(self): return self.connections.keys() @@ -824,6 +833,11 @@ class Settings(dbus.service.Object): self.connections[path] = Connection(self.bus, path, settings, self.delete_connection) self.NewConnection(path) self.PropertiesChanged({ 'connections': dbus.Array(self.connections.keys(), 'o') }) + + if self.remove_next_connection: + self.remove_next_connection = False + self.connections[path].Delete() + return path def delete_connection(self, connection): @@ -870,8 +884,11 @@ def main(): random.seed() bus = dbus.SessionBus() + + global manager, settings manager = NetworkManager(bus, "/org/freedesktop/NetworkManager") settings = Settings(bus, "/org/freedesktop/NetworkManager/Settings") + if not bus.request_name("org.freedesktop.NetworkManager"): sys.exit(1) |