All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cristian Marussi <cristian.marussi@arm.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2 1/4]  cgroup_regression_test.sh ported to newlib
Date: Thu, 20 Dec 2018 18:21:46 +0000	[thread overview]
Message-ID: <20181220182149.48326-2-cristian.marussi@arm.com> (raw)
In-Reply-To: <20181220182149.48326-1-cristian.marussi@arm.com>

Ported to newlib and removed most global vars usage.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 .../cgroup/cgroup_regression_test.sh          | 217 +++++++++---------
 1 file changed, 110 insertions(+), 107 deletions(-)

diff --git a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
index 6cfc63866..1b4dfb45e 100755
--- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
+++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
@@ -22,71 +22,83 @@
 ##                                                                            ##
 ################################################################################
 
-cd $LTPROOT/testcases/bin
+TST_TESTFUNC=do_test
+TST_SETUP=do_setup
+TST_CLEANUP=do_cleanup
+TST_CNT=10
+TST_NEEDS_ROOT=1
+TST_NEEDS_CMDS="dmesg mountpoint mount umount cat kill find mkdir rmdir grep"
 
-export TCID="cgroup_regression_test"
-export TST_TOTAL=10
-export TST_COUNT=1
+. tst_test.sh
 
-failed=0
+do_setup()
+{
+	cd $LTPROOT/testcases/bin
 
-if tst_kvcmp -lt "2.6.29"; then
-	tst_brkm TCONF ignored "test must be run with kernel 2.6.29 or newer"
-	exit 32
-fi
+	mkdir cgroup/
 
-if [ ! -f /proc/cgroups ]; then
-	tst_brkm TCONF ignored "Kernel does not support for control groups; skipping testcases";
-	exit 32
-fi
+	if tst_kvcmp -lt "2.6.29"; then
+		tst_brk TCONF ignored "test must be run with kernel 2.6.29 or newer"
+	fi
 
-if [ "x$(id -ru)" != x0 ]; then
-	tst_brkm TCONF ignored "Test must be run as root"
-	exit 32
-fi
+	if [ ! -f /proc/cgroups ]; then
+		tst_brk TCONF ignored "Kernel does not support for control groups; skipping testcases";
+	fi
 
-dmesg -c > /dev/null
-nr_bug=`dmesg | grep -c "kernel BUG"`
-nr_null=`dmesg | grep -c "kernel NULL pointer dereference"`
-nr_warning=`dmesg | grep -c "^WARNING"`
-nr_lockdep=`dmesg | grep -c "possible recursive locking detected"`
+	dmesg -c > /dev/null
+	NR_BUG=`dmesg | grep -c "kernel BUG"`
+	NR_NULL=`dmesg | grep -c "kernel NULL pointer dereference"`
+	NR_WARNING=`dmesg | grep -c "^WARNING"`
+	NR_LOCKDEP=`dmesg | grep -c "possible recursive locking detected"`
+}
+
+do_cleanup()
+{
+	cd $LTPROOT/testcases/bin
+
+	if mountpoint -q cgroup/
+	then
+		find cgroup/ -maxdepth 1 -depth -exec rmdir {} +
+		umount cgroup/
+		rmdir cgroup/
+	fi
+}
 
 # check_kernel_bug - check if some kind of kernel bug happened
 check_kernel_bug()
 {
-	new_bug=`dmesg | grep -c "kernel BUG"`
-	new_null=`dmesg | grep -c "kernel NULL pointer dereference"`
-	new_warning=`dmesg | grep -c "^WARNING"`
-	new_lockdep=`dmesg | grep -c "possible recursive locking detected"`
+	local new_bug=`dmesg | grep -c "kernel BUG"`
+	local new_null=`dmesg | grep -c "kernel NULL pointer dereference"`
+	local new_warning=`dmesg | grep -c "^WARNING"`
+	local new_lockdep=`dmesg | grep -c "possible recursive locking detected"`
 
 	# no kernel bug is detected
-	if [ $new_bug -eq $nr_bug -a $new_warning -eq $nr_warning -a \
-	     $new_null -eq $nr_null -a $new_lockdep -eq $nr_lockdep ]; then
+	if [ $new_bug -eq $NR_BUG -a $new_warning -eq $NR_WARNING -a \
+	     $new_null -eq $NR_NULL -a $new_lockdep -eq $NR_LOCKDEP ]; then
 		return 1
 	fi
 
 	# some kernel bug is detected
-	if [ $new_bug -gt $nr_bug ]; then
-		tst_resm TFAIL "kernel BUG was detected!"
+	if [ $new_bug -gt $NR_BUG ]; then
+		tst_res TFAIL "kernel BUG was detected!"
 	fi
-	if [ $new_warning -gt $nr_warning ]; then
-		tst_resm TFAIL "kernel WARNING was detected!"
+	if [ $new_warning -gt $NR_WARNING ]; then
+		tst_res TFAIL "kernel WARNING was detected!"
 	fi
-	if [ $new_null -gt $nr_null ]; then
-		tst_resm TFAIL "kernel NULL pointer dereference!"
+	if [ $new_null -gt $NR_NULL ]; then
+		tst_res TFAIL "kernel NULL pointer dereference!"
 	fi
-	if [ $new_lockdep -gt $nr_lockdep ]; then
-		tst_resm TFAIL "kernel lockdep warning was detected!"
+	if [ $new_lockdep -gt $NR_LOCKDEP ]; then
+		tst_res TFAIL "kernel lockdep warning was detected!"
 	fi
 
-	nr_bug=$new_bug
-	nr_null=$new_null
-	nr_warning=$new_warning
-	nr_lockdep=$new_lockdep
+	NR_BUG=$new_bug
+	NR_NULL=$new_null
+	NR_WARNING=$new_warning
+	NR_LOCKDEP=$new_lockdep
 
 	echo "check_kernel_bug found something!"
 	dmesg
-	failed=1
 	return 0
 }
 
@@ -107,8 +119,7 @@ test_1()
 
 	mount -t cgroup -o none,name=foo cgroup cgroup/
 	if [ $? -ne 0 ]; then
-		tst_resm TFAIL "failed to mount cgroup filesystem"
-		failed=1
+		tst_res TFAIL "failed to mount cgroup filesystem"
 		/bin/kill -SIGTERM $!
 		return
 	fi
@@ -116,7 +127,7 @@ test_1()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel bug was found"
+		tst_res TPASS "no kernel bug was found"
 	fi
 
 	/bin/kill -SIGTERM $!
@@ -132,11 +143,13 @@ test_1()
 #---------------------------------------------------------------------------
 test_2()
 {
+	local val1
+	local val2
+
 	mount -t cgroup -o none,name=foo cgroup cgroup/
 	if [ $? -ne 0 ]; then
-		tst_resm TFAIL "Failed to mount cgroup filesystem"
-		failed=1
-		return 1
+		tst_res TFAIL "Failed to mount cgroup filesystem"
+		return
 	fi
 
 	echo 0 > cgroup/notify_on_release
@@ -148,16 +161,15 @@ test_2()
 	val2=`cat cgroup/1/notify_on_release`
 
 	if [ $val1 -ne 0 -o $val2 -ne 1 ]; then
-		tst_resm TFAIL "wrong notify_on_release value"
-		failed=1
+		tst_res TFAIL "wrong notify_on_release value"
 	else
-		tst_resm TPASS "notify_on_release is inherited"
+		tst_res TPASS "notify_on_release is inherited"
 	fi
 
 	rmdir cgroup/0 cgroup/1
 	umount cgroup/
 
-	return $failed
+	return
 }
 
 #---------------------------------------------------------------------------
@@ -173,14 +185,14 @@ test_3()
 	local cpu_subsys_path
 
 	if [ ! -e /proc/sched_debug ]; then
-		tst_resm TCONF "CONFIG_SCHED_DEBUG is not enabled"
+		tst_res TCONF "CONFIG_SCHED_DEBUG is not enabled"
 		return
 	fi
 
 	if grep -q -w "cpu" /proc/cgroups ; then
 		cpu_subsys_path=$(grep -w cpu /proc/mounts | awk '{ print $2 }')
 	else
-		tst_resm TCONF "CONFIG_CGROUP_SCHED is not enabled"
+		tst_res TCONF "CONFIG_CGROUP_SCHED is not enabled"
 		return
 	fi
 
@@ -188,8 +200,7 @@ test_3()
 	if [ -z "$cpu_subsys_path" ]; then
 		mount -t cgroup -o cpu xxx cgroup/
 		if [ $? -ne 0 ]; then
-			tst_resm TFAIL "Failed to mount cpu subsys"
-			failed=1
+			tst_res TFAIL "Failed to mount cpu subsys"
 			return
 		fi
 		cpu_subsys_path=cgroup
@@ -207,7 +218,7 @@ test_3()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel bug was found"
+		tst_res TPASS "no kernel bug was found"
 	fi
 
 	rmdir $cpu_subsys_path/* 2> /dev/null
@@ -223,15 +234,17 @@ test_3()
 #---------------------------------------------------------------------------
 test_4()
 {
+	local lines
+
 	if [ ! -e /proc/lockdep ]; then
-		tst_resm TCONF "CONFIG_LOCKDEP is not enabled"
+		tst_res TCONF "CONFIG_LOCKDEP is not enabled"
 		return
 	fi
 
 	# MAX_LOCKDEP_SUBCLASSES is 8, so number of subsys should be > 8
 	lines=`cat /proc/cgroups | wc -l`
 	if [ $lines -le 9 ]; then
-		tst_resm TCONF "require more than 8 cgroup subsystems"
+		tst_res TCONF "require more than 8 cgroup subsystems"
 		return
 	fi
 
@@ -242,11 +255,10 @@ test_4()
 
 	dmesg | grep -q "MAX_LOCKDEP_SUBCLASSES too low"
 	if [ $? -eq 0 ]; then
-		tst_resm TFAIL "lockdep BUG was found"
-		failed=1
+		tst_res TFAIL "lockdep BUG was found"
 		return
 	else
-		tst_resm TPASS "no lockdep BUG was found"
+		tst_res TPASS "no lockdep BUG was found"
 	fi
 }
 
@@ -264,14 +276,14 @@ test_5()
 	local failing
 	local mntpoint
 
-	lines=`cat /proc/cgroups | wc -l`
+	local lines=`cat /proc/cgroups | wc -l`
 	if [ $lines -le 2 ]; then
-		tst_resm TCONF "require at least 2 cgroup subsystems"
+		tst_res TCONF "require at least 2 cgroup subsystems"
 		return
 	fi
 
-	subsys1=`tail -n 1 /proc/cgroups | awk '{ print $1 }'`
-	subsys2=`tail -n 2 /proc/cgroups | head -1 | awk '{ print $1 }'`
+	local subsys1=`tail -n 1 /proc/cgroups | awk '{ print $1 }'`
+	local subsys2=`tail -n 2 /proc/cgroups | head -1 | awk '{ print $1 }'`
 
 	# Accounting here for the fact that the chosen subsystems could
 	# have been already previously mounted at boot time: in such a
@@ -287,8 +299,7 @@ test_5()
 		failing=$subsys1
 		mount -t cgroup -o $subsys1,$subsys2 xxx $mntpoint/
 		if [ $? -ne 0 ]; then
-			tst_resm TFAIL "mount $subsys1 and $subsys2 failed"
-			failed=1
+			tst_res TFAIL "mount $subsys1 and $subsys2 failed"
 			return
 		fi
 	else
@@ -302,10 +313,9 @@ test_5()
 	# This 2nd mount has been properly configured to fail
 	mount -t cgroup -o $failing xxx $mntpoint/ 2> /dev/null
 	if [ $? -eq 0 ]; then
-		tst_resm TFAIL "mount $failing should fail"
+		tst_res TFAIL "mount $failing should fail"
 		# Do NOT unmount pre-existent mountpoints...
-		[ -z "$mounted" ] && umount $mntpoint
-		failed=1
+		[ -z "$mounted" ] && umount $mntpoint/
 		return
 	fi
 
@@ -321,7 +331,7 @@ test_5()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel bug was found"
+		tst_res TPASS "no kernel bug was found"
 	fi
 
 	# clean up
@@ -329,7 +339,7 @@ test_5()
 	wait $!
 	rmdir $mntpoint/0
 	# Do NOT unmount pre-existent mountpoints...
-	[ -z "$mounted" ] && umount $mntpoint
+	[ -z "$mounted" ] && umount $mntpoint/
 }
 
 #---------------------------------------------------------------------------
@@ -342,15 +352,15 @@ test_6()
 {
 	grep -q -w "ns" /proc/cgroups
 	if [ $? -ne 0 ]; then
-		tst_resm TCONF "CONFIG_CGROUP_NS"
+		tst_res TCONF "CONFIG_CGROUP_NS"
 		return
 	fi
 
 	# run the test for 30 secs
 	./test_6_1.sh &
-	pid1=$!
+	local pid1=$!
 	./test_6_2 &
-	pid2=$!
+	local pid2=$!
 
 	sleep 30
 	/bin/kill -SIGUSR1 $pid1
@@ -360,7 +370,7 @@ test_6()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel bug was found"
+		tst_res TPASS "no kernel bug was found"
 	fi
 
 	# clean up
@@ -379,12 +389,12 @@ test_6()
 #---------------------------------------------------------------------------
 test_7_1()
 {
-	subsys_path=$(grep -w $subsys /proc/mounts | cut -d ' ' -f 2)
+	local subsys=$1
+	local subsys_path=$(grep -w $subsys /proc/mounts | cut -d ' ' -f 2)
 	if [ -z "$subsys_path" ]; then
 		mount -t cgroup -o $subsys xxx cgroup/
 		if [ $? -ne 0 ]; then
-			tst_resm TFAIL "failed to mount $subsys"
-			failed=1
+			tst_res TFAIL "failed to mount $subsys"
 			return
 		fi
 		subsys_path=cgroup
@@ -407,10 +417,11 @@ test_7_1()
 
 test_7_2()
 {
+	local subsys=$1
+
 	mount -t cgroup -o none,name=foo cgroup cgroup/
 	if [ $? -ne 0 ]; then
-		tst_resm TFAIL "failed to mount cgroup"
-		failed=1
+		tst_res TFAIL "failed to mount cgroup"
 		return
 	fi
 
@@ -441,19 +452,19 @@ test_7_2()
 
 test_7()
 {
-	lines=`cat /proc/cgroups | wc -l`
+	local lines=`cat /proc/cgroups | wc -l`
 	if [ $lines -le 2 ]; then
-		tst_resm TCONF "require at least 2 cgroup subsystems"
+		tst_res TCONF "require at least 2 cgroup subsystems"
 		slt_result $SLT_Untested
 		return
 	fi
 
-	subsys=`tail -n 1 /proc/cgroups | awk '{ print $1 }'`
+	local subsys=`tail -n 1 /proc/cgroups | awk '{ print $1 }'`
 
 	# remount to add new subsystems to the hierarchy
-	i=1
+	local i=1
 	while [ $i -le 2 ] ; do
-		test_7_$i
+		test_7_$i $subsys
 		if [ $? -ne 0 ]; then
 			return
 		fi
@@ -465,7 +476,7 @@ test_7()
 		: $(( i += 1 ))
 	done
 
-	tst_resm TPASS "no kernel bug was found"
+	tst_res TPASS "no kernel bug was found"
 }
 
 #---------------------------------------------------------------------------
@@ -478,22 +489,20 @@ test_8()
 {
 	mount -t cgroup -o none,name=foo cgroup cgroup/
 	if [ $? -ne 0 ]; then
-		tst_resm TFAIL "failed to mount cgroup filesystem"
-		failed=1
+		tst_res TFAIL "failed to mount cgroup filesystem"
 		return
 	fi
 
 	./getdelays -C cgroup/tasks > /dev/null 2>&1
 	if [ $? -eq 0 ]; then
-		tst_resm TFAIL "should have failed to get cgroupstat of tasks file"
+		tst_res TFAIL "should have failed to get cgroupstat of tasks file"
 		umount cgroup/
-		failed=1
 		return
 	fi
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel bug was found"
+		tst_res TPASS "no kernel bug was found"
 	fi
 
 	umount cgroup/
@@ -510,9 +519,9 @@ test_8()
 test_9()
 {
 	./test_9_1.sh &
-	pid1=$!
+	local pid1=$!
 	./test_9_2.sh &
-	pid2=$!
+	local pid2=$!
 
 	sleep 30
 	/bin/kill -SIGUSR1 $pid1 $pid2
@@ -523,7 +532,7 @@ test_9()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel warning was found"
+		tst_res TPASS "no kernel warning was found"
 	fi
 }
 
@@ -537,9 +546,9 @@ test_9()
 test_10()
 {
 	./test_10_1.sh &
-	pid1=$!
+	local pid1=$!
 	./test_10_2.sh &
-	pid2=$!
+	local pid2=$!
 
 	sleep 30
 	/bin/kill -SIGUSR1 $pid1 $pid2
@@ -552,21 +561,15 @@ test_10()
 
 	check_kernel_bug
 	if [ $? -eq 1 ]; then
-		tst_resm TPASS "no kernel warning was found"
+		tst_res TPASS "no kernel warning was found"
 	fi
 }
 
-# main
-
-mkdir cgroup/
-
-for ((cur = 1; cur <= $TST_TOTAL; cur++))
+do_test()
 {
-	export TST_COUNT=$cur
+	local cur=$1
 
 	test_$cur
 }
 
-find cgroup/ -maxdepth 1 -depth -exec rmdir {} +
-
-exit $failed
+tst_run
-- 
2.17.1


  reply	other threads:[~2018-12-20 18:21 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
2018-12-20 18:21 ` Cristian Marussi [this message]
2018-12-21 14:25   ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Petr Vorel
2018-12-21 15:20     ` Cristian Marussi
2018-12-21 18:23       ` Cristian Marussi
2018-12-21 14:35   ` Petr Vorel
2018-12-21 15:27     ` Cristian Marussi
2018-12-20 18:21 ` [LTP] [PATCH v2 2/4] cgroup_regression_test.sh cleanup Cristian Marussi
2018-12-20 18:21 ` [LTP] [PATCH v2 3/4] cgroup_regression_test.sh: added helper Cristian Marussi
2018-12-20 18:21 ` [LTP] [PATCH v2 4/4] cgroup: helpers various fixes Cristian Marussi
2018-12-21 14:01   ` Petr Vorel
2018-12-21 15:29     ` Cristian Marussi
2018-12-21 18:23     ` Cristian Marussi
2018-12-21 13:39 ` [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Petr Vorel
2018-12-21 15:36   ` Cristian Marussi
2018-12-21 15:47     ` Petr Vorel
2018-12-21 18:23       ` Cristian Marussi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181220182149.48326-2-cristian.marussi@arm.com \
    --to=cristian.marussi@arm.com \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.