[PATCH 06/11] cr_tests: Cleanup error handling in futex/run.sh

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The previous trap handler didn't properly handle errors. It could leave
extra tasks around if the group was frozen or checkpoint-done hadn't
been touched. Add code to handle the errors as a special do_err()
function so that we don't bother the body of the test loop very much.

We use an error message to indicate if the problem seems to be a test
failure ("FAIL") or if it's probably the test itself that is broken
("BROK"). This means we don't constantly need to change the trap
-- just assign a different value to err_msg before and after executing
the interesting parts of the test.

We also need to recover if the cgroup has been frozen. Add that to the
trap temporarily.

Also, to avoid spurious messages about "break" only being valid inside
a loop, reset the trap after exiting the loop.

Signed-off-by: Matt Helsley <matthltc@xxxxxxxxxx>
Cc: containers@xxxxxxxxxxxxxxxxxxxxxxxxxx
---
 futex/run.sh |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/futex/run.sh b/futex/run.sh
index e54c228..434a844 100755
--- a/futex/run.sh
+++ b/futex/run.sh
@@ -37,12 +37,27 @@ fi
 # mkdir /cg/1
 # chown -R $(id --name -u).$(id --name -g) /cg/1
 
+# Most failures indicate a broken test environment
+err_msg="BROK"
+function do_err()
+{
+	if [ -n "${TEST_PID}" ]; then
+		local PIDLIST=( $(ps --ppid ${TEST_PID} -o pid=) ${TEST_PID} )
+		kill ${PIDLIST[@]}
+	fi
+	echo "${err_msg}"
+	((failed++))
+	wait
+}
+
+failed=0
+
 NUMTESTS=${#TESTS[@]}
 CURTEST=0
 
 while [ $CURTEST -lt $NUMTESTS ]; do
 	T=${TESTS[$CURTEST]}
-	trap 'break' ERR EXIT
+	trap 'do_err; break' ERR EXIT
 	rm -f ./checkpoint-* TBROK
 	echo "Running test: ${T}"
 	./${T} &
@@ -51,8 +66,12 @@ while [ $CURTEST -lt $NUMTESTS ]; do
 		sleep 1
 	done
 	freeze
+	trap 'thaw; do_err; break' ERR EXIT
+	err_msg="FAIL"
 	ckpt ${TEST_PID} > checkpoint-${T}
+	err_msg="BROK"
 	thaw
+	trap 'do_err; break' ERR EXIT
 	touch "./checkpoint-done"
 	wait ${TEST_PID}
 	retval=$?
@@ -78,9 +97,10 @@ while [ $CURTEST -lt $NUMTESTS ]; do
 	else
 		echo PASS
 	fi
-	trap "" ERR EXIT
+	trap '' ERR EXIT
 	CURTEST=$((CURTEST+1))
 done
+trap '' ERR EXIT
 
 #rm -f ./checkpoint-*
 
-- 
1.5.6.3


_______________________________________________
Containers mailing list
Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/containers

[Index of Archives]     [Cgroups]     [Netdev]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux