[kmod,1/2] testsuite: track number of descriptors instead of their state
diff mbox series

Message ID 20190104214134.23971-2-yauheni.kaliuta@redhat.com
State New
Headers show
Series
  • testsuite: abstraction to compare file descriptor
Related show

Commit Message

Yauheni Kaliuta Jan. 4, 2019, 9:41 p.m. UTC
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 | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c
index 1f0caafcccca..81b54ad1a48d 100644
--- a/testsuite/testsuite.c
+++ b/testsuite/testsuite.c
@@ -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--;
 			}
 		}
 	}