Commit e90d0f12 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

zdtm: pty00 -- Count for SIGHUP

Just to make sure we're not loosing signals
after restore.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 37cf27d3
......@@ -12,6 +12,13 @@
const char *test_doc = "Check, that pseudoterminals are restored";
const char *test_author = "Andrey Vagin <avagin@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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment