[cr_tests PATCH 1/1] process-tree tests: several changes

Serge E. Hallyn serue at us.ibm.com
Wed Jul 1 20:43:07 PDT 2009


Make the freeze() function work right.

Use ns_exec -g and drop the use of ns cgroup.

Don't restart with ns_exec.  Use mktree --pids and --pidns
to create pidns.

run-ptree1.sh now passes for me.  run-pthread1.sh does not
(checkpoint: Resource temporarily unavailable).

Signed-off-by: Serge Hallyn <serue at us.ibm.com>
---
 process-tree/run-pthread1.sh |   36 +++++++++++++++---------------------
 process-tree/run-ptree1.sh   |   36 +++++++++++++++---------------------
 2 files changed, 30 insertions(+), 42 deletions(-)

diff --git a/process-tree/run-pthread1.sh b/process-tree/run-pthread1.sh
index 4a29e7c..d217c4d 100755
--- a/process-tree/run-pthread1.sh
+++ b/process-tree/run-pthread1.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-freezermountpoint=/cgroups
+freezermountpoint=/cgroup
 CHECKPOINT=".."
 
 # NOTE: As of ckpt-v15-dev, the --container option to 'ckpt' causes this
@@ -27,26 +27,22 @@ CHECKPOINT_DONE="checkpoint-done"
 LOGS_DIR="logs.d"
 
 NS_EXEC="../ns_exec"
-NS_EXEC_ARGS="-cpuimP $TEST_PID_FILE"
+NS_EXEC_ARGS="-cgpuimP $TEST_PID_FILE"
 
 freeze()
 {
 	$ECHO "\t - Freezing $1"
-	$ECHO FROZEN > ${freezermountpoint}/$1/freezer.state
-	ret=$?
-	if [ $ret -ne 0 ]; then
-		$ECHO "***** FAIL: \'echo FROZEN \> $state\' returned $ret"
-	fi
+	fnam="${freezermountpoint}/$1/freezer.state"
+	$ECHO FROZEN > $fnam
+	while [ `cat $fnam` != "FROZEN" ]; do
+		$ECHO FROZEN > $fnam
+	done
 }
 
 unfreeze()
 {
 	$ECHO "\t - Unfreezing $1"
 	$ECHO THAWED > ${freezermountpoint}/$1/freezer.state
-	ret=$?
-	if [ $ret -ne 0 ]; then
-		$ECHO "***** FAIL: \'echo THAWED \> $state\' returned $ret"
-	fi
 }
 
 cleancgroup()
@@ -110,7 +106,7 @@ function restart_container
 {
 	local ret;
 
-	cmdline="$NS_EXEC $NS_EXEC_ARGS -- $MKTREE --no-pids"
+	cmdline="$MKTREE --pids --pidns --wait"
 	$ECHO "\t- $cmdline"
 
 	sleep 1
@@ -156,21 +152,20 @@ function restore_fs_snapshot()
 
 # Check freezer mount point
 line=`grep freezer /proc/mounts`
-$ECHO $line | grep "\<ns\>"
 if [ $? -ne 0 ]; then
-	$ECHO "please mount freezer and ns cgroups"
-	$ECHO "  mkdir /cgroups"
-	$ECHO "  mount -t cgroup -o freezer,ns cgroup /cgroups"
+	$ECHO "please mount freezer cgroup"
+	$ECHO "  mkdir /cgroup"
+	$ECHO "  mount -t cgroup -o freezer cgroup /cgroup"
 	exit 1
 fi
 #freezermountpoint=`$ECHO $line | awk '{ print $2 '}`
 
-# Make sure no stray e2 from another run is still going
+# Make sure no stray pthread1 from another run is still going
 killall $TEST_CMD > $SCRIPT_LOG 2>&1
 
 > $SCRIPT_LOG;
 cnt=1
-while [ 1 ]; do
+while [ $cnt -lt 15 ]; do
 	$ECHO "===== Iteration $cnt"
 
 	# Remove any 'state' files, start the app and let it tell us
@@ -214,11 +209,10 @@ while [ 1 ]; do
 	$ECHO "\t- num_pids1 $num_pids1, num_pids2 $num_pids2";
 
 	# ns_exec pid is parent-pid of restarted-container-init
-	cinit_pid=`cat $TEST_PID_FILE`;
-	nspid=`awk '/PPid:/ {print $2}' /proc/$cinit_pid/status`
+	nspid=`pidof mktree`
 
 	if [ "x$nspid" == "x" ]; then
-		$ECHO "***** FAIL: Can't find pid of $NS_EXEC"
+		$ECHO "***** FAIL: Can't find pid of $MKTREE"
 		exit 1;
 	fi
 	
diff --git a/process-tree/run-ptree1.sh b/process-tree/run-ptree1.sh
index bc283f6..83d7bf8 100755
--- a/process-tree/run-ptree1.sh
+++ b/process-tree/run-ptree1.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-freezermountpoint=/cgroups
+freezermountpoint=/cgroup
 BASE_DIR=".."
 
 CR=`which ckpt`
@@ -28,27 +28,23 @@ CHECKPOINT_DONE="checkpoint-done"
 INPUT_DATA="input.data";
 
 NS_EXEC="$BASE_DIR/ns_exec"
-NS_EXEC_ARGS="-cpuimP $TEST_PID_FILE"
+NS_EXEC_ARGS="-cgpuimP $TEST_PID_FILE"
 
 
 freeze()
 {
 	$ECHO "\t - Freezing $1"
-	$ECHO FROZEN > ${freezermountpoint}/$1/freezer.state
-	ret=$?
-	if [ $ret -ne 0 ]; then
-		$ECHO "***** FAIL: \'echo FROZEN \> $state\' returned $ret"
-	fi
+	fnam="${freezermountpoint}/$1/freezer.state"
+	$ECHO FROZEN > $fnam
+	while [ `cat $fnam` != "FROZEN" ]; do
+		$ECHO FROZEN > $fnam
+	done
 }
 
 unfreeze()
 {
 	$ECHO "\t - Unfreezing $1"
 	$ECHO THAWED > ${freezermountpoint}/$1/freezer.state
-	ret=$?
-	if [ $ret -ne 0 ]; then
-		$ECHO "***** FAIL: \'echo THAWED \> $state\' returned $ret"
-	fi
 }
 
 cleancgroup()
@@ -112,7 +108,7 @@ function restart_container
 {
 	local ret;
 
-	cmdline="$NS_EXEC $NS_EXEC_ARGS -- $MKTREE --no-pids"
+	cmdline="$MKTREE --pids --pidns --wait"
 	$ECHO "\t- $cmdline"
 
 	sleep 1
@@ -158,16 +154,15 @@ function restore_fs_snapshot()
 
 # Check freezer mount point
 line=`grep freezer /proc/mounts`
-$ECHO $line | grep "\<ns\>"
 if [ $? -ne 0 ]; then
-	$ECHO "please mount freezer and ns cgroups"
-	$ECHO "  mkdir /cgroups"
-	$ECHO "  mount -t cgroup -o freezer,ns cgroup /cgroups"
+	$ECHO "please mount freezer cgroup"
+	$ECHO "  mkdir /cgroup"
+	$ECHO "  mount -t cgroup -o freezer cgroup /cgroup"
 	exit 1
 fi
 #freezermountpoint=`$ECHO $line | awk '{ print $2 '}`
 
-# Make sure no stray e2 from another run is still going
+# Make sure no stray ptree1 from another run is still going
 killall $TEST_CMD > $SCRIPT_LOG 2>&1
 
 if [ ! -d $LOGS_DIR ]; then
@@ -188,7 +183,7 @@ fi
 
 > $SCRIPT_LOG;
 cnt=1
-while [ 1 ]; do
+while [ $cnt -lt 15 ]; do
 	$ECHO "===== Iteration $cnt"
 
 	# Remove any 'state' files, start the app and let it tell us
@@ -234,11 +229,10 @@ while [ 1 ]; do
 	$ECHO "\t- num_pids1 $num_pids1, num_pids2 $num_pids2";
 
 	# ns_exec pid is parent-pid of restarted-container-init
-	cinit_pid=`cat $TEST_PID_FILE`;
-	nspid=`awk '/PPid:/ {print $2}' /proc/$cinit_pid/status`
+	nspid=`pidof mktree`
 
 	if [ "x$nspid" == "x" ]; then
-		$ECHO "***** FAIL: Can't find pid of $NS_EXEC"
+		$ECHO "***** FAIL: Can't find pid of $MKTREE"
 		exit 1;
 	fi
 	
-- 
1.6.1.1



More information about the Containers mailing list