tests: refactor the async test a bit
authorPavel Šimerda <psimerda@redhat.com>
Tue, 14 Oct 2014 08:39:20 +0000 (10:39 +0200)
committerPavel Šimerda <psimerda@redhat.com>
Wed, 15 Oct 2014 10:25:55 +0000 (12:25 +0200)
tests/test-async.c

index e37db33cc6e3b08f2c890b0304f2e5aebf50c1d0..c853a5b4647f909aff48fcce0cd09f39c45f6bb5 100644 (file)
 
 #include "common.h"
 
-struct event_loop {
+struct priv_async {
        int epoll_fd;
        int epoll_count;
+       int finished;
 };
 
 static void
 watch_fd(netresolve_query_t query, int fd, int events, void *user_data)
 {
-       struct event_loop *loop = user_data;
+       struct priv_async *priv = user_data;
 
        struct epoll_event event = { .events = events, .data = { .fd = fd} };
 
-       if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_DEL, fd, &event) != -1)
-               loop->epoll_count--;
+       if (epoll_ctl(priv->epoll_fd, EPOLL_CTL_DEL, fd, &event) != -1)
+               priv->epoll_count--;
        else if (errno != ENOENT) {
                perror("epoll_ctl");
                abort();
        }
        if (!events)
                return;
-       if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_ADD, fd, &event) != -1)
-               loop->epoll_count++;
+       if (epoll_ctl(priv->epoll_fd, EPOLL_CTL_ADD, fd, &event) != -1)
+               priv->epoll_count++;
        else {
                perror("epoll_ctl");
                abort();
@@ -56,8 +57,8 @@ watch_fd(netresolve_query_t query, int fd, int events, void *user_data)
 static void
 on_success(netresolve_query_t query, void *user_data)
 {
+       struct priv_async *priv = user_data;
        int which = *(int *) netresolve_query_get_user_data(query);
-       int *count = user_data;
 
        switch (which) {
        case 1:
@@ -70,16 +71,15 @@ on_success(netresolve_query_t query, void *user_data)
                abort();
        }
 
-       (*count)++;
+       priv->finished++;
 }
 
 int
 main(int argc, char **argv)
 {
-       struct event_loop loop;
+       struct priv_async priv = { 0 };
        netresolve_t channel;
        netresolve_query_t query1, query2;
-       int finished = 0;
        const char *node1 = "1:2:3:4:5:6:7:8%999999";
        const char *node2 = "1.2.3.4%999999";
        int data1 = 1;
@@ -90,12 +90,12 @@ main(int argc, char **argv)
        int protocol = IPPROTO_TCP;
 
        /* Create epoll file descriptor. */
-       loop.epoll_fd = epoll_create1(EPOLL_CLOEXEC);
-       if (loop.epoll_fd == -1) {
+       priv.epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+       if (priv.epoll_fd == -1) {
                perror("epoll_create1");
                abort();
        }
-       loop.epoll_count = 0;
+       priv.epoll_count = 0;
 
        /* Create a channel. */
        channel = netresolve_open();
@@ -105,8 +105,8 @@ main(int argc, char **argv)
        }
 
        /* Set callbacks. */
-       netresolve_set_fd_callback(channel, watch_fd, &loop);
-       netresolve_set_success_callback(channel, on_success, &finished);
+       netresolve_set_fd_callback(channel, watch_fd, &priv);
+       netresolve_set_success_callback(channel, on_success, &priv);
 
        /* Resolver configuration. */
        netresolve_set_family(channel, family);
@@ -124,13 +124,13 @@ main(int argc, char **argv)
        assert(netresolve_query_get_user_data(query2) == &data2);
 
        /* Run the main loop. */
-       while (loop.epoll_count > 0) {
+       while (priv.epoll_count > 0) {
                static const int maxevents = 10;
                struct epoll_event events[maxevents];
                int nevents;
                int i;
 
-               nevents = epoll_wait(loop.epoll_fd, events, maxevents, -1);
+               nevents = epoll_wait(priv.epoll_fd, events, maxevents, -1);
                if (nevents == -1) {
                        perror("epoll_wait");
                        abort();
@@ -140,13 +140,13 @@ main(int argc, char **argv)
                        netresolve_dispatch_fd(channel, events[i].data.fd, events[i].events);
        }
 
-       assert(finished == 2);
+       assert(priv.finished == 2);
 
        /* Clean up. */
        netresolve_close(channel);
-       close(loop.epoll_fd);
+       close(priv.epoll_fd);
 
-       assert(loop.epoll_count == 0);
+       assert(priv.epoll_count == 0);
 
        exit(EXIT_SUCCESS);
 }
This page took 0.181548 seconds and 5 git commands to generate.