[libsoup] tests: stop using SoupSession::connection-created in tests



commit c5c6bd21a8a6ac8c33c0c62791a951534d3e9e22
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Fri Oct 23 14:13:32 2020 +0200

    tests: stop using SoupSession::connection-created in tests

 tests/connection-test.c | 50 +++++++++++++++++++++++++++++--------------------
 tests/misc-test.c       | 38 +++++++++++++++++--------------------
 2 files changed, 47 insertions(+), 41 deletions(-)
---
diff --git a/tests/connection-test.c b/tests/connection-test.c
index f694bf94..527fbb4e 100644
--- a/tests/connection-test.c
+++ b/tests/connection-test.c
@@ -757,13 +757,13 @@ static const char *state_names[] = {
 };
 
 static void
-connection_state_changed (GObject *object, GParamSpec *param,
-                         gpointer user_data)
+connection_state_changed (SoupConnection      *conn,
+                         GParamSpec          *param,
+                         SoupConnectionState *state)
 {
-       SoupConnectionState *state = user_data;
        SoupConnectionState new_state;
 
-       g_object_get (object, "state", &new_state, NULL);
+       g_object_get (conn, "state", &new_state, NULL);
        debug_printf (2, "      %s -> %s\n",
                      state_names[*state], state_names[new_state]);
        soup_test_assert (state_transitions[*state] == new_state,
@@ -773,26 +773,40 @@ connection_state_changed (GObject *object, GParamSpec *param,
 }
 
 static void
-connection_created (SoupSession *session, GObject *conn,
-                   gpointer user_data)
+message_network_event (SoupMessage         *msg,
+                      GSocketClientEvent   event,
+                      GIOStream           *connection,
+                      SoupConnectionState *state)
 {
-       SoupConnectionState *state = user_data;
+       SoupConnection *conn;
 
-       g_object_get (conn, "state", state, NULL);
-       g_assert_cmpint (*state, ==, SOUP_CONNECTION_NEW);
+       if (event != G_SOCKET_CLIENT_RESOLVING)
+               return;
+
+       /* This is connecting, so we know it comes from a NEW state. */
+       *state = SOUP_CONNECTION_NEW;
+
+       conn = soup_message_get_connection (msg);
+       g_assert_nonnull (conn);
+       connection_state_changed (conn, NULL, state);
 
        g_signal_connect (conn, "notify::state",
-                         G_CALLBACK (connection_state_changed),
-                         state);
+                          G_CALLBACK (connection_state_changed),
+                          state);
 }
 
 static void
-do_one_connection_state_test (SoupSession *session, const char *uri)
+do_one_connection_state_test (SoupSession         *session,
+                             const char          *uri,
+                             SoupConnectionState *state)
 {
        SoupMessage *msg;
        GBytes *body;
 
        msg = soup_message_new ("GET", uri);
+       g_signal_connect (msg, "network-event",
+                         G_CALLBACK (message_network_event),
+                         state);
        body = soup_test_session_async_send (session, msg);
        soup_test_assert_message_status (msg, SOUP_STATUS_OK);
        g_bytes_unref (body);
@@ -806,16 +820,12 @@ do_connection_state_test_for_session (SoupSession *session)
        SoupConnectionState state;
        GProxyResolver *resolver;
 
-       g_signal_connect (session, "connection-created",
-                         G_CALLBACK (connection_created),
-                         &state);
-
        debug_printf (1, "    http\n");
-       do_one_connection_state_test (session, HTTP_SERVER);
+       do_one_connection_state_test (session, HTTP_SERVER, &state);
 
        if (tls_available) {
                debug_printf (1, "    https\n");
-               do_one_connection_state_test (session, HTTPS_SERVER);
+               do_one_connection_state_test (session, HTTPS_SERVER, &state);
        } else
                debug_printf (1, "    https -- SKIPPING\n");
 
@@ -826,11 +836,11 @@ do_connection_state_test_for_session (SoupSession *session)
        g_object_unref (resolver);
 
        debug_printf (1, "    http with proxy\n");
-       do_one_connection_state_test (session, HTTP_SERVER);
+       do_one_connection_state_test (session, HTTP_SERVER, &state);
 
        if (tls_available) {
                debug_printf (1, "    https with proxy\n");
-               do_one_connection_state_test (session, HTTPS_SERVER);
+               do_one_connection_state_test (session, HTTPS_SERVER, &state);
        } else
                debug_printf (1, "    https with proxy -- SKIPPING\n");
 }
diff --git a/tests/misc-test.c b/tests/misc-test.c
index beb586ba..844d9cdd 100644
--- a/tests/misc-test.c
+++ b/tests/misc-test.c
@@ -437,25 +437,18 @@ ea_abort_session (gpointer session)
 }
 
 static void
-ea_connection_state_changed (GObject *conn, GParamSpec *pspec, gpointer session)
+ea_message_network_event (SoupMessage       *msg,
+                         GSocketClientEvent event,
+                         GIOStream         *connection,
+                         SoupSession       *session)
 {
-       SoupConnectionState state;
-
-       g_object_get (conn, "state", &state, NULL);
-       if (state == SOUP_CONNECTION_CONNECTING) {
-               g_idle_add_full (G_PRIORITY_HIGH,
-                                ea_abort_session,
-                                session, NULL);
-               g_signal_handlers_disconnect_by_func (conn, ea_connection_state_changed, session);
-       }
-}              
+       if (event != G_SOCKET_CLIENT_RESOLVING)
+               return;
 
-static void
-ea_connection_created (SoupSession *session, GObject *conn, gpointer user_data)
-{
-       g_signal_connect (conn, "notify::state",
-                         G_CALLBACK (ea_connection_state_changed), session);
-       g_signal_handlers_disconnect_by_func (session, ea_connection_created, user_data);
+       g_idle_add_full (G_PRIORITY_HIGH,
+                        ea_abort_session,
+                        session, NULL);
+       g_signal_handlers_disconnect_by_func (msg, ea_message_network_event, session);
 }
 
 static void
@@ -496,8 +489,9 @@ do_early_abort_test (void)
        session = soup_test_session_new (SOUP_TYPE_SESSION, NULL);
        msg = soup_message_new_from_uri ("GET", base_uri);
 
-       g_signal_connect (session, "connection-created",
-                         G_CALLBACK (ea_connection_created), NULL);
+       g_signal_connect (msg, "network-event",
+                         G_CALLBACK (ea_message_network_event),
+                         session);
        body = soup_test_session_async_send (session, msg);
        debug_printf (2, "  Message 2 completed\n");
 
@@ -610,8 +604,10 @@ do_early_abort_req_test (void)
                                         NULL);
        req = soup_session_request_uri (session, base_uri, NULL);
 
-       g_signal_connect (session, "connection-created",
-                         G_CALLBACK (ea_connection_created), NULL);
+       g_signal_connect (soup_request_http_get_message (SOUP_REQUEST_HTTP (req)),
+                         "network-event",
+                         G_CALLBACK (ea_message_network_event),
+                         session);
        soup_request_send_async (req, NULL, ear_two_completed, loop);
        g_main_loop_run (loop);
        g_object_unref (req);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]