summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-08-06 18:07:42 -0400
committerDan Winship <danw@gnome.org>2014-08-07 15:43:43 -0400
commit66a34803293e1012d7a1728d503dd64a1d906366 (patch)
tree92987a9e7fa480b90597bbcae4b864eadff5737e /tools
parentd83f3777adfc587be56755fc567a8fbcfac5d5b9 (diff)
downloadNetworkManager-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-xtools/test-networkmanager-service.py17
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)