testsuite: track number of descriptors instead of their state
authorYauheni Kaliuta <yauheni.kaliuta@redhat.com>
Fri, 4 Jan 2019 21:41:33 +0000 (23:41 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 4 Jan 2019 22:39:39 +0000 (14:39 -0800)
use the number of tracked descriptors to determine the end of the
loop.

This is a preparation for more abstract descriptor comparation
implementation where checking of the descriptor state may be more
expensive than just checking of the local variables.

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
testsuite/testsuite.c

index 1f0caaf..81b54ad 100644 (file)
@@ -450,6 +450,7 @@ static bool test_run_parent_check_outputs(const struct test *t,
        bool fd_activityout = false, fd_activityerr = false;
        unsigned long long end_usec, start_usec;
        _cleanup_free_ struct buffer *buf_out = NULL, *buf_err = NULL;
+       int n_fd = 0;
 
        fd_ep = epoll_create1(EPOLL_CLOEXEC);
        if (fd_ep < 0) {
@@ -474,6 +475,7 @@ static bool test_run_parent_check_outputs(const struct test *t,
                        goto out;
                }
                buf_out = calloc(2, sizeof(*buf_out));
+               n_fd++;
        } else
                fdout = -1;
 
@@ -495,6 +497,7 @@ static bool test_run_parent_check_outputs(const struct test *t,
                        goto out;
                }
                buf_err = calloc(2, sizeof(*buf_err));
+               n_fd++;
        } else
                fderr = -1;
 
@@ -506,11 +509,12 @@ static bool test_run_parent_check_outputs(const struct test *t,
                ERR("could not add monitor fd to epoll: %m\n");
                goto out;
        }
+       n_fd++;
 
        start_usec = now_usec();
        end_usec = start_usec + TEST_TIMEOUT_USEC;
 
-       for (err = 0; fdmonitor >= 0 || fdout >= 0 || fderr >= 0;) {
+       for (err = 0; n_fd > 0;) {
                int fdcount, i, timeout;
                struct epoll_event ev[4];
                unsigned long long curr_usec = now_usec();
@@ -571,6 +575,7 @@ static bool test_run_parent_check_outputs(const struct test *t,
                                        ERR("could not remove fd %d from epoll: %m\n", fd);
                                }
                                *(int *)ev[i].data.ptr = -1;
+                               n_fd--;
                        }
                }
        }