]> granicus.if.org Git - libevent/commitdiff
regress: use non blocking descriptors whenever it is possible
authorAzat Khuzhin <a3at.mail@gmail.com>
Sat, 3 Nov 2018 21:59:33 +0000 (00:59 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Sat, 3 Nov 2018 22:15:24 +0000 (01:15 +0300)
Next tests uses fds without O_NONBLOCK flag
- main/free_active_base
- main/many_events
- et/et (has some other bits cleaned up by using TT_* flags and test
  setup/cleanup callbacks)

And hence they will fail in debug mode (EVENT_DEBUG_MODE=):
  Assertion flags & O_NONBLOCK failed in event_debug_assert_socket_nonblocking_

test/regress.c
test/regress_et.c

index 6daa17ede42be4c1d958bb612a46fcdc512ec869..e3966247a6fcebb39bc2a8589fcbe9406fc356d7 100644 (file)
@@ -1389,18 +1389,14 @@ test_free_active_base(void *ptr)
        struct event ev1;
 
        base1 = event_init();
-       if (base1) {
-               event_assign(&ev1, base1, data->pair[1], EV_READ,
-                            dummy_read_cb, NULL);
-               event_add(&ev1, NULL);
-               event_base_free(base1);  /* should not crash */
-       } else {
-               tt_fail_msg("failed to create event_base for test");
-       }
+       tt_assert(base1);
+       event_assign(&ev1, base1, data->pair[1], EV_READ, dummy_read_cb, NULL);
+       event_add(&ev1, NULL);
+       event_base_free(base1);  /* should not crash */
 
        base1 = event_init();
        tt_assert(base1);
-       event_assign(&ev1, base1, 0, 0, dummy_read_cb, NULL);
+       event_assign(&ev1, base1, data->pair[0], 0, dummy_read_cb, NULL);
        event_active(&ev1, EV_READ, 1);
        event_base_free(base1);
 end:
@@ -3080,6 +3076,7 @@ test_many_events(void *arg)
                 * instance of that. */
                sock[i] = socket(AF_INET, SOCK_DGRAM, 0);
                tt_assert(sock[i] >= 0);
+               tt_assert(!evutil_make_socket_nonblocking(sock[i]));
                called[i] = 0;
                ev[i] = event_new(base, sock[i], EV_WRITE|evflags,
                    many_event_cb, &called[i]);
index b9bd317eb3fa8131024531d1d31d703ccd3e7d7d..07bcd4a583f96bb9d411337fa88e88ce43dcbd94 100644 (file)
@@ -75,19 +75,14 @@ read_cb(evutil_socket_t fd, short event, void *arg)
                event_del(arg);
 }
 
-#ifdef _WIN32
-#define LOCAL_SOCKETPAIR_AF AF_INET
-#else
-#define LOCAL_SOCKETPAIR_AF AF_UNIX
-#endif
-
 static void
-test_edgetriggered(void *et)
+test_edgetriggered(void *data_)
 {
+       struct basic_test_data *data = data_;
+       struct event_base *base = data->base;
+       int *pair = data->pair;
        struct event *ev = NULL;
-       struct event_base *base = NULL;
        const char *test = "test string";
-       evutil_socket_t pair[2] = {-1,-1};
        int supports_et;
 
        /* On Linux 3.2.1 (at least, as patched by Fedora and tested by Nick),
@@ -96,24 +91,12 @@ test_edgetriggered(void *et)
         * get edge-triggered behavior.  Yuck!  Linux 3.1.9 didn't have this
         * problem.
         */
-#ifdef __linux__
-       if (evutil_ersatz_socketpair_(AF_INET, SOCK_STREAM, 0, pair) == -1) {
-               tt_abort_perror("socketpair");
-       }
-#else
-       if (evutil_socketpair(LOCAL_SOCKETPAIR_AF, SOCK_STREAM, 0, pair) == -1) {
-               tt_abort_perror("socketpair");
-       }
-#endif
 
        called = was_et = 0;
 
        tt_int_op(send(pair[0], test, (int)strlen(test)+1, 0), >, 0);
        shutdown(pair[0], EVUTIL_SHUT_WR);
 
-       /* Initalize the event library */
-       base = event_base_new();
-
        supports_et = base_supports_et(base);
        TT_BLATHER(("Checking for edge-triggered events with %s, which should %s"
                                "support edge-triggering", event_base_get_method(base),
@@ -142,15 +125,11 @@ test_edgetriggered(void *et)
                tt_assert(!was_et);
        }
 
- end:
+end:
        if (ev) {
                event_del(ev);
                event_free(ev);
        }
-       if (base)
-               event_base_free(base);
-       evutil_closesocket(pair[0]);
-       evutil_closesocket(pair[1]);
 }
 
 static void
@@ -281,7 +260,8 @@ end:
 }
 
 struct testcase_t edgetriggered_testcases[] = {
-       { "et", test_edgetriggered, TT_FORK, NULL, NULL },
+       { "et", test_edgetriggered,
+         TT_FORK|TT_NEED_BASE|TT_NEED_SOCKETPAIR, &basic_setup, NULL },
        { "et_mix_error", test_edgetriggered_mix_error,
          TT_FORK|TT_NEED_SOCKETPAIR|TT_NO_LOGS, &basic_setup, NULL },
        { "et_multiple_events", test_edge_triggered_multiple_events,