[PATCH] selftests: connector: make proc_filter terminate on its own

Eva Kurchatova posted 1 patch 1 week, 1 day ago
tools/testing/selftests/connector/proc_filter.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
[PATCH] selftests: connector: make proc_filter terminate on its own
Posted by Eva Kurchatova 1 week, 1 day ago
proc_filter listens for process events until a signal interrupts it, so
a caller that waits for it to finish waits forever. Generate one event,
stop after five seconds, and fail if nothing was received.

Signed-off-by: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
---
 tools/testing/selftests/connector/proc_filter.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/connector/proc_filter.c b/tools/testing/selftests/connector/proc_filter.c
index 36c11467a8f1..2412f66c38e1 100644
--- a/tools/testing/selftests/connector/proc_filter.c
+++ b/tools/testing/selftests/connector/proc_filter.c
@@ -14,6 +14,7 @@
 #include <strings.h>
 #include <errno.h>
 #include <signal.h>
+#include <sys/wait.h>
 #include <string.h>
 
 #include "kselftest.h"
@@ -279,6 +280,16 @@ int main(int argc, char *argv[])
 		exit(1);
 	}
 
+	/*
+	 * Generate one event to observe and stop listening shortly after,
+	 * so that the test terminates on its own.
+	 */
+	signal(SIGALRM, sigint);
+	alarm(5);
+	if (fork() == 0)
+		_exit(0);
+	wait(NULL);
+
 	while (!interrupted) {
 		err = handle_events(epoll_fd, &proc_ev);
 		if (err < 0) {
@@ -306,5 +317,5 @@ int main(int argc, char *argv[])
 	close(nl_sock);
 
 	printf("Done total count: %d\n", tcount);
-	exit(0);
+	exit(tcount > 0 ? KSFT_PASS : KSFT_FAIL);
 }
-- 
2.55.0