diff options
author | Dan Winship <danw@gnome.org> | 2014-09-11 16:27:13 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-09-25 09:29:20 -0400 |
commit | 2237ea3ddbe602446ac87a8a055a6d719c4a0f6c (patch) | |
tree | 4891a7570618c68905f9375c43f65c71bc21eb9b /libnm/tests | |
parent | 6ca10677d67c129d43b82e5563e20c4c5f2e5727 (diff) | |
download | NetworkManager-2237ea3ddbe602446ac87a8a055a6d719c4a0f6c.tar.gz |
libnm: make sync/async APIs more GLib-like
Make synchronous APIs take GCancellables, and make asynchronous APIs
use GAsyncReadyCallbacks and have names ending in "_async", with
"_finish" functions to retrieve the results.
Also, make nm_client_activate_connection_finish(),
nm_client_add_and_activate_finish(), and
nm_remote_settings_add_connection_finish() be (transfer full) rather
than (transfer none), because the refcounting semantics become
slightly confusing in some edge cases otherwise.
Diffstat (limited to 'libnm/tests')
-rw-r--r-- | libnm/tests/test-remote-settings-client.c | 58 | ||||
-rw-r--r-- | libnm/tests/test-secret-agent.c | 111 |
2 files changed, 99 insertions, 70 deletions
diff --git a/libnm/tests/test-remote-settings-client.c b/libnm/tests/test-remote-settings-client.c index 4f8d873bbc..1561ef9e42 100644 --- a/libnm/tests/test-remote-settings-client.c +++ b/libnm/tests/test-remote-settings-client.c @@ -37,16 +37,24 @@ NMRemoteConnection *remote = NULL; /*******************************************************************/ static void -add_cb (NMRemoteSettings *s, - NMRemoteConnection *connection, - GError *error, +add_cb (GObject *s, + GAsyncResult *result, gpointer user_data) { + gboolean *done = user_data; + GError *error = NULL; + + remote = nm_remote_settings_add_connection_finish (settings, result, &error); g_assert_no_error (error); - *((gboolean *) user_data) = TRUE; - remote = connection; - g_object_add_weak_pointer (G_OBJECT (connection), (void **) &remote); + *done = TRUE; + g_object_add_weak_pointer (G_OBJECT (remote), (void **) &remote); + + /* nm_remote_settings_add_connection_finish() adds a ref to @remote, but we + * want the weak pointer to be cleared as soon as @settings drops its own ref. + * So drop ours. + */ + g_object_unref (remote); } #define TEST_CON_ID "blahblahblah" @@ -55,18 +63,17 @@ static void test_add_connection (void) { NMConnection *connection; - gboolean success; time_t start, now; gboolean done = FALSE; connection = nmtst_create_minimal_connection (TEST_CON_ID, NULL, NM_SETTING_WIRED_SETTING_NAME, NULL); - success = nm_remote_settings_add_connection (settings, - connection, - TRUE, - add_cb, - &done); - g_assert (success == TRUE); + nm_remote_settings_add_connection_async (settings, + connection, + TRUE, + NULL, + add_cb, + &done); start = time (NULL); do { @@ -352,15 +359,19 @@ test_remove_connection (void) #define TEST_ADD_REMOVE_ID "add-remove-test-connection" static void -add_remove_cb (NMRemoteSettings *s, - NMRemoteConnection *connection, - GError *error, +add_remove_cb (GObject *s, + GAsyncResult *result, gpointer user_data) { + NMRemoteConnection *connection; + gboolean *done = user_data; + GError *error = NULL; + + connection = nm_remote_settings_add_connection_finish (settings, result, &error); g_assert_error (error, NM_REMOTE_SETTINGS_ERROR, NM_REMOTE_SETTINGS_ERROR_CONNECTION_REMOVED); g_assert (connection == NULL); - *((gboolean *) user_data) = TRUE; + *done = TRUE; } static void @@ -369,7 +380,6 @@ test_add_remove_connection (void) GVariant *ret; GError *error = NULL; NMConnection *connection; - gboolean success; time_t start, now; gboolean done = FALSE; @@ -386,12 +396,12 @@ test_add_remove_connection (void) g_variant_unref (ret); connection = nmtst_create_minimal_connection (TEST_ADD_REMOVE_ID, NULL, NM_SETTING_WIRED_SETTING_NAME, NULL); - success = nm_remote_settings_add_connection (settings, - connection, - TRUE, - add_remove_cb, - &done); - g_assert (success == TRUE); + nm_remote_settings_add_connection_async (settings, + connection, + TRUE, + NULL, + add_remove_cb, + &done); start = time (NULL); do { diff --git a/libnm/tests/test-secret-agent.c b/libnm/tests/test-secret-agent.c index 4bb99a7a24..c4eafd7a40 100644 --- a/libnm/tests/test-secret-agent.c +++ b/libnm/tests/test-secret-agent.c @@ -219,12 +219,15 @@ device_added_cb (NMClient *c, } static void -connection_added_cb (NMRemoteSettings *s, - NMRemoteConnection *connection, - GError *error, +connection_added_cb (GObject *s, + GAsyncResult *result, gpointer user_data) { TestSecretAgentData *sadata = user_data; + NMRemoteConnection *connection; + GError *error = NULL; + + connection = nm_remote_settings_add_connection_finish (sadata->settings, result, &error); g_assert_no_error (error); g_assert_cmpstr (nm_connection_get_id (NM_CONNECTION (connection)), ==, sadata->con_id); @@ -258,7 +261,6 @@ test_setup (TestSecretAgentData *sadata, gconstpointer test_data) NMSettingWireless *s_wireless; GBytes *ssid; NMSetting *s_wsec; - gboolean success; GError *error = NULL; GVariant *ret; gulong handler; @@ -314,12 +316,12 @@ test_setup (TestSecretAgentData *sadata, gconstpointer test_data) NULL); nm_connection_add_setting (connection, s_wsec); - success = nm_remote_settings_add_connection (sadata->settings, - connection, - TRUE, - connection_added_cb, - sadata); - g_assert (success == TRUE); + nm_remote_settings_add_connection_async (sadata->settings, + connection, + TRUE, + NULL, + connection_added_cb, + sadata); g_object_unref (connection); g_main_loop_run (sadata->loop); @@ -354,6 +356,7 @@ test_cleanup (TestSecretAgentData *sadata, gconstpointer test_data) g_object_unref (sadata->agent); } + g_object_unref (sadata->connection); g_object_unref (sadata->client); g_object_unref (sadata->settings); @@ -380,12 +383,15 @@ test_cleanup (TestSecretAgentData *sadata, gconstpointer test_data) /*******************************************************************/ static void -connection_activated_none_cb (NMClient *c, - NMActiveConnection *ac, - GError *error, +connection_activated_none_cb (GObject *c, + GAsyncResult *result, gpointer user_data) { TestSecretAgentData *sadata = user_data; + NMActiveConnection *ac; + GError *error = NULL; + + ac = nm_client_activate_connection_finish (sadata->client, result, &error); g_assert (error != NULL); g_dbus_error_strip_remote_error (error); @@ -397,12 +403,13 @@ connection_activated_none_cb (NMClient *c, static void test_secret_agent_none (TestSecretAgentData *sadata, gconstpointer test_data) { - nm_client_activate_connection (sadata->client, - sadata->connection, - sadata->device, - NULL, - connection_activated_none_cb, - sadata); + nm_client_activate_connection_async (sadata->client, + sadata->connection, + sadata->device, + NULL, + NULL, + connection_activated_none_cb, + sadata); g_main_loop_run (sadata->loop); } @@ -425,12 +432,15 @@ secrets_requested_no_secrets_cb (TestSecretAgent *agent, } static void -connection_activated_no_secrets_cb (NMClient *c, - NMActiveConnection *ac, - GError *error, +connection_activated_no_secrets_cb (GObject *c, + GAsyncResult *result, gpointer user_data) { TestSecretAgentData *sadata = user_data; + NMActiveConnection *ac; + GError *error = NULL; + + ac = nm_client_activate_connection_finish (sadata->client, result, &error); g_assert (error != NULL); g_dbus_error_strip_remote_error (error); @@ -446,12 +456,13 @@ test_secret_agent_no_secrets (TestSecretAgentData *sadata, gconstpointer test_da G_CALLBACK (secrets_requested_no_secrets_cb), sadata); - nm_client_activate_connection (sadata->client, - sadata->connection, - sadata->device, - NULL, - connection_activated_no_secrets_cb, - sadata); + nm_client_activate_connection_async (sadata->client, + sadata->connection, + sadata->device, + NULL, + NULL, + connection_activated_no_secrets_cb, + sadata); g_main_loop_run (sadata->loop); g_assert_cmpint (sadata->secrets_requested, ==, 1); @@ -460,12 +471,15 @@ test_secret_agent_no_secrets (TestSecretAgentData *sadata, gconstpointer test_da /*******************************************************************/ static void -connection_activated_cancel_cb (NMClient *c, - NMActiveConnection *ac, - GError *error, +connection_activated_cancel_cb (GObject *c, + GAsyncResult *result, gpointer user_data) { TestSecretAgentData *sadata = user_data; + NMActiveConnection *ac; + GError *error = NULL; + + ac = nm_client_activate_connection_finish (sadata->client, result, &error); g_assert (error != NULL); g_dbus_error_strip_remote_error (error); @@ -497,12 +511,13 @@ test_secret_agent_cancel (TestSecretAgentData *sadata, gconstpointer test_data) G_CALLBACK (secrets_requested_cancel_cb), sadata); - nm_client_activate_connection (sadata->client, - sadata->connection, - sadata->device, - NULL, - connection_activated_cancel_cb, - sadata); + nm_client_activate_connection_async (sadata->client, + sadata->connection, + sadata->device, + NULL, + NULL, + connection_activated_cancel_cb, + sadata); g_main_loop_run (sadata->loop); g_assert_cmpint (sadata->secrets_requested, ==, 1); @@ -511,12 +526,15 @@ test_secret_agent_cancel (TestSecretAgentData *sadata, gconstpointer test_data) /*******************************************************************/ static void -connection_activated_good_cb (NMClient *c, - NMActiveConnection *ac, - GError *error, +connection_activated_good_cb (GObject *c, + GAsyncResult *result, gpointer user_data) { TestSecretAgentData *sadata = user_data; + NMActiveConnection *ac; + GError *error = NULL; + + ac = nm_client_activate_connection_finish (sadata->client, result, &error); /* test-networkmanager-service.py doesn't implement activation, but * we should at least get as far as the error telling us that (which the @@ -552,12 +570,13 @@ test_secret_agent_good (TestSecretAgentData *sadata, gconstpointer test_data) G_CALLBACK (secrets_requested_good_cb), sadata); - nm_client_activate_connection (sadata->client, - sadata->connection, - sadata->device, - NULL, - connection_activated_good_cb, - sadata); + nm_client_activate_connection_async (sadata->client, + sadata->connection, + sadata->device, + NULL, + NULL, + connection_activated_good_cb, + sadata); g_main_loop_run (sadata->loop); g_assert_cmpint (sadata->secrets_requested, ==, 1); |