[CRIU] [PATCH 5/6] RFC: zdtm: Remove run logic from makefiles

Christopher Covington cov at codeaurora.org
Wed Aug 6 15:02:13 PDT 2014


While `make` is a very useful build-time tool, requiring it at
run-time increases the complexity required of target root
filesystems, which can in turn make testing across multiple
architectures more difficult. Move all run-time logic into the shell
script. As part of this transition, don't keep a list of which tests
need which options, but figure this out by invoking the test once
with the --help parameter before running it with the real parameters.

Signed-off-by: Christopher Covington <cov at codeaurora.org>
---
 test/zdtm.sh                       | 21 +++++++++--
 test/zdtm/live/static/Makefile     | 75 ++------------------------------------
 test/zdtm/live/streaming/Makefile  | 35 +-----------------
 test/zdtm/live/transition/Makefile | 33 +----------------
 4 files changed, 23 insertions(+), 141 deletions(-)

diff --git a/test/zdtm.sh b/test/zdtm.sh
index 878d70c..30ea3ec 100755
--- a/test/zdtm.sh
+++ b/test/zdtm.sh
@@ -357,8 +357,6 @@ construct_root()
 	chmod 0777 $tmpdir
 }
 
-export MAKEFLAGS=--no-print-directory
-
 start_test()
 {
 	local tdir=$1
@@ -367,7 +365,11 @@ start_test()
 	export ZDTM_ROOT
 
 	killall -9 $tname > /dev/null 2>&1
-	make -C $tdir $tname.cleanout
+	rm -fr	$test.pid	\
+		$test.out*	\
+		$test.test*	\
+		$test.*.test	\
+		$test.state
 
 	unset ZDTM_UID
 	unset ZDTM_GID
@@ -396,7 +398,18 @@ start_test()
 		rm -f $ZDTM_PIDFILE
 	fi
 
-	if ! make -C $tdir $tname.pid; then
+	local args=`$test --help 2>&1 | sed -nr				\
+		-e "s%.*(--pidfile=).*%\1$test.pid%p"			\
+		-e "s%.*(--outfile=).*%\1$test.out%p"			\
+		-e "s%.*(--dirname=).*%\1$test.dir.test%p"		\
+		-e "s%.*(--envname=).*%\1ENV_00_TEST%p"			\
+		-e "s%.*(--filename=).*%\1$test.test%p"			\
+		-e "s%.*(--mask=).*%\10345%p"				\
+		-e "s%.*(--name_slave=).*%\1$test.slave.test%p"		\
+		-e "s%.*(--name_master=).*%\1$test.master.test%p"	\
+		-e "s%.*--(arg[1-3])=.*%--\1=\1%p"`
+
+	if ! $test $args; then
 		echo ERROR: fail to start $test
 		return 1
 	fi
diff --git a/test/zdtm/live/static/Makefile b/test/zdtm/live/static/Makefile
index d3d42a1..3a165ca 100644
--- a/test/zdtm/live/static/Makefile
+++ b/test/zdtm/live/static/Makefile
@@ -6,7 +6,7 @@ override CPPFLAGS += -I$(LIBDIR)
 CFLAGS	= -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
 CFLAGS	+= $(USERCFLAGS)
 
-TST_NOFILE	=				\
+TST		=				\
 		busyloop00			\
 		sleeping00			\
 		pid00				\
@@ -113,9 +113,6 @@ TST_NOFILE	=				\
 		clean_mntns			\
 		dumpable01			\
 		dumpable02			\
-#		jobctl00			\
-
-TST_FILE	=				\
 		write_read00			\
 		write_read01			\
 		write_read02			\
@@ -150,8 +147,6 @@ TST_FILE	=				\
 		file_locks01			\
 		netns-nf			\
 		maps_file_prot			\
-
-TST_DIR		=				\
 		cwd00				\
 		cwd01				\
 		cwd02				\
@@ -164,33 +159,18 @@ TST_DIR		=				\
 		cgroup00			\
 		rmdir_open			\
 		cgroup01			\
-
-TST_DIR_FILE	=				\
 		chroot				\
-		chroot-file
-
-TST		=				\
-		$(TST_NOFILE)			\
-		$(TST_FILE)			\
-		$(TST_DIR)			\
-		$(TST_DIR_FILE)			\
+		chroot-file			\
 		env00				\
 		fifo-rowo-pair			\
 		umask00				\
 		cmdlinenv00			\
-
-TST_STATE	=				\
 		conntracks			\
 		route_rules			\
 
-
 SRC	= $(TST:%=%.c)
 OBJ	= $(SRC:%.c=%.o)
 DEP	= $(SRC:%.c=%.d)
-PID	= $(TST:%=%.pid)
-OUT	= $(TST:%=%.out)
-STATE	= $(TST_STATE:%=%.state)
-STATE_OUT	= $(TST_STATE:%=%.out)
 
 DEPEND.c = $(COMPILE.c) -MM -MP
 %.d:	%.c
@@ -203,55 +183,6 @@ install: all
 inotify_system_nodel.c: inotify_system.c
 	ln -s inotify_system.c inotify_system_nodel.c
 
-$(TST_NOFILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out
-
-$(TST_FILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --filename=$<.test
-
-$(TST_DIR:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --dirname=$<.test
-
-$(TST_DIR_FILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --dirname=$<.dir.test --filename=$<.test
-
-cmdlinenv00.pid: cmdlinenv00
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --arg1=arg1 --arg2=arg2 --arg3=arg3
-
-env00.pid:	env00
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --envname=ENV_00_TEST
-umask00.pid:	umask00
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --mask=0345
-
-fifo-rowo-pair.pid: fifo-rowo-pair
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --name_master=$<.master.test --name_slave=$<.slave.test
-
-%.out:	%.pid %
-	-kill -TERM `cat $<`
-
-$(TST_STATE:%=%.state):	%.state: %
-	$(<D)/$(<F) --statefile=$@ --outfile=$<.out start
-
-$(TST_STATE:%=%.out): %.out: %
-	-$(<D)/$(<F) --statefile=$<.state --outfile=$@ stop
-
-start:	$(PID) $(STATE)
-
-%.is_running:	%.pid
-	kill -0 `cat $<`
-
-check_start:	$(PID:%.pid=%.is_running)
-
-stop:	$(STATE_OUT)
-	-kill -TERM `cat *.pid`
-
-WAIT_TIME=10
-wait_stop:
-	-for ((i = 0; i < $(WAIT_TIME); i++)); do \
-		kill -0 `cat *.pid 2>/dev/null` 2>/dev/null || break; \
-		sleep 1; \
-	done
-
 $(TST):	$(LIB)
 
 futex.o:		override CFLAGS += -pthread
@@ -304,7 +235,7 @@ criu-rtc.pb-c.c: criu-rtc.proto
 criu-rtc.so: criu-rtc.c criu-rtc.pb-c.c
 	$(CC) -g -Wall -shared -nostartfiles criu-rtc.c criu-rtc.pb-c.c -o criu-rtc.so -iquote ../../../../include -fPIC $(USERCFLAGS)
 
-.PHONY:	force clean cleandep cleanout realclean start check_start stop wait_stop
+.PHONY:	force clean cleandep cleanout realclean
 
 ifeq ($(filter-out no-deps-targets, $(MAKECMDGOALS)),)
 -include $(DEP)
diff --git a/test/zdtm/live/streaming/Makefile b/test/zdtm/live/streaming/Makefile
index 1149dbe..5b4e02d 100644
--- a/test/zdtm/live/streaming/Makefile
+++ b/test/zdtm/live/streaming/Makefile
@@ -6,7 +6,7 @@ override CPPFLAGS += -I$(LIBDIR)
 CFLAGS	= -g -O2 -Wall -Werror -fno-strict-aliasing
 CFLAGS	+= $(USERCFLAGS)
 
-TST_NOFILE	=	\
+TST		=		\
 		pipe_loop00	\
 		pipe_shared00	\
 		socket_loop00	\
@@ -14,18 +14,13 @@ TST_NOFILE	=	\
 		file_aio	\
 		socket-tcp	\
 		socket-tcp6	\
-
-TST_FILE	=	\
 		unix_sock	\
 		fifo_dyn	\
 		fifo_loop	\
 
-TST	= $(TST_NOFILE) $(TST_FILE)
 SRC	= $(TST:%=%.c)
 OBJ	= $(SRC:%.c=%.o)
 DEP	= $(SRC:%.c=%.d)
-PID	= $(TST:%=%.pid)
-OUT	= $(TST:%=%.out)
 
 DEPEND.c = $(COMPILE.c) -MM -MP
 %.d:	%.c
@@ -35,32 +30,6 @@ all:	$(TST)
 install: all
 .PHONY: all install
 
-$(TST_NOFILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out
-
-$(TST_FILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --filename=$<.test
-
-%.out:	%.pid %
-	-kill -TERM `cat $<`
-
-start:	$(PID)
-
-%.is_running:	%.pid
-	kill -0 `cat $<`
-
-check_start:	$(PID:%.pid=%.is_running)
-
-stop:
-	-kill -TERM `cat *.pid`
-
-WAIT_TIME=10
-wait_stop:
-	-for ((i = 0; i < $(WAIT_TIME); i++)); do \
-		kill -0 `cat *.pid 2>/dev/null` 2>/dev/null || break; \
-		sleep 1; \
-	done
-
 $(TST):	$(LIB)
 
 file_aio: override LDLIBS += -lrt -pthread
@@ -84,7 +53,7 @@ cleanout:
 
 realclean:	cleandep cleanout
 
-.PHONY:	force clean cleandep cleanout realclean start check_start stop wait_stop
+.PHONY:	force clean cleandep cleanout realclean
 
 ifeq ($(filter-out no-deps-targets, $(MAKECMDGOALS)),)
 -include $(DEP)
diff --git a/test/zdtm/live/transition/Makefile b/test/zdtm/live/transition/Makefile
index 66b9589..4f01c9c 100644
--- a/test/zdtm/live/transition/Makefile
+++ b/test/zdtm/live/transition/Makefile
@@ -6,7 +6,7 @@ override CPPFLAGS += -I$(LIBDIR)
 CFLAGS	= -g -O2 -Wall -Werror
 CFLAGS	+= $(USERCFLAGS)
 
-TST_NOFILE	=	\
+TST		=	\
 		ipc		\
 		ptrace		\
 		epoll		\
@@ -14,16 +14,11 @@ TST_NOFILE	=	\
 		fork2		\
 		thread-bomb	\
 		maps007		\
-
-TST_FILE	=	\
 		file_read	\
 
-TST	= $(TST_NOFILE) $(TST_FILE)
 SRC	= $(TST:%=%.c)
 OBJ	= $(SRC:%.c=%.o)
 DEP	= $(SRC:%.c=%.d)
-PID	= $(TST:%=%.pid)
-OUT	= $(TST:%=%.out)
 
 DEPEND.c = $(COMPILE.c) -MM -MP
 %.d:	%.c
@@ -33,32 +28,6 @@ all:	$(TST)
 install: all
 .PHONY: all install
 
-$(TST_NOFILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out
-
-$(TST_FILE:%=%.pid):	%.pid:	%
-	$(<D)/$(<F) --pidfile=$@ --outfile=$<.out --filename=$<.test
-
-%.out:	%.pid %
-	-kill -TERM `cat $<`
-
-start:	$(PID)
-
-%.is_running:	%.pid
-	kill -0 `cat $<`
-
-check_start:	$(PID:%.pid=%.is_running)
-
-stop:
-	-kill -TERM `cat *.pid`
-
-WAIT_TIME=10
-wait_stop:
-	-for ((i = 0; i < $(WAIT_TIME); i++)); do \
-		kill -0 `cat *.pid 2>/dev/null` 2>/dev/null || break; \
-		sleep 1; \
-	done
-
 $(TST):	$(LIB)
 
 ptrace.o:	override CFLAGS += -pthread
-- 
Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by the Linux Foundation.



More information about the CRIU mailing list