[PATCH] zdtm: pty00 -- Count for SIGHUP

Cyrill Gorcunov gorcunov at openvz.org
Fri Aug 15 06:07:15 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 | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/test/zdtm/live/static/pty00.c b/test/zdtm/live/static/pty00.c
index 260fa407b0a5..b8553223abd8 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,8 +26,22 @@ 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);
 
+	/*
+	 * 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;
+	}
+
 	fdm = open("/dev/ptmx", O_RDWR);
 	if (fdm == -1) {
 		err("open(%s) failed", "/dev/ptmx");
@@ -54,8 +75,6 @@ int main(int argc, char ** argv)
 
 	test_waitsig();
 
-	signal(SIGHUP, SIG_IGN);
-
 	/* Check connectivity */
 	ret = write(fdm, teststr, sizeof(teststr) - 1);
 	if (ret != sizeof(teststr) - 1) {
@@ -74,10 +93,19 @@ int main(int argc, char ** argv)
 		return 1;
 	}
 
+	if (nr_sighups != 0) {
+		fail("Expected 0 SIGHUP before closing control terminal but got %d", nr_sighups);
+		return 1;
+	}
+
 	close(fdm);
 	close(fds);
 
-	pass();
+	if (nr_sighups != 1) {
+		fail("Expected 1 SIGHUP after closing control terminal but got %d", nr_sighups);
+		return 1;
+	} else
+		pass();
 
 	return 0;
 }
-- 
1.9.3


--5cSRzy0VGBWAML+b--


More information about the CRIU mailing list