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
next prev parent 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.