2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-09-03 15:55:53 +00:00

zdtm/stopped: fix stopped test

The main problem with the
test that it's never 'fail'.
Test can only 'pass' or hangs.

Signed-off-by: Konstantin Neumoin <kneumoin@parallels.com>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Konstantin Neumoin
2014-10-07 15:28:00 +04:00
committed by Pavel Emelyanov
parent ffe3d5cfda
commit c4a06a2a26

View File

@@ -33,35 +33,42 @@ int main(int argc, char **argv)
return 1; return 1;
} }
ret = read(p[0], &c, 1);
if (ret != 0) {
err("Unable to read: %d", ret);
return 1;
}
return 0; return 0;
} }
close(p[0]); close(p[0]);
kill(pid, SIGSTOP); kill(pid, SIGSTOP);
write(p[1], "0", 1); write(p[1], "0", 1);
close(p[1]);
test_daemon(); test_daemon();
test_waitsig(); test_waitsig();
kill(pid, SIGCONT); // Return immediately if child run or stopped(by SIGSTOP)
if (waitpid(pid, &status, WCONTINUED) == -1) { if (waitpid(pid, &status, WUNTRACED | WCONTINUED) == -1) {
err("Unable to wait child"); err("Unable to wait child");
goto out; goto out;
} }
if (WIFCONTINUED(status)) if (WIFSTOPPED(status))
test_msg("The procces stopped\n");
else{
fail("The process doesn't stopped");
goto out;
}
kill(pid, SIGCONT);
if (waitpid(pid, &status, 0) == -1) {
err("Unable to wait child");
goto out;
}
if (WIFEXITED(status))
pass(); pass();
else else
fail("The process doesn't continue"); fail("The process doesn't continue");
out: out:
close(p[1]);
waitpid(pid, &status, 0);
return 0; return 0;
} }