summaryrefslogtreecommitdiff
path: root/tests/cache-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cache-test.c')
-rw-r--r--tests/cache-test.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/cache-test.c b/tests/cache-test.c
index ce811dff..543ef022 100644
--- a/tests/cache-test.c
+++ b/tests/cache-test.c
@@ -630,6 +630,85 @@ do_headers_test (gconstpointer data)
g_free (body1);
}
+static guint
+count_cached_resources_in_dir (const char *cache_dir)
+{
+ GDir *dir;
+ const char *name;
+ guint retval = 0;
+
+ dir = g_dir_open (cache_dir, 0, NULL);
+ while ((name = g_dir_read_name (dir))) {
+ if (g_str_has_prefix (name, "soup."))
+ continue;
+
+ retval++;
+ }
+ g_dir_close (dir);
+
+ return retval;
+}
+
+static void
+do_leaks_test (gconstpointer data)
+{
+ SoupURI *base_uri = (SoupURI *)data;
+ SoupSession *session;
+ SoupCache *cache;
+ char *cache_dir;
+ char *body;
+
+ cache_dir = g_dir_make_tmp ("cache-test-XXXXXX", NULL);
+ debug_printf (2, " Caching to %s\n", cache_dir);
+ cache = soup_cache_new (cache_dir, SOUP_CACHE_SINGLE_USER);
+ session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC,
+ SOUP_SESSION_USE_THREAD_CONTEXT, TRUE,
+ SOUP_SESSION_ADD_FEATURE, cache,
+ NULL);
+
+ debug_printf (2, " Initial requests\n");
+ body = do_request (session, base_uri, "GET", "/1", NULL,
+ "Test-Set-Expires", "Fri, 01 Jan 2100 00:00:00 GMT",
+ NULL);
+ g_free (body);
+ body = do_request (session, base_uri, "GET", "/2", NULL,
+ "Test-Set-Expires", "Fri, 01 Jan 2100 00:00:00 GMT",
+ NULL);
+ g_free (body);
+ body = do_request (session, base_uri, "GET", "/3", NULL,
+ "Test-Set-Expires", "Fri, 01 Jan 2100 00:00:00 GMT",
+ NULL);
+ g_free (body);
+
+ debug_printf (2, " Dumping the cache\n");
+ soup_cache_dump (cache);
+
+ g_assert_cmpuint (count_cached_resources_in_dir (cache_dir), ==, 3);
+
+ body = do_request (session, base_uri, "GET", "/4", NULL,
+ "Test-Set-Expires", "Fri, 01 Jan 2100 00:00:00 GMT",
+ NULL);
+ g_free (body);
+ body = do_request (session, base_uri, "GET", "/5", NULL,
+ "Test-Set-Expires", "Fri, 01 Jan 2100 00:00:00 GMT",
+ NULL);
+ g_free (body);
+
+ /* Destroy the cache without dumping the last two resources */
+ soup_test_session_abort_unref (session);
+ g_object_unref (cache);
+
+ cache = soup_cache_new (cache_dir, SOUP_CACHE_SINGLE_USER);
+
+ debug_printf (2, " Loading the cache\n");
+ g_assert_cmpuint (count_cached_resources_in_dir (cache_dir), ==, 5);
+ soup_cache_load (cache);
+ g_assert_cmpuint (count_cached_resources_in_dir (cache_dir), ==, 3);
+
+ g_object_unref (cache);
+ g_free (cache_dir);
+}
+
int
main (int argc, char **argv)
{
@@ -647,6 +726,7 @@ main (int argc, char **argv)
g_test_add_data_func ("/cache/cancellation", base_uri, do_cancel_test);
g_test_add_data_func ("/cache/refcounting", base_uri, do_refcounting_test);
g_test_add_data_func ("/cache/headers", base_uri, do_headers_test);
+ g_test_add_data_func ("/cache/leaks", base_uri, do_leaks_test);
ret = g_test_run ();