libnm: add an object-creation-failed test

This commit is contained in:
Dan Winship
2014-10-10 17:10:28 -04:00
parent f96835b83c
commit be8060f42f
2 changed files with 58 additions and 2 deletions

View File

@@ -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 ();
}

View File

@@ -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')