[CRIU] [PATCH] zdtm: pty00 -- Count for SIGHUP

Cyrill Gorcunov gorcunov at openvz.org
Fri Aug 15 05:32:57 PDT 2014


Just to make sure we're not loosing signals
after restore.

Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
 test/zdtm/live/static/pty00.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/test/zdtm/live/static/pty00.c b/test/zdtm/live/static/pty00.c
index 260fa407b0a5..bb6893b838bc 100644
--- a/test/zdtm/live/static/pty00.c
+++ b/test/zdtm/live/static/pty00.c
@@ -12,6 +12,13 @@
 const char *test_doc	= "Check, that pseudoterminals are restored";
 const char *test_author	= "Andrey Vagin <avagin at openvz.org>";
 
+static unsigned int nr_sighups;
+
+static void signal_handler_sighup(int signum)
+{
+	nr_sighups++;
+}
+
 int main(int argc, char ** argv)
 {
 	int fdm, fds, ret;
@@ -19,6 +26,11 @@ int main(int argc, char ** argv)
 	char buf[10];
 	const char teststr[] = "hello\n";
 
+	struct sigaction sa = {
+		.sa_handler = signal_handler_sighup,
+		.sa_flags = 0,
+	};
+
 	test_init(argc, argv);
 
 	fdm = open("/dev/ptmx", O_RDWR);
@@ -54,7 +66,14 @@ int main(int argc, char ** argv)
 
 	test_waitsig();
 
-	signal(SIGHUP, SIG_IGN);
+	/*
+	 * On closing control terminal we're expecting to
+	 * receive SIGHUP, so make sure it's delivered.
+	 */
+	if (sigaction(SIGHUP, &sa, 0)) {
+		fail("sigaction failed\n");
+		return 1;
+	}
 
 	/* Check connectivity */
 	ret = write(fdm, teststr, sizeof(teststr) - 1);
@@ -77,7 +96,11 @@ int main(int argc, char ** argv)
 	close(fdm);
 	close(fds);
 
-	pass();
+	if (nr_sighups != 1) {
+		fail("Expected 1 SIGHUP but got %d", nr_sighups);
+		return 1;
+	} else
+		pass();
 
 	return 0;
 }
-- 
1.9.3



More information about the CRIU mailing list