diff options
author | Dan Winship <danw@gnome.org> | 2014-10-10 17:10:28 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-10-19 09:27:48 -0400 |
commit | be8060f42fd3b3c15755e97f0c35886596a4732c (patch) | |
tree | 760061cb20094e9f86befa784fc74b406be42283 | |
parent | f96835b83c1a3a8e1f4046ef6899a4ec85e2b25e (diff) | |
download | NetworkManager-be8060f42fd3b3c15755e97f0c35886596a4732c.tar.gz |
libnm: add an object-creation-failed test
-rw-r--r-- | libnm/tests/test-nm-client.c | 52 | ||||
-rwxr-xr-x | tools/test-networkmanager-service.py | 8 |
2 files changed, 58 insertions, 2 deletions
diff --git a/libnm/tests/test-nm-client.c b/libnm/tests/test-nm-client.c index 76469aac53..26ffbec4ac 100644 --- a/libnm/tests/test-nm-client.c +++ b/libnm/tests/test-nm-client.c @@ -1008,8 +1008,57 @@ test_activate_virtual (void) g_clear_pointer (&sinfo, nm_test_service_cleanup); } +static void +activate_failed_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + NMClient *client = NM_CLIENT (object); + NMActiveConnection *ac; + GError *error = NULL; + + ac = nm_client_activate_connection_finish (client, result, &error); + g_assert (ac == NULL); + g_assert_error (error, NM_OBJECT_ERROR, NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE); + g_clear_error (&error); + + g_main_loop_quit (loop); +} + +static void +test_activate_failed (void) +{ + NMClient *client; + NMDevice *device; + NMConnection *conn; + GError *error = NULL; + + sinfo = nm_test_service_init (); + client = nm_client_new (NULL, &error); + g_assert_no_error (error); + + device = nm_test_service_add_device (sinfo, client, "AddWiredDevice", "eth0"); + + /* Note that test-networkmanager-service.py checks for this exact name */ + conn = nmtst_create_minimal_connection ("object-creation-failed-test", NULL, + NM_SETTING_WIRED_SETTING_NAME, NULL); + + nm_client_add_and_activate_connection_async (client, conn, device, NULL, + NULL, activate_failed_cb, NULL); + g_test_expect_message ("libnm", G_LOG_LEVEL_WARNING, "*Method*doesn't exist*"); + g_main_loop_run (loop); + g_test_assert_expected_messages (); + + g_object_unref (conn); + g_object_unref (client); + + g_clear_pointer (&sinfo, nm_test_service_cleanup); +} + /*******************************************************************/ +NMTST_DEFINE (); + int main (int argc, char **argv) { @@ -1019,7 +1068,7 @@ main (int argc, char **argv) g_type_init (); #endif - g_test_init (&argc, &argv, NULL); + nmtst_init (&argc, &argv, TRUE); loop = g_main_loop_new (NULL, FALSE); @@ -1030,6 +1079,7 @@ main (int argc, char **argv) g_test_add_func ("/libnm/client-nm-running", test_client_nm_running); g_test_add_func ("/libnm/active-connections", test_active_connections); g_test_add_func ("/libnm/activate-virtual", test_activate_virtual); + g_test_add_func ("/libnm/activate-failed", test_activate_failed); return g_test_run (); } diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index 064336fa39..d98174ce20 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -717,7 +717,13 @@ class NetworkManager(ExportedObj): ac = ActiveConnection(self._bus, device, connection, None) self.active_connections.append(ac) self.__notify(PM_ACTIVE_CONNECTIONS) - GLib.timeout_add(50, set_device_ac_cb, device, ac) + + if s_con['id'] == 'object-creation-failed-test': + self.active_connections.remove(ac) + ac.remove_from_connection() + else: + GLib.timeout_add(50, set_device_ac_cb, device, ac) + return to_path(ac) @dbus.service.method(dbus_interface=IFACE_NM, in_signature='a{sa{sv}}oo', out_signature='oo') |