[libsoup] misc-test: add a test that preemptively cancelling a SoupRequest works



commit 11811349f8a10ce419d980c01a518c774fe8a5e5
Author: Dan Winship <danw gnome org>
Date:   Sat Jul 13 10:22:14 2013 -0400

    misc-test: add a test that preemptively cancelling a SoupRequest works
    
    https://bugzilla.gnome.org/show_bug.cgi?id=637039

 tests/misc-test.c  |   16 ++++++++++++++++
 tests/test-utils.c |    2 ++
 tests/test-utils.h |    3 ++-
 3 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/tests/misc-test.c b/tests/misc-test.c
index 39ee960..18f0e61 100644
--- a/tests/misc-test.c
+++ b/tests/misc-test.c
@@ -971,6 +971,22 @@ do_cancel_while_reading_req_test (void)
                                         NULL);
        do_cancel_while_reading_req_test_for_session (session, flags);
        soup_test_session_abort_unref (session);
+
+       debug_printf (1, "\nCancelling (preemptively) message while reading response (request api)\n");
+       flags = SOUP_TEST_REQUEST_CANCEL_CANCELLABLE | SOUP_TEST_REQUEST_CANCEL_PREEMPTIVE;
+
+       debug_printf (1, "  Async session\n");
+       session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC,
+                                        SOUP_SESSION_USE_THREAD_CONTEXT, TRUE,
+                                        NULL);
+       do_cancel_while_reading_req_test_for_session (session, flags);
+       soup_test_session_abort_unref (session);
+
+       debug_printf (1, "  Sync session\n");
+       session = soup_test_session_new (SOUP_TYPE_SESSION_SYNC,
+                                        NULL);
+       do_cancel_while_reading_req_test_for_session (session, flags);
+       soup_test_session_abort_unref (session);
 }
 
 static void
diff --git a/tests/test-utils.c b/tests/test-utils.c
index b528b78..248f2fe 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -468,6 +468,8 @@ soup_test_request_send (SoupRequest   *req,
                guint interval = flags & SOUP_TEST_REQUEST_CANCEL_SOON ? 100 : 0;
                g_timeout_add_full (G_PRIORITY_HIGH, interval, cancel_request_timeout, cancel_data, NULL);
        }
+       if (cancel_data && (flags & SOUP_TEST_REQUEST_CANCEL_PREEMPTIVE))
+               g_cancellable_cancel (cancellable);
        soup_request_send_async (req, cancellable, async_as_sync_callback, &data);
        g_main_loop_run (data.loop);
 
diff --git a/tests/test-utils.h b/tests/test-utils.h
index b7b2195..98d9339 100644
--- a/tests/test-utils.h
+++ b/tests/test-utils.h
@@ -29,7 +29,8 @@ typedef enum {
   SOUP_TEST_REQUEST_CANCEL_CANCELLABLE = (1 << 1),
   SOUP_TEST_REQUEST_CANCEL_SOON = (1 << 2),
   SOUP_TEST_REQUEST_CANCEL_IMMEDIATE = (1 << 3),
-  SOUP_TEST_REQUEST_CANCEL_AFTER_SEND_FINISH = (1 << 4),
+  SOUP_TEST_REQUEST_CANCEL_PREEMPTIVE = (1 << 4),
+  SOUP_TEST_REQUEST_CANCEL_AFTER_SEND_FINISH = (1 << 5),
 } SoupTestRequestFlags;
 
 SoupSession *soup_test_session_new         (GType type, ...);


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