[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