[libsoup] Allow calling soup_test_server_new() multiple times in test programs
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] Allow calling soup_test_server_new() multiple times in test programs
- Date: Sat, 12 Jun 2010 00:38:07 +0000 (UTC)
commit 02752ac1958daa7ecf257762bc345cdf45569896
Author: Dan Winship <danw gnome org>
Date: Fri Jun 11 15:26:53 2010 -0400
Allow calling soup_test_server_new() multiple times in test programs
tests/auth-test.c | 1 +
tests/chunk-test.c | 1 +
tests/coding-test.c | 1 +
tests/context-test.c | 1 +
tests/continue-test.c | 1 +
tests/cookies-test.c | 1 +
tests/forms-test.c | 1 +
tests/libsoup.supp | 12 ++++++++
tests/misc-test.c | 1 +
tests/ntlm-test.c | 1 +
tests/proxy-test.c | 1 +
tests/range-test.c | 1 +
tests/redirect-test.c | 1 +
tests/server-auth-test.c | 1 +
tests/sniffing-test.c | 1 +
tests/streaming-test.c | 1 +
tests/test-utils.c | 63 +++++++++++++++++++++-----------------------
tests/test-utils.h | 5 ++-
tests/timeout-test.c | 2 +
tests/xmlrpc-server-test.c | 1 +
20 files changed, 63 insertions(+), 35 deletions(-)
---
diff --git a/tests/auth-test.c b/tests/auth-test.c
index 15dcd59..cd72d49 100644
--- a/tests/auth-test.c
+++ b/tests/auth-test.c
@@ -822,6 +822,7 @@ do_select_auth_test (void)
g_object_unref (basic_auth_domain);
g_object_unref (digest_auth_domain);
soup_uri_free (uri);
+ soup_test_server_quit_unref (server);
}
int
diff --git a/tests/chunk-test.c b/tests/chunk-test.c
index 8ce286b..a679cce 100644
--- a/tests/chunk-test.c
+++ b/tests/chunk-test.c
@@ -381,6 +381,7 @@ main (int argc, char **argv)
soup_uri_free (base_uri);
g_main_loop_unref (loop);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
diff --git a/tests/coding-test.c b/tests/coding-test.c
index 288052e..b587a2c 100644
--- a/tests/coding-test.c
+++ b/tests/coding-test.c
@@ -192,6 +192,7 @@ main (int argc, char **argv)
do_coding_test ();
soup_uri_free (base_uri);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
diff --git a/tests/context-test.c b/tests/context-test.c
index fc203b3..fe9af31 100644
--- a/tests/context-test.c
+++ b/tests/context-test.c
@@ -270,6 +270,7 @@ main (int argc, char **argv)
do_test2 ();
g_free (base_uri);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
diff --git a/tests/continue-test.c b/tests/continue-test.c
index d9a94a2..dafe182 100644
--- a/tests/continue-test.c
+++ b/tests/continue-test.c
@@ -451,6 +451,7 @@ main (int argc, char **argv)
run_tests ();
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
}
diff --git a/tests/cookies-test.c b/tests/cookies-test.c
index fa9f5b0..2b8ebb1 100644
--- a/tests/cookies-test.c
+++ b/tests/cookies-test.c
@@ -114,6 +114,7 @@ main (int argc, char **argv)
soup_uri_free (first_party_uri);
soup_uri_free (third_party_uri);
+ soup_test_server_quit_unref (server);
test_cleanup ();
diff --git a/tests/forms-test.c b/tests/forms-test.c
index 8a7443c..d18ee59 100644
--- a/tests/forms-test.c
+++ b/tests/forms-test.c
@@ -432,6 +432,7 @@ main (int argc, char **argv)
g_main_loop_unref (loop);
+ soup_test_server_quit_unref (server);
if (run_tests)
test_cleanup ();
return errors != 0;
diff --git a/tests/libsoup.supp b/tests/libsoup.supp
index 35af861..65eb3c3 100644
--- a/tests/libsoup.supp
+++ b/tests/libsoup.supp
@@ -7,12 +7,24 @@
fun:g_type_init
}
{
+ glib/g_type_init_with_debug_flags
+ Memcheck:Leak
+ ...
+ fun:g_type_init_with_debug_flags
+}
+{
glib/g_thread_init
Memcheck:Leak
...
fun:g_thread_init
}
{
+ glib/g_thread_init_glib
+ Memcheck:Leak
+ ...
+ fun:g_thread_init_glib
+}
+{
glib/g_type_register_static
Memcheck:Leak
...
diff --git a/tests/misc-test.c b/tests/misc-test.c
index ae97b99..dabbb06 100644
--- a/tests/misc-test.c
+++ b/tests/misc-test.c
@@ -500,6 +500,7 @@ main (int argc, char **argv)
do_early_abort_test ();
soup_uri_free (base_uri);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
diff --git a/tests/ntlm-test.c b/tests/ntlm-test.c
index bbec037..3c555ee 100644
--- a/tests/ntlm-test.c
+++ b/tests/ntlm-test.c
@@ -427,6 +427,7 @@ main (int argc, char **argv)
g_main_loop_unref (loop);
+ 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 d23e7d1..68c1de8 100644
--- a/tests/proxy-test.c
+++ b/tests/proxy-test.c
@@ -228,6 +228,7 @@ main (int argc, char **argv)
do_proxy_fragment_test (base_uri);
soup_uri_free (base_uri);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
}
diff --git a/tests/range-test.c b/tests/range-test.c
index b4f27f9..d7ba922 100644
--- a/tests/range-test.c
+++ b/tests/range-test.c
@@ -365,6 +365,7 @@ main (int argc, char **argv)
soup_server_get_port (server));
do_range_test (session, base_uri, TRUE);
g_free (base_uri);
+ 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 24aefc4..aa7b05b 100644
--- a/tests/redirect-test.c
+++ b/tests/redirect-test.c
@@ -348,6 +348,7 @@ main (int argc, char **argv)
}
g_main_loop_unref (loop);
+ soup_test_server_quit_unref (server);
if (run_tests)
test_cleanup ();
diff --git a/tests/server-auth-test.c b/tests/server-auth-test.c
index e4c84bd..4122b16 100644
--- a/tests/server-auth-test.c
+++ b/tests/server-auth-test.c
@@ -375,6 +375,7 @@ main (int argc, char **argv)
}
g_main_loop_unref (loop);
+ soup_test_server_quit_unref (server);
if (run_tests)
test_cleanup ();
diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c
index 1bab24c..60ca389 100644
--- a/tests/sniffing-test.c
+++ b/tests/sniffing-test.c
@@ -569,6 +569,7 @@ main (int argc, char **argv)
soup_uri_free (base_uri);
soup_test_session_abort_unref (session);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
}
diff --git a/tests/streaming-test.c b/tests/streaming-test.c
index 1389a62..869a7b6 100644
--- a/tests/streaming-test.c
+++ b/tests/streaming-test.c
@@ -184,6 +184,7 @@ main (int argc, char **argv)
g_free (full_response);
g_free (full_response_md5);
+ soup_test_server_quit_unref (server);
test_cleanup ();
return errors != 0;
}
diff --git a/tests/test-utils.c b/tests/test-utils.c
index ee3e1c0..750da72 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -14,9 +14,6 @@
#ifdef HAVE_APACHE
static gboolean apache_running;
#endif
-static SoupServer *test_server;
-static GThread *server_thread;
-static void test_server_shutdown (void);
static SoupLogger *logger;
@@ -57,8 +54,6 @@ quit (int sig)
if (apache_running)
apache_cleanup ();
#endif
- if (test_server)
- test_server_shutdown ();
exit (1);
}
@@ -122,8 +117,6 @@ test_cleanup (void)
if (apache_running)
apache_cleanup ();
#endif
- if (test_server)
- test_server_shutdown ();
if (logger)
g_object_unref (logger);
@@ -268,13 +261,11 @@ static gpointer run_server_thread (gpointer user_data);
static SoupServer *
test_server_new (gboolean in_own_thread, gboolean ssl)
{
+ SoupServer *server;
GMainContext *async_context;
const char *ssl_cert_file, *ssl_key_file;
SoupAddress *addr;
- if (test_server)
- test_server_shutdown ();
-
async_context = in_own_thread ? g_main_context_new () : NULL;
if (ssl) {
@@ -286,27 +277,30 @@ test_server_new (gboolean in_own_thread, gboolean ssl)
addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT);
soup_address_resolve_sync (addr, NULL);
- test_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);
+ 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);
- if (!test_server) {
+ if (!server) {
fprintf (stderr, "Unable to create server\n");
exit (1);
}
if (in_own_thread) {
- server_thread = g_thread_create (run_server_thread, test_server,
- TRUE, NULL);
+ GThread *thread;
+
+ thread = g_thread_create (run_server_thread, server,
+ TRUE, NULL);
+ g_object_set_data (G_OBJECT (server), "thread", thread);
} else
- soup_server_run_async (test_server);
+ soup_server_run_async (server);
- return test_server;
+ return server;
}
SoupServer *
@@ -337,24 +331,27 @@ idle_quit_server (gpointer server)
return FALSE;
}
-static void
-test_server_shutdown (void)
+void
+soup_test_server_quit_unref (SoupServer *server)
{
- g_object_add_weak_pointer (G_OBJECT (test_server),
- (gpointer *)&test_server);
+ GThread *thread;
+
+ g_object_add_weak_pointer (G_OBJECT (server),
+ (gpointer *)&server);
- if (server_thread) {
- soup_add_completion (soup_server_get_async_context (test_server),
- idle_quit_server, test_server);
- g_thread_join (server_thread);
+ thread = g_object_get_data (G_OBJECT (server), "thread");
+ if (thread) {
+ soup_add_completion (soup_server_get_async_context (server),
+ idle_quit_server, server);
+ g_thread_join (thread);
} else
- soup_server_quit (test_server);
- g_object_unref (test_server);
+ soup_server_quit (server);
+ g_object_unref (server);
- if (test_server) {
+ if (server) {
errors++;
debug_printf (1, "leaked SoupServer!\n");
- g_object_remove_weak_pointer (G_OBJECT (test_server),
- (gpointer *)&test_server);
+ g_object_remove_weak_pointer (G_OBJECT (server),
+ (gpointer *)&server);
}
}
diff --git a/tests/test-utils.h b/tests/test-utils.h
index add5366..f609eaf 100644
--- a/tests/test-utils.h
+++ b/tests/test-utils.h
@@ -19,5 +19,6 @@ void apache_cleanup (void);
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);
+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);
diff --git a/tests/timeout-test.c b/tests/timeout-test.c
index 663df8e..3bca7ba 100644
--- a/tests/timeout-test.c
+++ b/tests/timeout-test.c
@@ -98,6 +98,7 @@ main (int argc, char **argv)
do_timeout_tests (fast_uri, slow_uri);
g_free (fast_uri);
g_free (slow_uri);
+ soup_test_server_quit_unref (server);
#ifdef HAVE_SSL
debug_printf (1, "https\n");
@@ -110,6 +111,7 @@ main (int argc, char **argv)
do_timeout_tests (fast_uri, slow_uri);
g_free (fast_uri);
g_free (slow_uri);
+ soup_test_server_quit_unref (server);
#endif
test_cleanup ();
diff --git a/tests/xmlrpc-server-test.c b/tests/xmlrpc-server-test.c
index 8f20f99..02751f1 100644
--- a/tests/xmlrpc-server-test.c
+++ b/tests/xmlrpc-server-test.c
@@ -332,6 +332,7 @@ main (int argc, char **argv)
g_main_loop_run (loop);
g_main_loop_unref (loop);
+ soup_test_server_quit_unref (server);
if (run_tests)
test_cleanup ();
return errors != 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]