diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auth-test.c | 16 | ||||
-rw-r--r-- | tests/cache-test.c | 3 | ||||
-rw-r--r-- | tests/chunk-io-test.c | 6 | ||||
-rw-r--r-- | tests/chunk-test.c | 13 | ||||
-rw-r--r-- | tests/coding-test.c | 5 | ||||
-rw-r--r-- | tests/connection-test.c | 13 | ||||
-rw-r--r-- | tests/context-test.c | 10 | ||||
-rw-r--r-- | tests/continue-test.c | 49 | ||||
-rw-r--r-- | tests/cookies-test.c | 11 | ||||
-rw-r--r-- | tests/forms-test.c | 18 | ||||
-rw-r--r-- | tests/misc-test.c | 54 | ||||
-rw-r--r-- | tests/multipart-test.c | 5 | ||||
-rw-r--r-- | tests/no-ssl-test.c | 17 | ||||
-rw-r--r-- | tests/ntlm-test.c | 11 | ||||
-rw-r--r-- | tests/proxy-test.c | 5 | ||||
-rw-r--r-- | tests/range-test.c | 14 | ||||
-rw-r--r-- | tests/redirect-test.c | 21 | ||||
-rw-r--r-- | tests/requester-test.c | 54 | ||||
-rw-r--r-- | tests/server-auth-test.c | 9 | ||||
-rw-r--r-- | tests/server-test.c | 42 | ||||
-rw-r--r-- | tests/session-test.c | 41 | ||||
-rw-r--r-- | tests/sniffing-test.c | 5 | ||||
-rw-r--r-- | tests/ssl-test.c | 21 | ||||
-rw-r--r-- | tests/streaming-test.c | 7 | ||||
-rw-r--r-- | tests/test-utils.c | 224 | ||||
-rw-r--r-- | tests/test-utils.h | 13 | ||||
-rw-r--r-- | tests/timeout-test.c | 47 | ||||
-rw-r--r-- | tests/xmlrpc-server-test.c | 14 |
28 files changed, 427 insertions, 321 deletions
diff --git a/tests/auth-test.c b/tests/auth-test.c index 992e3d5e..3efd0667 100644 --- a/tests/auth-test.c +++ b/tests/auth-test.c @@ -886,12 +886,10 @@ do_select_auth_test (void) * side of this scenario correctly, because we test it against * curl in server-auth-test. */ - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - - uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (uri, soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); basic_auth_domain = soup_auth_domain_basic_new ( SOUP_AUTH_DOMAIN_REALM, "auth-test", @@ -1036,12 +1034,12 @@ do_auth_close_test (void) debug_printf (1, "\nTesting auth when server times out connection:\n"); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - uri = soup_uri_new ("http://127.0.0.1/close"); - soup_uri_set_port (uri, soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); + soup_uri_set_path (uri, "/close"); basic_auth_domain = soup_auth_domain_basic_new ( SOUP_AUTH_DOMAIN_REALM, "auth-test", @@ -1160,9 +1158,7 @@ do_disappearing_auth_test (void) server = soup_test_server_new (FALSE); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - - uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (uri, soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); auth_domain = soup_auth_domain_basic_new ( SOUP_AUTH_DOMAIN_REALM, "auth-test", diff --git a/tests/cache-test.c b/tests/cache-test.c index a19e9747..8a7a401f 100644 --- a/tests/cache-test.c +++ b/tests/cache-test.c @@ -729,8 +729,7 @@ main (int argc, char **argv) server = soup_test_server_new (TRUE); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); do_basics_test (base_uri); do_cancel_test (base_uri); diff --git a/tests/chunk-io-test.c b/tests/chunk-io-test.c index f1f96b0f..ea1002cf 100644 --- a/tests/chunk-io-test.c +++ b/tests/chunk-io-test.c @@ -10,7 +10,6 @@ force_io_streams_init (void) { SoupServer *server; SoupSession *session; - guint port; SoupURI *base_uri; SoupMessage *msg; @@ -20,10 +19,7 @@ force_io_streams_init (void) */ server = soup_test_server_new (TRUE); - port = soup_server_get_port (server); - - base_uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (base_uri, port); + base_uri = soup_test_server_get_uri (server, "http", NULL); session = soup_test_session_new (SOUP_TYPE_SESSION, NULL); msg = soup_message_new_from_uri ("POST", base_uri); diff --git a/tests/chunk-test.c b/tests/chunk-test.c index ce929565..050deb06 100644 --- a/tests/chunk-test.c +++ b/tests/chunk-test.c @@ -506,22 +506,19 @@ main (int argc, char **argv) { GMainLoop *loop; SoupServer *server; - guint port; - SoupURI *base_uri; + SoupURI *uri; test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - port = soup_server_get_port (server); loop = g_main_loop_new (NULL, TRUE); - base_uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (base_uri, port); - do_chunk_tests (base_uri); - soup_uri_free (base_uri); + uri = soup_test_server_get_uri (server, "http", NULL); + do_chunk_tests (uri); + soup_uri_free (uri); g_main_loop_unref (loop); soup_test_server_quit_unref (server); diff --git a/tests/coding-test.c b/tests/coding-test.c index 1bffbc43..1bde4e59 100644 --- a/tests/coding-test.c +++ b/tests/coding-test.c @@ -563,10 +563,9 @@ main (int argc, char **argv) { test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); do_coding_test (); do_coding_req_test (); diff --git a/tests/connection-test.c b/tests/connection-test.c index fd7179f2..d9c38a28 100644 --- a/tests/connection-test.c +++ b/tests/connection-test.c @@ -51,10 +51,12 @@ timeout_request_started (SoupServer *server, SoupMessage *msg, SoupClientContext *client, gpointer user_data) { SoupSocket *sock; - GMainContext *context = soup_server_get_async_context (server); + GMainContext *context = g_main_context_get_thread_default (); guint readable; + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; sock = soup_client_context_get_socket (client); + G_GNUC_END_IGNORE_DEPRECATIONS; readable = g_signal_connect (sock, "readable", G_CALLBACK (timeout_socket), NULL); while (soup_socket_is_connected (sock)) @@ -130,7 +132,9 @@ server_callback (SoupServer *server, SoupMessage *msg, * the declared Content-Length. Instead, we * forcibly close the socket at that point. */ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; sock = soup_client_context_get_socket (context); + G_GNUC_END_IGNORE_DEPRECATIONS; g_signal_connect (msg, "wrote-chunk", G_CALLBACK (close_socket), sock); } else if (no_close) { @@ -148,7 +152,9 @@ server_callback (SoupServer *server, SoupMessage *msg, if (!strcmp (path, "/timeout-persistent")) { SoupSocket *sock; + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; sock = soup_client_context_get_socket (context); + G_GNUC_END_IGNORE_DEPRECATIONS; setup_timeout_persistent (server, sock); } @@ -956,10 +962,9 @@ main (int argc, char **argv) apache_init (); #endif - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, "http", NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); do_content_length_framing_test (); do_persistent_connection_timeout_test (); diff --git a/tests/context-test.c b/tests/context-test.c index 97cd2c0c..74bb1eac 100644 --- a/tests/context-test.c +++ b/tests/context-test.c @@ -65,7 +65,7 @@ server_callback (SoupServer *server, SoupMessage *msg, sd->server = server; sd->msg = msg; sd->timeout = soup_add_timeout ( - soup_server_get_async_context (server), + g_main_context_get_thread_default (), 200, add_body_chunk, sd); g_signal_connect (msg, "finished", G_CALLBACK (request_failed), sd); @@ -364,13 +364,15 @@ int main (int argc, char **argv) { SoupServer *server; + SoupURI *uri; test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = g_strdup_printf ("http://127.0.0.1:%u/", - soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); + base_uri = soup_uri_to_string (uri, FALSE); + soup_uri_free (uri); do_test1 (1, FALSE); do_test1 (2, TRUE); diff --git a/tests/continue-test.c b/tests/continue-test.c index 7cc9f692..99c6f6a8 100644 --- a/tests/continue-test.c +++ b/tests/continue-test.c @@ -10,7 +10,7 @@ #define MAX_POST_LENGTH (sizeof (SHORT_BODY)) -static int port; +static SoupURI *base_uri; static GSList *events; static void @@ -54,24 +54,27 @@ do_message (const char *path, gboolean long_body, SoupSession *session; SoupMessage *msg; const char *body; - char *uri; + SoupURI *uri; va_list ap; const char *expected_event; char *actual_event; int expected_status, actual_status; static int count = 1; - debug_printf (1, "%d. /%s, %s body, %sExpect, %s password\n", + debug_printf (1, "%d. %s, %s body, %sExpect, %s password\n", count++, path, long_body ? "long" : "short", expect_continue ? "" : "no ", auth ? "with" : "without"); - uri = g_strdup_printf ("http://%s127.0.0.1:%d/%s", - auth ? "user:pass@" : "", - port, path); - msg = soup_message_new ("POST", uri); - g_free (uri); + uri = soup_uri_copy (base_uri); + if (auth) { + soup_uri_set_user (uri, "user"); + soup_uri_set_password (uri, "pass"); + } + soup_uri_set_path (uri, path); + msg = soup_message_new_from_uri ("POST", uri); + soup_uri_free (uri); body = long_body ? LONG_BODY : SHORT_BODY; soup_message_set_request (msg, "text/plain", SOUP_MEMORY_STATIC, @@ -159,7 +162,7 @@ do_message (const char *path, gboolean long_body, static void run_tests (void) { - do_message ("unauth", FALSE, FALSE, FALSE, + do_message ("/unauth", FALSE, FALSE, FALSE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -171,7 +174,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("unauth", TRUE, FALSE, FALSE, + do_message ("/unauth", TRUE, FALSE, FALSE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -183,7 +186,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("unauth", FALSE, TRUE, FALSE, + do_message ("/unauth", FALSE, TRUE, FALSE, "client-wrote_headers", "server-got_headers", "server-wrote_informational", SOUP_STATUS_CONTINUE, @@ -197,7 +200,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("unauth", TRUE, TRUE, FALSE, + do_message ("/unauth", TRUE, TRUE, FALSE, "client-wrote_headers", "server-got_headers", "server-wrote_headers", SOUP_STATUS_REQUEST_ENTITY_TOO_LARGE, @@ -208,7 +211,7 @@ run_tests (void) "client-finished", NULL); - do_message ("auth", FALSE, FALSE, FALSE, + do_message ("/auth", FALSE, FALSE, FALSE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -220,7 +223,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", TRUE, FALSE, FALSE, + do_message ("/auth", TRUE, FALSE, FALSE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -232,7 +235,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", FALSE, TRUE, FALSE, + do_message ("/auth", FALSE, TRUE, FALSE, "client-wrote_headers", "server-got_headers", "server-wrote_headers", SOUP_STATUS_UNAUTHORIZED, @@ -242,7 +245,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", TRUE, TRUE, FALSE, + do_message ("/auth", TRUE, TRUE, FALSE, "client-wrote_headers", "server-got_headers", "server-wrote_headers", SOUP_STATUS_UNAUTHORIZED, @@ -253,7 +256,7 @@ run_tests (void) "client-finished", NULL); - do_message ("auth", FALSE, FALSE, TRUE, + do_message ("/auth", FALSE, FALSE, TRUE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -274,7 +277,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", TRUE, FALSE, TRUE, + do_message ("/auth", TRUE, FALSE, TRUE, "client-wrote_headers", "client-wrote_body", "server-got_headers", @@ -295,7 +298,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", FALSE, TRUE, TRUE, + do_message ("/auth", FALSE, TRUE, TRUE, "client-wrote_headers", "server-got_headers", "server-wrote_headers", SOUP_STATUS_UNAUTHORIZED, @@ -316,7 +319,7 @@ run_tests (void) "client-got_body", "client-finished", NULL); - do_message ("auth", TRUE, TRUE, TRUE, + do_message ("/auth", TRUE, TRUE, TRUE, "client-wrote_headers", "server-got_headers", "server-wrote_headers", SOUP_STATUS_UNAUTHORIZED, @@ -410,7 +413,7 @@ setup_server (void) SoupServer *server; SoupAuthDomain *auth_domain; - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); g_signal_connect (server, "request-started", G_CALLBACK (request_started), NULL); @@ -438,11 +441,13 @@ main (int argc, char **argv) test_init (argc, argv, NULL); server = setup_server (); - port = soup_server_get_port (server); + base_uri = soup_test_server_get_uri (server, "http", NULL); run_tests (); soup_test_server_quit_unref (server); + soup_uri_free (base_uri); + test_cleanup (); return errors != 0; } diff --git a/tests/cookies-test.c b/tests/cookies-test.c index 58f8052e..37a0b6b9 100644 --- a/tests/cookies-test.c +++ b/tests/cookies-test.c @@ -203,20 +203,25 @@ do_cookies_parsing_test (void) int main (int argc, char **argv) { + SoupURI *server_uri; + test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); + server_uri = soup_test_server_get_uri (server, "http", NULL); + first_party_uri = soup_uri_new (first_party); third_party_uri = soup_uri_new (third_party); - soup_uri_set_port (first_party_uri, soup_server_get_port (server)); - soup_uri_set_port (third_party_uri, soup_server_get_port (server)); + soup_uri_set_port (first_party_uri, server_uri->port); + soup_uri_set_port (third_party_uri, server_uri->port); do_cookies_accept_policy_test (); do_cookies_parsing_test (); soup_uri_free (first_party_uri); soup_uri_free (third_party_uri); + soup_uri_free (server_uri); soup_test_server_quit_unref (server); test_cleanup (); diff --git a/tests/forms-test.c b/tests/forms-test.c index 3b6e5c16..bd9bec31 100644 --- a/tests/forms-test.c +++ b/tests/forms-test.c @@ -417,38 +417,44 @@ main (int argc, char **argv) { GMainLoop *loop; SoupServer *server; - guint port; + SoupURI *base_uri, *uri; char *uri_str; test_init (argc, argv, no_test_entry); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, "/hello", hello_callback, NULL, NULL); soup_server_add_handler (server, "/md5", md5_callback, NULL, NULL); - port = soup_server_get_port (server); + base_uri = soup_test_server_get_uri (server, "http", NULL); loop = g_main_loop_new (NULL, TRUE); if (run_tests) { - uri_str = g_strdup_printf ("http://127.0.0.1:%u/hello", port); + uri = soup_uri_new_with_base (base_uri, "/hello"); + uri_str = soup_uri_to_string (uri, FALSE); do_hello_tests (uri_str); + soup_uri_free (uri); g_free (uri_str); - uri_str = g_strdup_printf ("http://127.0.0.1:%u/md5", port); + uri = soup_uri_new_with_base (base_uri, "/md5"); + uri_str = soup_uri_to_string (uri, FALSE); do_md5_tests (uri_str); + soup_uri_free (uri); g_free (uri_str); do_form_decode_test (); } else { - g_print ("Listening on port %d\n", port); + g_print ("Listening on port %d\n", base_uri->port); g_main_loop_run (loop); } g_main_loop_unref (loop); soup_test_server_quit_unref (server); + soup_uri_free (base_uri); + if (run_tests) test_cleanup (); return errors != 0; diff --git a/tests/misc-test.c b/tests/misc-test.c index 2aaa2cd4..96777b4a 100644 --- a/tests/misc-test.c +++ b/tests/misc-test.c @@ -73,7 +73,7 @@ server_callback (SoupServer *server, SoupMessage *msg, if (!strcmp (path, "/slow")) { soup_server_pause_message (server, msg); g_object_set_data (G_OBJECT (msg), "server", server); - soup_add_timeout (soup_server_get_async_context (server), + soup_add_timeout (g_main_context_get_thread_default (), 1000, timeout_finish_message, msg); } @@ -174,35 +174,28 @@ static void do_callback_unref_test (void) { SoupServer *bad_server; - SoupAddress *addr; SoupSession *session; SoupMessage *one, *two; GMainLoop *loop; - char *bad_uri; + SoupURI *bad_uri; debug_printf (1, "\nCallback unref handling (msg api)\n"); /* Get a guaranteed-bad URI */ - addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT); - soup_address_resolve_sync (addr, NULL); - bad_server = soup_server_new (SOUP_SERVER_INTERFACE, addr, - NULL); - g_object_unref (addr); - - bad_uri = g_strdup_printf ("http://127.0.0.1:%u/", - soup_server_get_port (bad_server)); - g_object_unref (bad_server); + bad_server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); + bad_uri = soup_test_server_get_uri (bad_server, "http", NULL); + soup_test_server_quit_unref (bad_server); session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL); g_object_add_weak_pointer (G_OBJECT (session), (gpointer *)&session); loop = g_main_loop_new (NULL, TRUE); - one = soup_message_new ("GET", bad_uri); + one = soup_message_new_from_uri ("GET", bad_uri); g_object_add_weak_pointer (G_OBJECT (one), (gpointer *)&one); - two = soup_message_new ("GET", bad_uri); + two = soup_message_new_from_uri ("GET", bad_uri); g_object_add_weak_pointer (G_OBJECT (two), (gpointer *)&two); - g_free (bad_uri); + soup_uri_free (bad_uri); soup_session_queue_message (session, one, cu_one_completed, loop); soup_session_queue_message (session, two, cu_two_completed, loop); @@ -283,24 +276,17 @@ static void do_callback_unref_req_test (void) { SoupServer *bad_server; - SoupAddress *addr; SoupSession *session; SoupRequest *one, *two; GMainLoop *loop; - char *bad_uri; + SoupURI *bad_uri; debug_printf (1, "\nCallback unref handling (request api)\n"); /* Get a guaranteed-bad URI */ - addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT); - soup_address_resolve_sync (addr, NULL); - bad_server = soup_server_new (SOUP_SERVER_INTERFACE, addr, - NULL); - g_object_unref (addr); - - bad_uri = g_strdup_printf ("http://127.0.0.1:%u/", - soup_server_get_port (bad_server)); - g_object_unref (bad_server); + bad_server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); + bad_uri = soup_test_server_get_uri (bad_server, "http", NULL); + soup_test_server_quit_unref (bad_server); session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, SOUP_SESSION_USE_THREAD_CONTEXT, TRUE, @@ -309,11 +295,11 @@ do_callback_unref_req_test (void) loop = g_main_loop_new (NULL, TRUE); - one = soup_session_request (session, bad_uri, NULL); + one = soup_session_request_uri (session, bad_uri, NULL); g_object_add_weak_pointer (G_OBJECT (one), (gpointer *)&one); - two = soup_session_request (session, bad_uri, NULL); + two = soup_session_request_uri (session, bad_uri, NULL); g_object_add_weak_pointer (G_OBJECT (two), (gpointer *)&two); - g_free (bad_uri); + soup_uri_free (bad_uri); soup_request_send_async (one, NULL, cur_one_completed, session); g_object_unref (one); @@ -1022,10 +1008,9 @@ main (int argc, char **argv) test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, "http", NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); auth_domain = soup_auth_domain_basic_new ( SOUP_AUTH_DOMAIN_REALM, "misc-test", @@ -1036,10 +1021,9 @@ main (int argc, char **argv) g_object_unref (auth_domain); if (tls_available) { - ssl_server = soup_test_server_new_ssl (TRUE); + ssl_server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (ssl_server, NULL, server_callback, "https", NULL); - ssl_base_uri = soup_uri_new ("https://127.0.0.1/"); - soup_uri_set_port (ssl_base_uri, soup_server_get_port (ssl_server)); + ssl_base_uri = soup_test_server_get_uri (ssl_server, "https", "127.0.0.1"); } do_host_test (); diff --git a/tests/multipart-test.c b/tests/multipart-test.c index bfe4f5b2..d44effa5 100644 --- a/tests/multipart-test.c +++ b/tests/multipart-test.c @@ -588,10 +588,9 @@ main (int argc, char **argv) buffer = g_malloc (READ_BUFFER_SIZE); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); base_uri_string = soup_uri_to_string (base_uri, FALSE); /* FIXME: I had to raise the number of connections allowed here, otherwise I diff --git a/tests/no-ssl-test.c b/tests/no-ssl-test.c index ab1bdc3a..235ec097 100644 --- a/tests/no-ssl-test.c +++ b/tests/no-ssl-test.c @@ -3,13 +3,13 @@ #include "test-utils.h" static void -do_ssl_test_for_session (SoupSession *session, char *uri) +do_ssl_test_for_session (SoupSession *session, SoupURI *uri) { SoupMessage *msg; GTlsCertificate *cert; GTlsCertificateFlags flags; - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); soup_session_send_message (session, msg); if (msg->status_code != SOUP_STATUS_SSL_FAILED) { debug_printf (1, " Unexpected status: %d %s\n", @@ -34,7 +34,7 @@ do_ssl_test_for_session (SoupSession *session, char *uri) } static void -do_ssl_tests (char *uri) +do_ssl_tests (SoupURI *uri) { SoupSession *session; @@ -167,7 +167,8 @@ int main (int argc, char **argv) { SoupServer *server; - char *uri; + SoupURI *uri; + guint port; /* Force this test to use the dummy TLS backend */ g_setenv ("GIO_USE_TLS", "dummy", TRUE); @@ -180,13 +181,15 @@ main (int argc, char **argv) */ server = soup_test_server_new (TRUE); soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - uri = g_strdup_printf ("https://127.0.0.1:%u/", - soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); + port = uri->port; + soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTPS); + soup_uri_set_port (uri, port); do_session_property_tests (); do_ssl_tests (uri); - g_free (uri); + soup_uri_free (uri); soup_test_server_quit_unref (server); test_cleanup (); diff --git a/tests/ntlm-test.c b/tests/ntlm-test.c index f67a3d14..67538356 100644 --- a/tests/ntlm-test.c +++ b/tests/ntlm-test.c @@ -42,7 +42,7 @@ server_callback (SoupServer *server, SoupMessage *msg, SoupClientContext *client, gpointer data) { GHashTable *connections = data; - SoupSocket *socket; + GSocket *socket; const char *auth; NTLMServerState state, required_user = 0; gboolean auth_required, not_found = FALSE; @@ -68,7 +68,7 @@ server_callback (SoupServer *server, SoupMessage *msg, if (strstr (path, "/404")) not_found = TRUE; - socket = soup_client_context_get_socket (client); + socket = soup_client_context_get_gsocket (client); state = GPOINTER_TO_INT (g_hash_table_lookup (connections, socket)); auth = soup_message_headers_get_one (msg->request_headers, "Authorization"); @@ -555,13 +555,12 @@ main (int argc, char **argv) test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); connections = g_hash_table_new (NULL, NULL); soup_server_add_handler (server, NULL, server_callback, connections, NULL); - uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (uri, soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); /* Built-in NTLM auth support. (We set SOUP_NTLM_AUTH_DEBUG to * an empty string to ensure that the built-in support is @@ -593,8 +592,6 @@ main (int argc, char **argv) debug_printf (1, "\nRetrying on failed password\n"); do_retrying_test (uri); - soup_uri_free (uri); - soup_test_server_quit_unref (server); test_cleanup (); g_hash_table_destroy (connections); diff --git a/tests/proxy-test.c b/tests/proxy-test.c index 682b5375..e981901a 100644 --- a/tests/proxy-test.c +++ b/tests/proxy-test.c @@ -401,10 +401,9 @@ main (int argc, char **argv) g_simple_proxy_resolver_new (proxies[i], (char **) ignore_hosts); } - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); do_proxy_tests (); do_proxy_fragment_test (base_uri); diff --git a/tests/range-test.c b/tests/range-test.c index 00b8567d..f4fc399e 100644 --- a/tests/range-test.c +++ b/tests/range-test.c @@ -399,7 +399,8 @@ main (int argc, char **argv) { SoupSession *session; SoupServer *server; - char *base_uri; + SoupURI *base_uri; + char *base_uri_str; test_init (argc, argv, NULL); apache_init (); @@ -417,12 +418,13 @@ main (int argc, char **argv) #endif debug_printf (1, "\n2. Testing against SoupServer\n"); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - base_uri = g_strdup_printf ("http://127.0.0.1:%u/", - soup_server_get_port (server)); - do_range_test (session, base_uri, TRUE, TRUE); - g_free (base_uri); + base_uri = soup_test_server_get_uri (server, "http", NULL); + base_uri_str = soup_uri_to_string (base_uri, FALSE); + do_range_test (session, base_uri_str, TRUE, TRUE); + soup_uri_free (base_uri); + g_free (base_uri_str); soup_test_server_quit_unref (server); soup_test_session_abort_unref (session); diff --git a/tests/redirect-test.c b/tests/redirect-test.c index 2b4fb5ea..87d13f1a 100644 --- a/tests/redirect-test.c +++ b/tests/redirect-test.c @@ -564,37 +564,36 @@ main (int argc, char **argv) { GMainLoop *loop; SoupServer *server, *server2; - guint port; - SoupURI *base_uri; + SoupURI *base_uri, *uri2; test_init (argc, argv, no_test_entry); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - port = soup_server_get_port (server); + base_uri = soup_test_server_get_uri (server, "http", NULL); - server2 = soup_test_server_new (TRUE); + server2 = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server2, NULL, server2_callback, NULL, NULL); - server2_uri = g_strdup_printf ("http://127.0.0.1:%d/on-server2", - soup_server_get_port (server2)); + uri2 = soup_test_server_get_uri (server2, "http", NULL); + soup_uri_set_path (uri2, "/on-server2"); + server2_uri = soup_uri_to_string (uri2, FALSE); + soup_uri_free (uri2); loop = g_main_loop_new (NULL, TRUE); if (run_tests) { - base_uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (base_uri, port); do_redirect_tests (base_uri); do_connection_test (base_uri); - soup_uri_free (base_uri); } else { - g_print ("Listening on port %d\n", port); + g_print ("Listening on port %d\n", base_uri->port); g_main_loop_run (loop); } g_main_loop_unref (loop); g_free (server2_uri); + soup_uri_free (base_uri); soup_test_server_quit_unref (server); soup_test_server_quit_unref (server2); diff --git a/tests/requester-test.c b/tests/requester-test.c index a202c164..acb1e74c 100644 --- a/tests/requester-test.c +++ b/tests/requester-test.c @@ -351,7 +351,7 @@ do_async_test (SoupSession *session, SoupURI *uri, } static void -do_test_for_thread_and_context (SoupSession *session, const char *base_uri) +do_test_for_thread_and_context (SoupSession *session, SoupURI *base_uri) { SoupRequester *requester; SoupURI *uri; @@ -364,39 +364,33 @@ do_test_for_thread_and_context (SoupSession *session, const char *base_uri) soup_session_add_feature_by_type (session, SOUP_TYPE_CONTENT_SNIFFER); debug_printf (1, " basic test\n"); - uri = soup_uri_new (base_uri); - do_async_test (session, uri, test_sent, + do_async_test (session, base_uri, test_sent, SOUP_STATUS_OK, response, TRUE, FALSE); - soup_uri_free (uri); debug_printf (1, " chunked test\n"); - uri = soup_uri_new (base_uri); - soup_uri_set_path (uri, "/chunked"); + uri = soup_uri_new_with_base (base_uri, "/chunked"); do_async_test (session, uri, test_sent, SOUP_STATUS_OK, response, TRUE, FALSE); soup_uri_free (uri); debug_printf (1, " auth test\n"); - uri = soup_uri_new (base_uri); - soup_uri_set_path (uri, "/auth"); + uri = soup_uri_new_with_base (base_uri, "/auth"); do_async_test (session, uri, auth_test_sent, SOUP_STATUS_UNAUTHORIZED, auth_response, TRUE, FALSE); soup_uri_free (uri); debug_printf (1, " non-persistent test\n"); - uri = soup_uri_new (base_uri); - soup_uri_set_path (uri, "/non-persistent"); + uri = soup_uri_new_with_base (base_uri, "/non-persistent"); do_async_test (session, uri, test_sent, SOUP_STATUS_OK, response, FALSE, FALSE); soup_uri_free (uri); debug_printf (1, " cancellation test\n"); - uri = soup_uri_new (base_uri); - soup_uri_set_path (uri, "/"); + uri = soup_uri_new_with_base (base_uri, "/"); do_async_test (session, uri, test_sent, SOUP_STATUS_FORBIDDEN, NULL, FALSE, TRUE); @@ -404,7 +398,7 @@ do_test_for_thread_and_context (SoupSession *session, const char *base_uri) } static void -do_simple_tests (const char *uri) +do_simple_tests (SoupURI *uri) { SoupSession *session; @@ -424,7 +418,7 @@ do_simple_tests (const char *uri) } static void -do_test_with_context_and_type (const char *uri, gboolean plain_session) +do_test_with_context_and_type (SoupURI *uri, gboolean plain_session) { GMainContext *async_context; SoupSession *session; @@ -461,7 +455,7 @@ do_plain_test_with_context (gpointer uri) } static void -do_context_tests (const char *uri) +do_context_tests (SoupURI *uri) { debug_printf (1, "\nStreaming with a non-default-context\n"); @@ -470,7 +464,7 @@ do_context_tests (const char *uri) } static void -do_thread_tests (const char *uri) +do_thread_tests (SoupURI *uri) { GThread *thread; @@ -478,12 +472,12 @@ do_thread_tests (const char *uri) thread = g_thread_new ("do_test_with_context", do_plain_test_with_context, - (gpointer)uri); + uri); g_thread_join (thread); thread = g_thread_new ("do_test_with_context", do_test_with_context, - (gpointer)uri); + uri); g_thread_join (thread); } @@ -602,7 +596,7 @@ do_sync_request (SoupSession *session, SoupRequest *request, } static void -do_sync_tests_for_session (SoupSession *session, const char *uri_string) +do_sync_tests_for_session (SoupSession *session, SoupURI *base_uri) { SoupRequester *requester; SoupRequest *request; @@ -610,7 +604,7 @@ do_sync_tests_for_session (SoupSession *session, const char *uri_string) requester = SOUP_REQUESTER (soup_session_get_feature (session, SOUP_TYPE_REQUESTER)); - uri = soup_uri_new (uri_string); + uri = soup_uri_copy (base_uri); debug_printf (1, " basic test\n"); if (requester) @@ -670,7 +664,7 @@ do_sync_tests_for_session (SoupSession *session, const char *uri_string) } static void -do_sync_tests (const char *uri_string) +do_sync_tests (SoupURI *uri) { SoupSession *session; SoupRequester *requester; @@ -679,7 +673,7 @@ do_sync_tests (const char *uri_string) debug_printf (1, " SoupSession\n"); session = soup_test_session_new (SOUP_TYPE_SESSION, NULL); - do_sync_tests_for_session (session, uri_string); + do_sync_tests_for_session (session, uri); soup_test_session_abort_unref (session); debug_printf (1, " SoupSessionSync\n"); @@ -687,7 +681,7 @@ do_sync_tests (const char *uri_string) requester = soup_requester_new (); soup_session_add_feature (session, SOUP_SESSION_FEATURE (requester)); g_object_unref (requester); - do_sync_tests_for_session (session, uri_string); + do_sync_tests_for_session (session, uri); soup_test_session_abort_unref (session); } @@ -874,15 +868,14 @@ do_close_test_for_session (SoupSession *session, } static void -do_close_tests (const char *uri) +do_close_tests (SoupURI *uri) { SoupSession *session; SoupURI *slow_uri; debug_printf (1, "\nClosing stream before end should cancel\n"); - slow_uri = soup_uri_new (uri); - soup_uri_set_path (slow_uri, "/slow"); + slow_uri = soup_uri_new_with_base (uri, "/slow"); debug_printf (1, " SoupSessionAsync\n"); session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, @@ -904,15 +897,16 @@ do_close_tests (const char *uri) int main (int argc, char **argv) { - char *uri; + SoupURI *uri; test_init (argc, argv, NULL); get_index (); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - uri = g_strdup_printf ("http://127.0.0.1:%u/foo", soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); + soup_uri_set_path (uri, "/foo"); do_simple_tests (uri); do_thread_tests (uri); @@ -921,7 +915,7 @@ main (int argc, char **argv) do_null_char_tests (); do_close_tests (uri); - g_free (uri); + soup_uri_free (uri); soup_buffer_free (response); soup_buffer_free (auth_response); soup_test_server_quit_unref (server); diff --git a/tests/server-auth-test.c b/tests/server-auth-test.c index 33cff45a..3f4d73cd 100644 --- a/tests/server-auth-test.c +++ b/tests/server-auth-test.c @@ -318,7 +318,7 @@ main (int argc, char **argv) test_init (argc, argv, no_test_entry); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); g_signal_connect (server, "request_started", G_CALLBACK (request_started_callback), NULL); soup_server_add_handler (server, NULL, @@ -346,15 +346,14 @@ main (int argc, char **argv) loop = g_main_loop_new (NULL, TRUE); + uri = soup_test_server_get_uri (server, "http", NULL); if (run_tests) { - uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (uri, soup_server_get_port (server)); do_auth_tests (uri); - soup_uri_free (uri); } else { - g_print ("Listening on port %d\n", soup_server_get_port (server)); + g_print ("Listening on port %d\n", uri->port); g_main_loop_run (loop); } + soup_uri_free (uri); g_main_loop_unref (loop); soup_test_server_quit_unref (server); diff --git a/tests/server-test.c b/tests/server-test.c index 3ff7cadd..2bd87083 100644 --- a/tests/server-test.c +++ b/tests/server-test.c @@ -5,7 +5,7 @@ #include "test-utils.h" -SoupServer *server, *ssl_server; +SoupServer *server; SoupURI *base_uri, *ssl_base_uri; static void @@ -255,6 +255,7 @@ ipv6_server_callback (SoupServer *server, SoupMessage *msg, SoupClientContext *context, gpointer data) { const char *host; + GSocketAddress *addr; char expected_host[128]; host = soup_message_headers_get_one (msg->request_headers, "Host"); @@ -265,8 +266,10 @@ ipv6_server_callback (SoupServer *server, SoupMessage *msg, return; } + addr = soup_client_context_get_local_address (context); g_snprintf (expected_host, sizeof (expected_host), - "[::1]:%d", soup_server_get_port (server)); + "[::1]:%d", + g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (addr))); if (strcmp (host, expected_host) == 0) soup_message_set_status (msg, SOUP_STATUS_OK); @@ -282,27 +285,16 @@ do_ipv6_test (void) { SoupServer *ipv6_server; SoupURI *ipv6_uri; - SoupAddress *ipv6_addr; SoupSession *session; SoupMessage *msg; - debug_printf (1, "\nIPv6 server test\n"); + // FIXME: deal with lack of IPv6 support - ipv6_addr = soup_address_new ("::1", SOUP_ADDRESS_ANY_PORT); - soup_address_resolve_sync (ipv6_addr, NULL); - ipv6_server = soup_server_new (SOUP_SERVER_INTERFACE, ipv6_addr, - NULL); - g_object_unref (ipv6_addr); - if (!ipv6_server) { - debug_printf (1, " skipping due to lack of IPv6 support\n"); - return; - } + debug_printf (1, "\nIPv6 server test\n"); + ipv6_server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (ipv6_server, NULL, ipv6_server_callback, NULL, NULL); - soup_server_run_async (ipv6_server); - - ipv6_uri = soup_uri_new ("http://[::1]/"); - soup_uri_set_port (ipv6_uri, soup_server_get_port (ipv6_server)); + ipv6_uri = soup_test_server_get_uri (server, "http", "::1"); session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL); @@ -340,21 +332,17 @@ main (int argc, char **argv) test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); g_object_set (G_OBJECT (server), SOUP_SERVER_HTTP_ALIASES, http_aliases, NULL); if (tls_available) { - ssl_server = soup_test_server_new_ssl (TRUE); - soup_server_add_handler (ssl_server, NULL, server_callback, NULL, NULL); - ssl_base_uri = soup_uri_new ("https://127.0.0.1/"); - soup_uri_set_port (ssl_base_uri, soup_server_get_port (ssl_server)); - g_object_set (G_OBJECT (ssl_server), + ssl_base_uri = soup_test_server_get_uri (server, "https", NULL); + g_object_set (G_OBJECT (server), SOUP_SERVER_HTTPS_ALIASES, https_aliases, NULL); } @@ -367,10 +355,8 @@ main (int argc, char **argv) soup_uri_free (base_uri); soup_test_server_quit_unref (server); - if (tls_available) { + if (tls_available) soup_uri_free (ssl_base_uri); - soup_test_server_quit_unref (ssl_server); - } test_cleanup (); return errors != 0; diff --git a/tests/session-test.c b/tests/session-test.c index 205885d7..d149d0fd 100644 --- a/tests/session-test.c +++ b/tests/session-test.c @@ -25,7 +25,7 @@ server_handler (SoupServer *server, gpointer user_data) { if (!strcmp (path, "/request-timeout")) { - GMainContext *context = soup_server_get_async_context (server); + GMainContext *context = g_main_context_get_thread_default (); GSource *timer; timer = g_timeout_source_new (100); @@ -58,7 +58,7 @@ cancel_message_cb (SoupMessage *msg, gpointer session) static void do_test_for_session (SoupSession *session, - const char *uri, const char *timeout_uri, + SoupURI *uri, SoupURI *timeout_uri, gboolean queue_is_async, gboolean send_is_blocking, gboolean cancel_is_immediate) @@ -69,11 +69,11 @@ do_test_for_session (SoupSession *session, debug_printf (1, " queue_message\n"); debug_printf (2, " requesting timeout\n"); - msg = soup_message_new ("GET", timeout_uri); + msg = soup_message_new_from_uri ("GET", timeout_uri); soup_session_send_message (session, msg); g_object_unref (msg); - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); server_processed_message = timeout = finished = FALSE; soup_session_queue_message (session, msg, finished_cb, &finished); while (!timeout) @@ -107,7 +107,7 @@ do_test_for_session (SoupSession *session, } debug_printf (1, " send_message\n"); - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); server_processed_message = local_timeout = FALSE; timeout_id = g_idle_add_full (G_PRIORITY_HIGH, timeout_cb, &local_timeout, NULL); soup_session_send_message (session, msg); @@ -136,7 +136,7 @@ do_test_for_session (SoupSession *session, return; debug_printf (1, " cancel_message\n"); - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); g_object_ref (msg); finished = FALSE; soup_session_queue_message (session, msg, finished_cb, &finished); @@ -173,7 +173,7 @@ do_test_for_session (SoupSession *session, } static void -do_plain_tests (char *uri, char *timeout_uri) +do_plain_tests (SoupURI *uri, SoupURI *timeout_uri) { SoupSession *session; @@ -185,7 +185,7 @@ do_plain_tests (char *uri, char *timeout_uri) } static void -do_async_tests (char *uri, char *timeout_uri) +do_async_tests (SoupURI *uri, SoupURI *timeout_uri) { SoupSession *session; @@ -197,7 +197,7 @@ do_async_tests (char *uri, char *timeout_uri) } static void -do_sync_tests (char *uri, char *timeout_uri) +do_sync_tests (SoupURI *uri, SoupURI *timeout_uri) { SoupSession *session; @@ -226,7 +226,7 @@ priority_test_finished_cb (SoupSession *session, SoupMessage *msg, gpointer user } static void -do_priority_tests (char *uri) +do_priority_tests (SoupURI *uri) { SoupSession *session; int i, finished_count = 0; @@ -245,12 +245,14 @@ do_priority_tests (char *uri) expected_priorities[2] = SOUP_MESSAGE_PRIORITY_LOW; for (i = 0; i < 3; i++) { - char *msg_uri; + SoupURI *msg_uri; SoupMessage *msg; + char buf[5]; - msg_uri = g_strdup_printf ("%s/%d", uri, i); - msg = soup_message_new ("GET", uri); - g_free (msg_uri); + g_snprintf (buf, sizeof (buf), "%d", i); + msg_uri = soup_uri_new_with_base (uri, buf); + msg = soup_message_new_from_uri ("GET", msg_uri); + soup_uri_free (msg_uri); soup_message_set_priority (msg, priorities[i]); soup_session_queue_message (session, msg, priority_test_finished_cb, &finished_count); @@ -401,15 +403,14 @@ int main (int argc, char **argv) { SoupServer *server; - char *uri, *timeout_uri; + SoupURI *uri, *timeout_uri; test_init (argc, argv, NULL); server = soup_test_server_new (TRUE); soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - uri = g_strdup_printf ("http://127.0.0.1:%u", - soup_server_get_port (server)); - timeout_uri = g_strdup_printf ("%s/request-timeout", uri); + uri = soup_test_server_get_uri (server, "http", NULL); + timeout_uri = soup_uri_new_with_base (uri, "/request-timeout"); do_plain_tests (uri, timeout_uri); do_async_tests (uri, timeout_uri); @@ -417,8 +418,8 @@ main (int argc, char **argv) do_priority_tests (uri); do_property_tests (); - g_free (uri); - g_free (timeout_uri); + soup_uri_free (uri); + soup_uri_free (timeout_uri); soup_test_server_quit_unref (server); test_cleanup (); diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c index cbebaba0..cf3d9342 100644 --- a/tests/sniffing-test.c +++ b/tests/sniffing-test.c @@ -468,10 +468,9 @@ main (int argc, char **argv) test_init (argc, argv, NULL); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - base_uri = soup_uri_new ("http://127.0.0.1/"); - soup_uri_set_port (base_uri, soup_server_get_port (server)); + base_uri = soup_test_server_get_uri (server, "http", NULL); session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, SOUP_SESSION_USE_THREAD_CONTEXT, TRUE, diff --git a/tests/ssl-test.c b/tests/ssl-test.c index 7716f302..a3228fdc 100644 --- a/tests/ssl-test.c +++ b/tests/ssl-test.c @@ -3,13 +3,13 @@ #include "test-utils.h" static void -do_properties_test_for_session (SoupSession *session, char *uri) +do_properties_test_for_session (SoupSession *session, SoupURI *uri) { SoupMessage *msg; GTlsCertificate *cert; GTlsCertificateFlags flags; - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); soup_session_send_message (session, msg); if (msg->status_code != SOUP_STATUS_OK) { debug_printf (1, " FAILED: %d %s\n", @@ -40,7 +40,7 @@ do_properties_test_for_session (SoupSession *session, char *uri) } static void -do_properties_tests (char *uri) +do_properties_tests (SoupURI *uri) { SoupSession *session; @@ -66,7 +66,7 @@ do_properties_tests (char *uri) } static void -do_one_strict_test (SoupSession *session, char *uri, +do_one_strict_test (SoupSession *session, SoupURI *uri, gboolean strict, gboolean with_ca_list, guint expected_status) { @@ -84,7 +84,7 @@ do_one_strict_test (SoupSession *session, char *uri, /* Close existing connections with old params */ soup_session_abort (session); - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); soup_session_send_message (session, msg); if (msg->status_code != expected_status) { debug_printf (1, " FAILED: %d %s (expected %d %s)\n", @@ -118,7 +118,7 @@ do_one_strict_test (SoupSession *session, char *uri, } static void -do_strict_tests (char *uri) +do_strict_tests (SoupURI *uri) { SoupSession *session; @@ -323,21 +323,20 @@ int main (int argc, char **argv) { SoupServer *server; - char *uri; + SoupURI *uri; test_init (argc, argv, NULL); if (tls_available) { - server = soup_test_server_new_ssl (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - uri = g_strdup_printf ("https://127.0.0.1:%u/", - soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "https", "127.0.0.1"); do_session_property_tests (); do_strict_tests (uri); do_properties_tests (uri); - g_free (uri); + soup_uri_free (uri); soup_test_server_quit_unref (server); } diff --git a/tests/streaming-test.c b/tests/streaming-test.c index 239e0ce8..af849155 100644 --- a/tests/streaming-test.c +++ b/tests/streaming-test.c @@ -153,21 +153,18 @@ main (int argc, char **argv) { GMainLoop *loop; SoupServer *server; - guint port; SoupURI *base_uri; test_init (argc, argv, NULL); get_full_response (); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - port = soup_server_get_port (server); loop = g_main_loop_new (NULL, TRUE); - base_uri = soup_uri_new ("http://127.0.0.1"); - soup_uri_set_port (base_uri, port); + base_uri = soup_test_server_get_uri (server, "http", NULL); do_tests (base_uri); soup_uri_free (base_uri); diff --git a/tests/test-utils.c b/tests/test-utils.c index f4632a9b..650a5eb6 100644 --- a/tests/test-utils.c +++ b/tests/test-utils.c @@ -268,77 +268,209 @@ soup_test_session_abort_unref (SoupSession *session) } } -static gpointer run_server_thread (gpointer user_data); +static void +server_listen (SoupServer *server) +{ + GError *error = NULL; + SoupServerListenOptions options = + GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (server), "listen-options")); -static SoupServer * -test_server_new (gboolean in_own_thread, gboolean ssl) + soup_server_listen_local (server, 0, options, &error); + if (error) { + g_printerr ("Unable to create server: %s\n", error->message); + exit (1); + } +} + +static GMutex server_start_mutex; +static GCond server_start_cond; + +static gpointer +run_server_thread (gpointer user_data) { - SoupServer *server; - GMainContext *async_context; - const char *ssl_cert_file, *ssl_key_file; - SoupAddress *addr; + SoupServer *server = user_data; + GMainContext *context; + GMainLoop *loop; - async_context = in_own_thread ? g_main_context_new () : NULL; + context = g_main_context_new (); + g_main_context_push_thread_default (context); + loop = g_main_loop_new (context, FALSE); + g_object_set_data (G_OBJECT (server), "GMainLoop", loop); - if (ssl) { - ssl_cert_file = SRCDIR "/test-cert.pem"; - ssl_key_file = SRCDIR "/test-key.pem"; - } else - ssl_cert_file = ssl_key_file = NULL; + server_listen (server); - addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT); - soup_address_resolve_sync (addr, NULL); + g_mutex_lock (&server_start_mutex); + g_cond_signal (&server_start_cond); + g_mutex_unlock (&server_start_mutex); - server = soup_server_new (SOUP_SERVER_INTERFACE, addr, - SOUP_SERVER_ASYNC_CONTEXT, async_context, - SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file, - SOUP_SERVER_SSL_KEY_FILE, ssl_key_file, - NULL); - g_object_unref (addr); - if (async_context) - g_main_context_unref (async_context); + g_main_loop_run (loop); + g_main_loop_unref (loop); - if (!server) { - g_printerr ("Unable to create server\n"); - exit (1); + soup_server_disconnect (server); + + g_main_context_pop_thread_default (context); + g_main_context_unref (context); + + return NULL; +} + +SoupServer * +soup_test_server_new (SoupTestServerOptions options) +{ + SoupServer *server; + GTlsCertificate *cert = NULL; + GError *error = NULL; + + if (tls_available) { + cert = g_tls_certificate_new_from_files (SRCDIR "/test-cert.pem", + SRCDIR "/test-key.pem", + &error); + if (error) { + g_printerr ("Unable to create server: %s\n", error->message); + exit (1); + } } + + server = soup_server_new (SOUP_SERVER_TLS_CERTIFICATE, cert, + NULL); + g_clear_object (&cert); - if (in_own_thread) { + g_object_set_data (G_OBJECT (server), "options", GUINT_TO_POINTER (options)); + + if (options & SOUP_TEST_SERVER_IN_THREAD) { GThread *thread; + g_mutex_lock (&server_start_mutex); + thread = g_thread_new ("server_thread", run_server_thread, server); g_object_set_data (G_OBJECT (server), "thread", thread); + + /* We have to call soup_server_listen() from the server's + * thread, but want to be sure we don't return from here + * until it happens, hence the locking. + */ + g_cond_wait (&server_start_cond, &server_start_mutex); + g_mutex_unlock (&server_start_mutex); } else - soup_server_run_async (server); + server_listen (server); return server; } -SoupServer * -soup_test_server_new (gboolean in_own_thread) +static SoupURI * +find_server_uri (SoupServer *server, const char *scheme, const char *host) +{ + GSList *uris, *u; + SoupURI *uri, *ret_uri = NULL; + + uris = soup_server_get_uris (server); + for (u = uris; u; u = u->next) { + uri = u->data; + + if (scheme && strcmp (uri->scheme, scheme) != 0) + continue; + if (host && strcmp (uri->host, host) != 0) + continue; + + ret_uri = soup_uri_copy (uri); + break; + } + g_slist_free_full (uris, (GDestroyNotify)soup_uri_free); + + return ret_uri; +} + +static SoupURI * +add_listener (SoupServer *server, const char *scheme, const char *host) { - return test_server_new (in_own_thread, FALSE); + SoupServerListenOptions options = 0; + GError *error = NULL; + + if (!g_strcmp0 (scheme, SOUP_URI_SCHEME_HTTPS)) + options |= SOUP_SERVER_LISTEN_HTTPS; + if (!g_strcmp0 (host, "127.0.0.1")) + options |= SOUP_SERVER_LISTEN_IPV4_ONLY; + else if (!g_strcmp0 (host, "::1")) + options |= SOUP_SERVER_LISTEN_IPV6_ONLY; + + soup_server_listen_local (server, 0, options, &error); + g_assert_no_error (error); + + return find_server_uri (server, scheme, host); } -SoupServer * -soup_test_server_new_ssl (gboolean in_own_thread) +typedef struct { + GMutex mutex; + GCond cond; + + SoupServer *server; + const char *scheme; + const char *host; + + SoupURI *uri; +} AddListenerData; + +static gboolean +add_listener_in_thread (gpointer user_data) { - return test_server_new (in_own_thread, TRUE); + AddListenerData *data = user_data; + + data->uri = add_listener (data->server, data->scheme, data->host); + g_mutex_lock (&data->mutex); + g_cond_signal (&data->cond); + g_mutex_unlock (&data->mutex); + + return FALSE; } -static gpointer -run_server_thread (gpointer user_data) +SoupURI * +soup_test_server_get_uri (SoupServer *server, + const char *scheme, + const char *host) { - SoupServer *server = user_data; + SoupURI *uri; + GMainLoop *loop; - soup_server_run (server); - return NULL; + uri = find_server_uri (server, scheme, host); + if (uri) + return uri; + + /* Need to add a new listener */ + uri = soup_uri_new (NULL); + soup_uri_set_scheme (uri, scheme); + soup_uri_set_host (uri, host); + + loop = g_object_get_data (G_OBJECT (server), "GMainLoop"); + if (loop) { + GMainContext *context = g_main_loop_get_context (loop); + AddListenerData data; + + g_mutex_init (&data.mutex); + g_cond_init (&data.cond); + data.server = server; + data.scheme = scheme; + data.host = host; + data.uri = NULL; + + g_mutex_lock (&data.mutex); + soup_add_completion (context, add_listener_in_thread, &data); + + while (!data.uri) + g_cond_wait (&data.cond, &data.mutex); + + g_mutex_clear (&data.mutex); + g_cond_clear (&data.cond); + uri = data.uri; + } else + uri = add_listener (server, scheme, host); + + return uri; } static gboolean -idle_quit_server (gpointer server) +idle_quit_server (gpointer loop) { - soup_server_quit (server); + g_main_loop_quit (loop); return FALSE; } @@ -352,11 +484,15 @@ soup_test_server_quit_unref (SoupServer *server) thread = g_object_get_data (G_OBJECT (server), "thread"); if (thread) { - soup_add_completion (soup_server_get_async_context (server), - idle_quit_server, server); + GMainLoop *loop; + GMainContext *context; + + loop = g_object_get_data (G_OBJECT (server), "GMainLoop"); + context = g_main_loop_get_context (loop); + soup_add_completion (context, idle_quit_server, loop); g_thread_join (thread); } else - soup_server_quit (server); + soup_server_disconnect (server); g_object_unref (server); if (server) { diff --git a/tests/test-utils.h b/tests/test-utils.h index c85103d8..e686720b 100644 --- a/tests/test-utils.h +++ b/tests/test-utils.h @@ -36,9 +36,16 @@ typedef enum { SoupSession *soup_test_session_new (GType type, ...); void soup_test_session_abort_unref (SoupSession *session); -SoupServer *soup_test_server_new (gboolean in_own_thread); -SoupServer *soup_test_server_new_ssl (gboolean in_own_thread); -void soup_test_server_quit_unref (SoupServer *server); +typedef enum { + SOUP_TEST_SERVER_DEFAULT = 0, + SOUP_TEST_SERVER_IN_THREAD = (1 << 0) +} SoupTestServerOptions; + +SoupServer *soup_test_server_new (SoupTestServerOptions options); +SoupURI *soup_test_server_get_uri (SoupServer *server, + const char *scheme, + const char *host); +void soup_test_server_quit_unref (SoupServer *server); GInputStream *soup_test_request_send (SoupRequest *req, GCancellable *cancellable, diff --git a/tests/timeout-test.c b/tests/timeout-test.c index 5903069b..f98fead3 100644 --- a/tests/timeout-test.c +++ b/tests/timeout-test.c @@ -20,7 +20,7 @@ request_started_cb (SoupSession *session, SoupMessage *msg, } static void -do_message_to_session (SoupSession *session, const char *uri, +do_message_to_session (SoupSession *session, SoupURI *uri, const char *comment, guint expected_status) { SoupMessage *msg; @@ -28,7 +28,7 @@ do_message_to_session (SoupSession *session, const char *uri, if (comment) debug_printf (1, " msg %s\n", comment); - msg = soup_message_new ("GET", uri); + msg = soup_message_new_from_uri ("GET", uri); g_signal_connect (msg, "finished", G_CALLBACK (message_finished), &finished); @@ -63,7 +63,7 @@ static void do_msg_tests_for_session (SoupSession *timeout_session, SoupSession *idle_session, SoupSession *plain_session, - char *fast_uri, char *slow_uri) + SoupURI *fast_uri, SoupURI *slow_uri) { SoupSocket *ret, *idle_first, *idle_second; SoupSocket *plain_first, *plain_second; @@ -115,7 +115,7 @@ do_msg_tests_for_session (SoupSession *timeout_session, } static void -do_request_to_session (SoupSession *session, const char *uri, +do_request_to_session (SoupSession *session, SoupURI *uri, const char *comment, gboolean expect_timeout) { SoupRequest *req; @@ -125,7 +125,7 @@ do_request_to_session (SoupSession *session, const char *uri, gboolean finished = FALSE; debug_printf (1, " req %s\n", comment); - req = soup_session_request (session, uri, NULL); + req = soup_session_request_uri (session, uri, NULL); msg = soup_request_http_get_message (SOUP_REQUEST_HTTP (req)); g_signal_connect (msg, "finished", @@ -189,7 +189,7 @@ static void do_req_tests_for_session (SoupSession *timeout_session, SoupSession *idle_session, SoupSession *plain_session, - char *fast_uri, char *slow_uri) + SoupURI *fast_uri, SoupURI *slow_uri) { SoupSocket *ret, *idle_first, *idle_second; SoupSocket *plain_first, *plain_second; @@ -243,7 +243,7 @@ do_req_tests_for_session (SoupSession *timeout_session, } static void -do_timeout_tests (char *fast_uri, char *slow_uri, gboolean extra_slow) +do_timeout_tests (SoupURI *fast_uri, SoupURI *slow_uri, gboolean extra_slow) { SoupSession *timeout_session, *idle_session, *plain_session; @@ -311,7 +311,7 @@ server_handler (SoupServer *server, if (!strcmp (path, "/slow")) { soup_server_pause_message (server, msg); g_object_set_data (G_OBJECT (msg), "server", server); - soup_add_timeout (soup_server_get_async_context (server), + soup_add_timeout (g_main_context_get_thread_default (), 4000, timeout_finish_message, msg); } } @@ -320,21 +320,19 @@ int main (int argc, char **argv) { SoupServer *server; - char *fast_uri, *slow_uri; + SoupURI *fast_uri, *slow_uri; test_init (argc, argv, NULL); debug_printf (1, "http\n"); - server = soup_test_server_new (TRUE); + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - fast_uri = g_strdup_printf ("http://127.0.0.1:%u/", - soup_server_get_port (server)); - slow_uri = g_strdup_printf ("http://127.0.0.1:%u/slow", - soup_server_get_port (server)); + + fast_uri = soup_test_server_get_uri (server, "http", NULL); + slow_uri = soup_uri_new_with_base (fast_uri, "/slow"); do_timeout_tests (fast_uri, slow_uri, FALSE); - g_free (fast_uri); - g_free (slow_uri); - soup_test_server_quit_unref (server); + soup_uri_free (fast_uri); + soup_uri_free (slow_uri); if (tls_available) { SoupSession *test_session; @@ -342,12 +340,8 @@ main (int argc, char **argv) gint64 start, end; debug_printf (1, "\nhttps\n"); - server = soup_test_server_new_ssl (TRUE); - soup_server_add_handler (server, NULL, server_handler, NULL, NULL); - fast_uri = g_strdup_printf ("https://127.0.0.1:%u/", - soup_server_get_port (server)); - slow_uri = g_strdup_printf ("https://127.0.0.1:%u/slow", - soup_server_get_port (server)); + fast_uri = soup_test_server_get_uri (server, "https", "127.0.0.1"); + slow_uri = soup_uri_new_with_base (fast_uri, "/slow"); /* The 1-second timeouts are too fast for some machines... */ test_session = soup_test_session_new (SOUP_TYPE_SESSION, NULL); @@ -365,11 +359,12 @@ main (int argc, char **argv) } do_timeout_tests (fast_uri, slow_uri, extra_slow); - g_free (fast_uri); - g_free (slow_uri); - soup_test_server_quit_unref (server); + soup_uri_free (fast_uri); + soup_uri_free (slow_uri); } + soup_test_server_quit_unref (server); + test_cleanup (); return errors != 0; } diff --git a/tests/xmlrpc-server-test.c b/tests/xmlrpc-server-test.c index 421348b1..d89ba3d5 100644 --- a/tests/xmlrpc-server-test.c +++ b/tests/xmlrpc-server-test.c @@ -325,19 +325,19 @@ main (int argc, char **argv) test_init (argc, argv, no_test_entry); - server = soup_test_server_new (FALSE); + server = soup_test_server_new (SOUP_TEST_SERVER_DEFAULT); soup_server_add_handler (server, "/xmlrpc-server.php", server_callback, NULL, NULL); loop = g_main_loop_new (NULL, TRUE); - if (run_tests) { - uri = soup_uri_new ("http://127.0.0.1/xmlrpc-server.php"); - soup_uri_set_port (uri, soup_server_get_port (server)); + uri = soup_test_server_get_uri (server, "http", NULL); + soup_uri_set_path (uri, "/xmlrpc-server.php"); + if (run_tests) do_xmlrpc_tests (uri); - soup_uri_free (uri); - } else - g_print ("Listening on port %d\n", soup_server_get_port (server)); + else + g_print ("Listening on port %d\n", uri->port); + soup_uri_free (uri); g_main_loop_run (loop); g_main_loop_unref (loop); |