[CRIU] [PATCH] test: check, that parasite can rollback itself
Andrey Vagin
avagin at openvz.org
Fri Jun 14 07:31:41 EDT 2013
This test uses systemtap to replace the fourth parasite command on
invalide command. The parasite code received this command and should
rollback itself. CRIU didn't recived ack, should understand that
something wrong and exits. The systemtap inverts exit code of criu.
"zdtm.sh -d" is used for executing tests and testing that the state of
processes don't corrupted.
Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
test/Makefile | 9 ++++++++-
test/fault-injection/Makefile | 2 ++
test/fault-injection/parasite.stp | 32 ++++++++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 1 deletion(-)
create mode 100644 test/fault-injection/Makefile
create mode 100644 test/fault-injection/parasite.stp
diff --git a/test/Makefile b/test/Makefile
index df46688..3e6e656 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -3,12 +3,19 @@ EXP = '^ns/(?!.*(tty|pty))'
.FORCE:
+all: .FORCE
+ $(MAKE) zdtm
+ $(MAKE) -C fault-injection
+
zdtm: .FORCE
$(MAKE) zdtm_ns
for t in $(shell echo "$(TST)" | tr ' ' '\n' | grep -Pv $(EXP)); do \
$(MAKE) $$t || break; \
done
-
+
+fault-injection: .FORCE
+ $(MAKE) -C fault-injection
+
zdtm_ns: $(shell echo "$(TST)" | tr ' ' '\n' | grep -P $(EXP))
$(TST):
./zdtm.sh $(@) &> $(subst /,_,$@).log
diff --git a/test/fault-injection/Makefile b/test/fault-injection/Makefile
new file mode 100644
index 0000000..501e37f
--- /dev/null
+++ b/test/fault-injection/Makefile
@@ -0,0 +1,2 @@
+all:
+ stap -g -d ../../criu parasite.stp -c 'bash -x ../zdtm.sh -d static/sigpending'
diff --git a/test/fault-injection/parasite.stp b/test/fault-injection/parasite.stp
new file mode 100644
index 0000000..0b1a400
--- /dev/null
+++ b/test/fault-injection/parasite.stp
@@ -0,0 +1,32 @@
+global i
+
+probe process("../../criu").begin
+{
+ i = 0;
+}
+
+probe process("../../criu").function("__parasite_execute_daemon")
+{
+ printf("%s\n", $$parms);
+
+ if (i++ > 3) {
+ printf("Send invalid command to parasite\n");
+ $cmd = -1;
+ }
+}
+
+probe process("../../criu").function("__parasite_execute_daemon").return
+{
+ printf("%d\n", $return);
+}
+
+probe process("../../criu").function("main").return
+{
+ printf("criu exits with code %d\n", $return);
+ if ($return)
+ $return = 0;
+ else {
+ printf("criu exited with zero code\n");
+ $return = 1;
+ }
+}
--
1.8.2
More information about the CRIU
mailing list