All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH v2 0/4]  cgroup tests newlib-porting
@ 2018-12-20 18:21 Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-20 18:21 UTC (permalink / raw)
  To: ltp

This series converts cgroup/ regression tests to LTP newlib and performs
a general cleanup as follows:

- remove bashism from all tests' scripts
- mostly remove usage of global vars
- convert to SPDX headers
- expose a controllers' common /proc/mounts parsing function
- rename tests' helpers prefixing them with a test-specific tag to avoid
  name clashes on install: I have not renamed the tests' helpers using
  more specific meaningful name, since all of them performs really
  trivial ops needed and meaningful in the context of the regression-test
  subcase they serve; so I thought it would have been better to keep their
  names as they are now, bound to the subcase they help.

Cristian Marussi (4):
  [LTP] cgroup_regression_test.sh ported to newlib
  [LTP] cgroup_regression_test.sh cleanup
  [LTP] cgroup_regression_test.sh: added helper
  [LTP] cgroup: helpers various fixes



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4]  cgroup_regression_test.sh ported to newlib
  2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
@ 2018-12-20 18:21 ` Cristian Marussi
  2018-12-21 14:25   ` Petr Vorel
  2018-12-21 14:35   ` Petr Vorel
  2018-12-20 18:21 ` [LTP] [PATCH v2 2/4] cgroup_regression_test.sh cleanup Cristian Marussi
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-20 18:21 UTC (permalink / raw)
  To: ltp

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


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 2/4]  cgroup_regression_test.sh cleanup
  2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
@ 2018-12-20 18:21 ` Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 3/4] cgroup_regression_test.sh: added helper Cristian Marussi
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-20 18:21 UTC (permalink / raw)
  To: ltp

Cleanups:
 - removed absolute/relative commands invocations
 - avoid bashism
  + removed bash shebang
  + giving up 'kill' bash-builtin: this needs redefining
    used sigspec strings

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

diff --git a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
index 1b4dfb45e..4e702f2f9 100755
--- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
+++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
 
 ################################################################################
 ##                                                                            ##
@@ -114,13 +114,13 @@ check_kernel_bug()
 #---------------------------------------------------------------------------
 test_1()
 {
-	./fork_processes &
+	fork_processes &
 	sleep 1
 
 	mount -t cgroup -o none,name=foo cgroup cgroup/
 	if [ $? -ne 0 ]; then
 		tst_res TFAIL "failed to mount cgroup filesystem"
-		/bin/kill -SIGTERM $!
+		kill -TERM $!
 		return
 	fi
 	cat cgroup/tasks > /dev/null
@@ -130,7 +130,7 @@ test_1()
 		tst_res TPASS "no kernel bug was found"
 	fi
 
-	/bin/kill -SIGTERM $!
+	kill -TERM $!
 	wait $!
 	umount cgroup/
 }
@@ -212,7 +212,7 @@ test_3()
 	pid2=$!
 
 	sleep 30
-	/bin/kill -SIGUSR1 $pid1 $pid2
+	kill -USR1 $pid1 $pid2
 	wait $pid1
 	wait $pid2
 
@@ -335,7 +335,7 @@ test_5()
 	fi
 
 	# clean up
-	/bin/kill -SIGTERM $! > /dev/null
+	kill -TERM $! > /dev/null
 	wait $!
 	rmdir $mntpoint/0
 	# Do NOT unmount pre-existent mountpoints...
@@ -363,8 +363,8 @@ test_6()
 	local pid2=$!
 
 	sleep 30
-	/bin/kill -SIGUSR1 $pid1
-	/bin/kill -SIGTERM $pid2
+	kill -USR1 $pid1
+	kill -TERM $pid2
 	wait $pid1
 	wait $pid2
 
@@ -409,7 +409,7 @@ test_7_1()
 
 	if [ "$subsys_path" = "cgroup" ]; then
 		mount -t cgroup -o remount xxx cgroup/ 2> /dev/null
-		/bin/kill -SIGTERM $!
+		kill -TERM $!
 		wait $!
 		umount cgroup/
 	fi
@@ -432,7 +432,7 @@ test_7_2()
 	# remount with some subsystems removed
 	# since 2.6.28, this remount will fail
 	mount -t cgroup -o remount,$subsys xxx cgroup/ 2> /dev/null
-	/bin/kill -SIGTERM $!
+	kill -TERM $!
 	wait $!
 	umount cgroup/
 
@@ -493,7 +493,7 @@ test_8()
 		return
 	fi
 
-	./getdelays -C cgroup/tasks > /dev/null 2>&1
+	getdelays -C cgroup/tasks > /dev/null 2>&1
 	if [ $? -eq 0 ]; then
 		tst_res TFAIL "should have failed to get cgroupstat of tasks file"
 		umount cgroup/
@@ -524,7 +524,7 @@ test_9()
 	local pid2=$!
 
 	sleep 30
-	/bin/kill -SIGUSR1 $pid1 $pid2
+	kill -USR1 $pid1 $pid2
 	wait $pid1
 	wait $pid2
 
@@ -551,7 +551,7 @@ test_10()
 	local pid2=$!
 
 	sleep 30
-	/bin/kill -SIGUSR1 $pid1 $pid2
+	kill -USR1 $pid1 $pid2
 	wait $pid1
 	wait $pid2
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 3/4]  cgroup_regression_test.sh: added helper
  2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 2/4] cgroup_regression_test.sh cleanup Cristian Marussi
@ 2018-12-20 18:21 ` Cristian Marussi
  2018-12-20 18:21 ` [LTP] [PATCH v2 4/4] cgroup: helpers various fixes Cristian Marussi
  2018-12-21 13:39 ` [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Petr Vorel
  4 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-20 18:21 UTC (permalink / raw)
  To: ltp

A common function 'get_cgroup_mountpoint' is added to help
parse /proc/mounts in search of specific cgroup subsystems
mountpoints. It is added as part of a common cgroup_lib.sh.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 .../cgroup/cgroup_regression_test.sh          | 17 +++++++---
 testcases/kernel/controllers/cgroup_lib.sh    | 33 +++++++++++++++++++
 2 files changed, 45 insertions(+), 5 deletions(-)
 create mode 100644 testcases/kernel/controllers/cgroup_lib.sh

diff --git a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
index 4e702f2f9..a66ed71e1 100755
--- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
+++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
@@ -30,6 +30,7 @@ TST_NEEDS_ROOT=1
 TST_NEEDS_CMDS="dmesg mountpoint mount umount cat kill find mkdir rmdir grep"
 
 . tst_test.sh
+. cgroup_lib.sh
 
 do_setup()
 {
@@ -190,7 +191,7 @@ test_3()
 	fi
 
 	if grep -q -w "cpu" /proc/cgroups ; then
-		cpu_subsys_path=$(grep -w cpu /proc/mounts | awk '{ print $2 }')
+		cpu_subsys_path=$(get_cgroup_mountpoint "cpu")
 	else
 		tst_res TCONF "CONFIG_CGROUP_SCHED is not enabled"
 		return
@@ -292,8 +293,8 @@ test_5()
 	# $failing params to be used in the following expected-to-fail
 	# mount action. Note that the subsysN name itself will be listed
 	# amongst mounts options.
-	cat /proc/mounts | grep cgroup | grep -q $subsys1 && mounted=$subsys1
-	[ -z "$mounted" ] && cat /proc/mounts | grep cgroup | grep -q $subsys2 && mounted=$subsys2
+	get_cgroup_mountpoint $subsys1 >/dev/null && mounted=$subsys1
+	[ -z "$mounted" ] && get_cgroup_mountpoint $subsys2 >/dev/null && mounted=$subsys2
 	if [ -z "$mounted" ]; then
 		mntpoint=cgroup
 		failing=$subsys1
@@ -306,7 +307,7 @@ test_5()
 		# Use the pre-esistent mountpoint as $mntpoint and use a
 		# co-mount with $failing: this way the 2nd mount will
 		# also fail (as expected) in this 'mirrored' configuration.
-		mntpoint=$(cat /proc/mounts | grep cgroup | grep $mounted | awk '{ print $2 }')
+		mntpoint=$(get_cgroup_mountpoint $mounted)
 		failing=$subsys1,$subsys2
 	fi
 
@@ -390,7 +391,13 @@ test_6()
 test_7_1()
 {
 	local subsys=$1
-	local subsys_path=$(grep -w $subsys /proc/mounts | cut -d ' ' -f 2)
+	# we should be careful to select a $subsys_path which is related to
+	# cgroup only: if cgroup debugging is enabled a 'debug' $subsys
+	# could be passed here as params and this will lead to ambiguity and
+	# errors when grepping simply for 'debug' in /proc/mounts since we'll
+	# find also /sys/kernel/debug. Helper takes care of this.
+	local subsys_path=$(get_cgroup_mountpoint $subsys)
+
 	if [ -z "$subsys_path" ]; then
 		mount -t cgroup -o $subsys xxx cgroup/
 		if [ $? -ne 0 ]; then
diff --git a/testcases/kernel/controllers/cgroup_lib.sh b/testcases/kernel/controllers/cgroup_lib.sh
new file mode 100644
index 000000000..5cdf55363
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup_lib.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2018-2019 ARM Ltd. All Rights Reserved.
+
+#
+# Helper to parse /proc/mounts to find the mountpoints (if any)
+# associated with the cgroup subsystem passed as param.
+#
+# It expects as single argument the cgroup subsytem for
+# which to search in /proc/mounts the mountpoint (if any).
+#
+# - returns true|false depending if any mountpoint has been found.
+# - echos back the mountpoint itself if any found
+#
+get_cgroup_mountpoint()
+{
+	local mntpoint
+	local line
+	local ret=1
+	local subsystem=$1
+
+	# fail straight away with no args
+	[ $# -eq 0 ] && return $ret
+
+	line=$(grep cgroup /proc/mounts | grep -w $subsystem)
+	ret=$?
+	# extract mountpoint if any exist
+	[ $ret = 0 ] && mntpoint=$(echo $line | awk '{ print $2 }') && echo $mntpoint
+
+	return $ret
+}
+
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 4/4]  cgroup: helpers various fixes
  2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
                   ` (2 preceding siblings ...)
  2018-12-20 18:21 ` [LTP] [PATCH v2 3/4] cgroup_regression_test.sh: added helper Cristian Marussi
@ 2018-12-20 18:21 ` Cristian Marussi
  2018-12-21 14:01   ` Petr Vorel
  2018-12-21 13:39 ` [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Petr Vorel
  4 siblings, 1 reply; 17+ messages in thread
From: Cristian Marussi @ 2018-12-20 18:21 UTC (permalink / raw)
  To: ltp

Regarding cgroup/ helpers:
- converted Copyright headers to SPDX
- removed residual bashism
- renamed each helper to include a tag prefix (cgroup_regress_)
  in order to avoid possible name clashes once installed all together
  into testcases/bin

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 testcases/kernel/controllers/cgroup/Makefile  | 22 ++------
 .../cgroup/cgroup_regress_test_10_1.sh        | 14 +++++
 .../cgroup/cgroup_regress_test_10_2.sh        | 12 +++++
 .../cgroup/cgroup_regress_test_3_1.sh         | 14 +++++
 .../cgroup/cgroup_regress_test_3_2.sh         | 11 ++++
 .../cgroup/cgroup_regress_test_6_1.sh         | 13 +++++
 .../cgroup/cgroup_regress_test_6_2.c          | 37 +++++++++++++
 .../cgroup/cgroup_regress_test_9_1.sh         | 14 +++++
 .../cgroup/cgroup_regress_test_9_2.sh         | 13 +++++
 .../cgroup/cgroup_regression_test.sh          | 43 +++++----------
 .../controllers/cgroup/fork_processes.c       | 27 +++-------
 .../kernel/controllers/cgroup/getdelays.c     |  1 +
 .../kernel/controllers/cgroup/test_10_1.sh    | 33 ------------
 .../kernel/controllers/cgroup/test_10_2.sh    | 31 -----------
 .../kernel/controllers/cgroup/test_3_1.sh     | 33 ------------
 .../kernel/controllers/cgroup/test_3_2.sh     | 30 -----------
 .../kernel/controllers/cgroup/test_6_1.sh     | 32 ------------
 .../kernel/controllers/cgroup/test_6_2.c      | 52 -------------------
 .../kernel/controllers/cgroup/test_9_1.sh     | 33 ------------
 .../kernel/controllers/cgroup/test_9_2.sh     | 32 ------------
 20 files changed, 150 insertions(+), 347 deletions(-)
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_10_1.sh
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_10_2.sh
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_3_1.sh
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_3_2.sh
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_6_1.sh
 create mode 100644 testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_9_1.sh
 create mode 100755 testcases/kernel/controllers/cgroup/cgroup_regress_test_9_2.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_10_1.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_10_2.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_3_1.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_3_2.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_6_1.sh
 delete mode 100644 testcases/kernel/controllers/cgroup/test_6_2.c
 delete mode 100755 testcases/kernel/controllers/cgroup/test_9_1.sh
 delete mode 100755 testcases/kernel/controllers/cgroup/test_9_2.sh

diff --git a/testcases/kernel/controllers/cgroup/Makefile b/testcases/kernel/controllers/cgroup/Makefile
index 0cd60adae..8075ae80d 100644
--- a/testcases/kernel/controllers/cgroup/Makefile
+++ b/testcases/kernel/controllers/cgroup/Makefile
@@ -1,24 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2009, Cisco Systems Inc.
+# Author: Ngie Cooper, July 2009
 #
 #    kernel/controllers/cgroup test suite Makefile.
-#
-#    Copyright (C) 2009, Cisco Systems Inc.
-#
-#    This program is free software; you can redistribute it and/or modify
-#    it under the terms of the GNU General Public License as published by
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License along
-#    with this program; if not, write to the Free Software Foundation, Inc.,
-#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Ngie Cooper, July 2009
-#
 
 top_srcdir		?= ../../../..
 
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_1.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_1.sh
new file mode 100755
index 000000000..d7bc5feb2
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_1.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
+	mkdir cgroup/0 > /dev/null 2>&1
+	rmdir cgroup/0 > /dev/null 2>&1
+	umount cgroup/ > /dev/null 2>&1
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_2.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_2.sh
new file mode 100755
index 000000000..b1222422d
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_10_2.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
+	umount cgroup/ > /dev/null 2>&1
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_1.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_1.sh
new file mode 100755
index 000000000..a23afab4c
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_1.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+
+path=$1
+
+while true
+do
+	mkdir $path/0
+	rmdir $path/0
+done
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_2.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_2.sh
new file mode 100755
index 000000000..e1836a3e2
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_3_2.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+	cat /proc/sched_debug > /dev/null
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_1.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_1.sh
new file mode 100755
index 000000000..3ca5e3154
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_1.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+	mount -t cgroup -o ns xxx cgroup/ > /dev/null 2>&1
+	rmdir cgroup/[1-9]* > /dev/null 2>&1
+	umount cgroup/ > /dev/null 2>&1
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
new file mode 100644
index 000000000..9e0db9915
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2009 FUJITSU LIMITED
+ *
+ * Author: Li Zefan <lizf@cn.fujitsu.com>
+ */
+
+#define _GNU_SOURCE
+
+#include <sched.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "test.h"
+
+#define DEFAULT_USEC	30000
+
+int foo(void __attribute__ ((unused)) * arg)
+{
+	return 0;
+}
+
+int main(int argc, char **argv)
+{
+	int usec;
+
+	if (argc == 2)
+		usec = atoi(argv[1]);
+	else
+		usec = DEFAULT_USEC;
+
+	while (1) {
+		usleep(usec);
+		ltp_clone_quick(CLONE_NEWNS, foo, NULL);
+	}
+
+	tst_exit();
+}
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_1.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_1.sh
new file mode 100755
index 000000000..4b6741a91
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_1.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+#	mount -t cgroup -o debug xxx cgroup/ > /dev/null 2>&1
+	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
+	cat cgroup/release_agent > /dev/null 2>&1
+	umount cgroup/ > /dev/null 2>&1
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_2.sh b/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_2.sh
new file mode 100755
index 000000000..b9c05d032
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_9_2.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
+
+trap exit USR1
+while true
+do
+#	mount -t cgroup -o debug xxx cgroup/ > /dev/null 2>&1
+	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
+	umount cgroup/ > /dev/null 2>&1
+done
+
diff --git a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
index a66ed71e1..21760f178 100755
--- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
+++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
@@ -1,26 +1,7 @@
-#! /bin/sh
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2009 FUJITSU LIMITED
+# Author: Li Zefan <lizf@cn.fujitsu.com>
 
 TST_TESTFUNC=do_test
 TST_SETUP=do_setup
@@ -207,9 +188,9 @@ test_3()
 		cpu_subsys_path=cgroup
 	fi
 
-	./test_3_1.sh $cpu_subsys_path &
+	cgroup_regress_test_3_1.sh $cpu_subsys_path &
 	pid1=$!
-	./test_3_2.sh &
+	cgroup_regress_test_3_2.sh &
 	pid2=$!
 
 	sleep 30
@@ -358,9 +339,9 @@ test_6()
 	fi
 
 	# run the test for 30 secs
-	./test_6_1.sh &
+	cgroup_regress_test_6_1.sh &
 	local pid1=$!
-	./test_6_2 &
+	cgroup_regress_test_6_2 &
 	local pid2=$!
 
 	sleep 30
@@ -525,9 +506,9 @@ test_8()
 #---------------------------------------------------------------------------
 test_9()
 {
-	./test_9_1.sh &
+	cgroup_regress_test_9_1.sh &
 	local pid1=$!
-	./test_9_2.sh &
+	cgroup_regress_test_9_2.sh &
 	local pid2=$!
 
 	sleep 30
@@ -552,9 +533,9 @@ test_9()
 #---------------------------------------------------------------------------
 test_10()
 {
-	./test_10_1.sh &
+	cgroup_regress_test_10_1.sh &
 	local pid1=$!
-	./test_10_2.sh &
+	cgroup_regress_test_10_2.sh &
 	local pid2=$!
 
 	sleep 30
diff --git a/testcases/kernel/controllers/cgroup/fork_processes.c b/testcases/kernel/controllers/cgroup/fork_processes.c
index b4bb77101..6f2498bb8 100644
--- a/testcases/kernel/controllers/cgroup/fork_processes.c
+++ b/testcases/kernel/controllers/cgroup/fork_processes.c
@@ -1,24 +1,9 @@
-/******************************************************************************/
-/*                                                                            */
-/* Copyright (c) 2009 FUJITSU LIMITED                                         */
-/*                                                                            */
-/* This program is free software;  you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by       */
-/* the Free Software Foundation; either version 2 of the License, or          */
-/* (at your option) any later version.                                        */
-/*                                                                            */
-/* This program is distributed in the hope that it will be useful,            */
-/* but WITHOUT ANY WARRANTY;  without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  */
-/* the GNU General Public License for more details.                           */
-/*                                                                            */
-/* You should have received a copy of the GNU General Public License          */
-/* along with this program;  if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    */
-/*                                                                            */
-/* Author: Li Zefan <lizf@cn.fujitsu.com>                                     */
-/*                                                                            */
-/******************************************************************************/
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2009 FUJITSU LIMITED
+ *
+ * Author: Li Zefan <lizf@cn.fujitsu.com>
+ */
 
 #include <sys/types.h>
 #include <sys/wait.h>
diff --git a/testcases/kernel/controllers/cgroup/getdelays.c b/testcases/kernel/controllers/cgroup/getdelays.c
index 4e87a13ca..57f37a5f8 100644
--- a/testcases/kernel/controllers/cgroup/getdelays.c
+++ b/testcases/kernel/controllers/cgroup/getdelays.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /* getdelays.c
  *
  * Utility to get per-pid and per-tgid delay accounting statistics
diff --git a/testcases/kernel/controllers/cgroup/test_10_1.sh b/testcases/kernel/controllers/cgroup/test_10_1.sh
deleted file mode 100755
index 2a7763b09..000000000
--- a/testcases/kernel/controllers/cgroup/test_10_1.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
-	mkdir cgroup/0 > /dev/null 2>&1
-	rmdir cgroup/0 > /dev/null 2>&1
-	umount cgroup/ > /dev/null 2>&1
-}
-
diff --git a/testcases/kernel/controllers/cgroup/test_10_2.sh b/testcases/kernel/controllers/cgroup/test_10_2.sh
deleted file mode 100755
index a6e50d883..000000000
--- a/testcases/kernel/controllers/cgroup/test_10_2.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
-	umount cgroup/ > /dev/null 2>&1
-}
-
diff --git a/testcases/kernel/controllers/cgroup/test_3_1.sh b/testcases/kernel/controllers/cgroup/test_3_1.sh
deleted file mode 100755
index dcc78a6b1..000000000
--- a/testcases/kernel/controllers/cgroup/test_3_1.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-
-path=$1
-
-for ((; ;))
-{
-	mkdir $path/0
-	rmdir $path/0
-}
diff --git a/testcases/kernel/controllers/cgroup/test_3_2.sh b/testcases/kernel/controllers/cgroup/test_3_2.sh
deleted file mode 100755
index 63bafaa46..000000000
--- a/testcases/kernel/controllers/cgroup/test_3_2.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-	cat /proc/sched_debug > /dev/null
-}
-
diff --git a/testcases/kernel/controllers/cgroup/test_6_1.sh b/testcases/kernel/controllers/cgroup/test_6_1.sh
deleted file mode 100755
index 4eb6b3293..000000000
--- a/testcases/kernel/controllers/cgroup/test_6_1.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-	mount -t cgroup -o ns xxx cgroup/ > /dev/null 2>&1
-	rmdir cgroup/[1-9]* > /dev/null 2>&1
-	umount cgroup/ > /dev/null 2>&1
-}
-
diff --git a/testcases/kernel/controllers/cgroup/test_6_2.c b/testcases/kernel/controllers/cgroup/test_6_2.c
deleted file mode 100644
index df85b1f91..000000000
--- a/testcases/kernel/controllers/cgroup/test_6_2.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/******************************************************************************/
-/*                                                                            */
-/* Copyright (c) 2009 FUJITSU LIMITED                                         */
-/*                                                                            */
-/* This program is free software;  you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by       */
-/* the Free Software Foundation; either version 2 of the License, or          */
-/* (at your option) any later version.                                        */
-/*                                                                            */
-/* This program is distributed in the hope that it will be useful,            */
-/* but WITHOUT ANY WARRANTY;  without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  */
-/* the GNU General Public License for more details.                           */
-/*                                                                            */
-/* You should have received a copy of the GNU General Public License          */
-/* along with this program;  if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    */
-/*                                                                            */
-/* Author: Li Zefan <lizf@cn.fujitsu.com>                                     */
-/*                                                                            */
-/******************************************************************************/
-
-#define _GNU_SOURCE
-
-#include <sched.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "test.h"
-
-#define DEFAULT_USEC	30000
-
-int foo(void __attribute__ ((unused)) * arg)
-{
-	return 0;
-}
-
-int main(int argc, char **argv)
-{
-	int usec;
-
-	if (argc == 2)
-		usec = atoi(argv[1]);
-	else
-		usec = DEFAULT_USEC;
-
-	while (1) {
-		usleep(usec);
-		ltp_clone_quick(CLONE_NEWNS, foo, NULL);
-	}
-
-	tst_exit();
-}
diff --git a/testcases/kernel/controllers/cgroup/test_9_1.sh b/testcases/kernel/controllers/cgroup/test_9_1.sh
deleted file mode 100755
index b7c26a46c..000000000
--- a/testcases/kernel/controllers/cgroup/test_9_1.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-#	mount -t cgroup -o debug xxx cgroup/ > /dev/null 2>&1
-	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
-	cat cgroup/release_agent > /dev/null 2>&1
-	umount cgroup/ > /dev/null 2>&1
-}
-
diff --git a/testcases/kernel/controllers/cgroup/test_9_2.sh b/testcases/kernel/controllers/cgroup/test_9_2.sh
deleted file mode 100755
index 2d7d38675..000000000
--- a/testcases/kernel/controllers/cgroup/test_9_2.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /bin/bash
-
-################################################################################
-##                                                                            ##
-## Copyright (c) 2009 FUJITSU LIMITED                                         ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-## Author: Li Zefan <lizf@cn.fujitsu.com>                                     ##
-##                                                                            ##
-################################################################################
-
-trap exit SIGUSR1
-for ((; ;))
-{
-#	mount -t cgroup -o debug xxx cgroup/ > /dev/null 2>&1
-	mount -t cgroup xxx cgroup/ > /dev/null 2>&1
-	umount cgroup/ > /dev/null 2>&1
-}
-
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 0/4]  cgroup tests newlib-porting
  2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
                   ` (3 preceding siblings ...)
  2018-12-20 18:21 ` [LTP] [PATCH v2 4/4] cgroup: helpers various fixes Cristian Marussi
@ 2018-12-21 13:39 ` Petr Vorel
  2018-12-21 15:36   ` Cristian Marussi
  4 siblings, 1 reply; 17+ messages in thread
From: Petr Vorel @ 2018-12-21 13:39 UTC (permalink / raw)
  To: ltp

Hi Cristian,

thanks for your work, good work. I have some comments bellow.

> This series converts cgroup/ regression tests to LTP newlib and performs
> a general cleanup as follows:

> - remove bashism from all tests' scripts
> - mostly remove usage of global vars
> - convert to SPDX headers
You left big copyright in cpuacct.sh.

> - expose a controllers' common /proc/mounts parsing function
> - rename tests' helpers prefixing them with a test-specific tag to avoid
>   name clashes on install: I have not renamed the tests' helpers using
>   more specific meaningful name, since all of them performs really
>   trivial ops needed and meaningful in the context of the regression-test
>   subcase they serve; so I thought it would have been better to keep their
>   names as they are now, bound to the subcase they help.

> Cristian Marussi (4):
>   [LTP] cgroup_regression_test.sh ported to newlib
>   [LTP] cgroup_regression_test.sh cleanup
>   [LTP] cgroup_regression_test.sh: added helper
>   [LTP] cgroup: helpers various fixes

Can you please squash it into single commit?
Or in two (first cleanup & rewrite of group_regression_test.sh, second for
helpers). It does not bring much to split it like this.

I guess fork_processes.c and getdelays.c can be using new C API as well.
You don't have to do it, but it can bring benefits (using tst_res(), info about
command).

During cleanup please delete useless comments (getdelays.c: Compile with ...).
I personally take SPDX license as sign that test has been cleanup from bad code
and useless comments and ported into new API.

NOTE: you can add your copyright to the files.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 4/4]  cgroup: helpers various fixes
  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
  0 siblings, 2 replies; 17+ messages in thread
From: Petr Vorel @ 2018-12-21 14:01 UTC (permalink / raw)
  To: ltp

Hi Cristian,

> diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
> new file mode 100644
When you add new file, you need to put it also into .gitignore.
+ Remove /test_6_2 from it (original file).

...
> +++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
> @@ -0,0 +1,37 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2009 FUJITSU LIMITED
> + *
> + * Author: Li Zefan <lizf@cn.fujitsu.com>
> + */
> +
> +#define _GNU_SOURCE
Is _GNU_SOURCE really needed?

> +#include <sched.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +#include "test.h"
Please don't use legacy API.

> +
> +#define DEFAULT_USEC	30000
> +
> +int foo(void __attribute__ ((unused)) * arg)
> +{
> +	return 0;
> +}
> +
> +int main(int argc, char **argv)
> +{
> +	int usec;
> +
> +	if (argc == 2)
> +		usec = atoi(argv[1]);
> +	else
> +		usec = DEFAULT_USEC;
> +
> +	while (1) {
> +		usleep(usec);
> +		ltp_clone_quick(CLONE_NEWNS, foo, NULL);
> +	}
> +
> +	tst_exit();
> +}

...

> +++ b/testcases/kernel/controllers/cgroup/getdelays.c
> @@ -1,3 +1,4 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
>  /* getdelays.c

There is build warning, can you please fix it:

getdelays.c: In function ‘get_family_id’:
getdelays.c:177:14: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
  int id = 0, rc;
              ^~
getdelays.c: In function ‘main’:
getdelays.c:418:7: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]
   int i;
       ^

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib
  2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
@ 2018-12-21 14:25   ` Petr Vorel
  2018-12-21 15:20     ` Cristian Marussi
  2018-12-21 14:35   ` Petr Vorel
  1 sibling, 1 reply; 17+ messages in thread
From: Petr Vorel @ 2018-12-21 14:25 UTC (permalink / raw)
  To: ltp

Hi Cristian,

...
> --- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
>  {
>  	grep -q -w "ns" /proc/cgroups
>  	if [ $? -ne 0 ]; then
> -		tst_resm TCONF "CONFIG_CGROUP_NS"
> +		tst_res TCONF "CONFIG_CGROUP_NS"
>  		return
>  	fi

This could be just

grep -q -w "ns" /proc/cgroups || tst_res TCONF "CONFIG_CGROUP_NS is not enabled"

But CONFIG_CGROUP_NS was removed in a77aea92010a ("cgroup: remove the ns_cgroup")
in v3.0. We don't have TST_MAX_KVER, so we cannot use TST_MAX_KVER="3.0", but
maybe compare kernel version with tst_kvcmp (see doc) and adjust warning for new kernels.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib
  2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
  2018-12-21 14:25   ` Petr Vorel
@ 2018-12-21 14:35   ` Petr Vorel
  2018-12-21 15:27     ` Cristian Marussi
  1 sibling, 1 reply; 17+ messages in thread
From: Petr Vorel @ 2018-12-21 14:35 UTC (permalink / raw)
  To: ltp

Hi Cristian,

...
> +++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
...
> -cd $LTPROOT/testcases/bin
You left this even after second commit. It's not needed.

> +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"
Test needs also using temporary directory (as it creates directories):
TST_NEEDS_TMPDIR=1


> -export TCID="cgroup_regression_test"
> -export TST_TOTAL=10
> -export TST_COUNT=1
> +. tst_test.sh

> -failed=0
> +do_setup()
> +{
> +	cd $LTPROOT/testcases/bin
And here.

...
> +do_cleanup()
> +{
> +	cd $LTPROOT/testcases/bin
One more time.

...
> -for ((cur = 1; cur <= $TST_TOTAL; cur++))
> +do_test()
>  {
> -	export TST_COUNT=$cur
> +	local cur=$1

>  	test_$cur
>  }

do_test() function is not needed at all, looping can be done automatically:
Remove underscore from test functions (s/test_([0-9]+)/test$1/)
and change setup: TST_TESTFUNC=test

See
https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#user-content-2-3-1-basic-test-interface


Kind regards,
Petr

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib
  2018-12-21 14:25   ` Petr Vorel
@ 2018-12-21 15:20     ` Cristian Marussi
  2018-12-21 18:23       ` Cristian Marussi
  0 siblings, 1 reply; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 15:20 UTC (permalink / raw)
  To: ltp

Hi

On 21/12/2018 14:25, Petr Vorel wrote:
> Hi Cristian,
> 
> ...
>> --- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
>>  {
>>  	grep -q -w "ns" /proc/cgroups
>>  	if [ $? -ne 0 ]; then
>> -		tst_resm TCONF "CONFIG_CGROUP_NS"
>> +		tst_res TCONF "CONFIG_CGROUP_NS"
>>  		return
>>  	fi
> 
> This could be just
> 
> grep -q -w "ns" /proc/cgroups || tst_res TCONF "CONFIG_CGROUP_NS is not enabled"
> 
> But CONFIG_CGROUP_NS was removed in a77aea92010a ("cgroup: remove the ns_cgroup")
> in v3.0. We don't have TST_MAX_KVER, so we cannot use TST_MAX_KVER="3.0", but
> maybe compare kernel version with tst_kvcmp (see doc) and adjust warning for new kernels.

Fine I'll do. In fact I could see it working properly only when testing on QEMU
2.6.39.

Regards

Cristian
> 
> Kind regards,
> Petr
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib
  2018-12-21 14:35   ` Petr Vorel
@ 2018-12-21 15:27     ` Cristian Marussi
  0 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 15:27 UTC (permalink / raw)
  To: ltp

Hi Petr

On 21/12/2018 14:35, Petr Vorel wrote:
> Hi Cristian,
> 
> ...
>> +++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
> ...
>> -cd $LTPROOT/testcases/bin
> You left this even after second commit. It's not needed.

because I misunderstood your indication in the previous mail

>> * Remove absolute (/bin/kill) and relative paths and cd into
$LTPROOT/testcases/bin

getting it like "remove A and remove B AND then CD into..." o.O

my bad ...:D I'll fix it

> 
>> +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"
> Test needs also using temporary directory (as it creates directories):
> TST_NEEDS_TMPDIR=1

Fine. I missed that.

> 
> 
>> -export TCID="cgroup_regression_test"
>> -export TST_TOTAL=10
>> -export TST_COUNT=1
>> +. tst_test.sh
> 
>> -failed=0
>> +do_setup()
>> +{
>> +	cd $LTPROOT/testcases/bin
> And here.
> 
o.O

> ...
>> +do_cleanup()
>> +{
>> +	cd $LTPROOT/testcases/bin
> One more time.
> 
o.O

> ...
>> -for ((cur = 1; cur <= $TST_TOTAL; cur++))
>> +do_test()
>>  {
>> -	export TST_COUNT=$cur
>> +	local cur=$1
> 
>>  	test_$cur
>>  }
> 
> do_test() function is not needed at all, looping can be done automatically:
> Remove underscore from test functions (s/test_([0-9]+)/test$1/)
> and change setup: TST_TESTFUNC=test
> 
> See
> https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#user-content-2-3-1-basic-test-interface
> 
Sure.

> 
> Kind regards,
> Petr
> 

Regards

Cristian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 4/4]  cgroup: helpers various fixes
  2018-12-21 14:01   ` Petr Vorel
@ 2018-12-21 15:29     ` Cristian Marussi
  2018-12-21 18:23     ` Cristian Marussi
  1 sibling, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 15:29 UTC (permalink / raw)
  To: ltp

Hi

On 21/12/2018 14:01, Petr Vorel wrote:
> Hi Cristian,
> 
>> diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
>> new file mode 100644
> When you add new file, you need to put it also into .gitignore.
> + Remove /test_6_2 from it (original file).
> 

Didn't know. I'll do that.

> ...
>> +++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
>> @@ -0,0 +1,37 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Copyright (c) 2009 FUJITSU LIMITED
>> + *
>> + * Author: Li Zefan <lizf@cn.fujitsu.com>
>> + */
>> +
>> +#define _GNU_SOURCE
> Is _GNU_SOURCE really needed?
> 

I'll have a better look.

>> +#include <sched.h>
>> +#include <stdlib.h>
>> +#include <unistd.h>
>> +#include "test.h"
> Please don't use legacy API.
> 

Ok.

>> +
>> +#define DEFAULT_USEC	30000
>> +
>> +int foo(void __attribute__ ((unused)) * arg)
>> +{
>> +	return 0;
>> +}
>> +
>> +int main(int argc, char **argv)
>> +{
>> +	int usec;
>> +
>> +	if (argc == 2)
>> +		usec = atoi(argv[1]);
>> +	else
>> +		usec = DEFAULT_USEC;
>> +
>> +	while (1) {
>> +		usleep(usec);
>> +		ltp_clone_quick(CLONE_NEWNS, foo, NULL);
>> +	}
>> +
>> +	tst_exit();
>> +}
> 
> ...
> 
>> +++ b/testcases/kernel/controllers/cgroup/getdelays.c
>> @@ -1,3 +1,4 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>  /* getdelays.c
> 
> There is build warning, can you please fix it:
> 
> getdelays.c: In function ‘get_family_id’:
> getdelays.c:177:14: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
>   int id = 0, rc;
>               ^~
> getdelays.c: In function ‘main’:
> getdelays.c:418:7: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]
>    int i;
>        ^
> 

Fine.

> Kind regards,
> Petr
> 

Regards

Cristian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 0/4]  cgroup tests newlib-porting
  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
  0 siblings, 1 reply; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 15:36 UTC (permalink / raw)
  To: ltp

Hi Petr,

On 21/12/2018 13:39, Petr Vorel wrote:
> Hi Cristian,
> 
> thanks for your work, good work. I have some comments bellow.

Thanks for you review.

> 
>> This series converts cgroup/ regression tests to LTP newlib and performs
>> a general cleanup as follows:
> 
>> - remove bashism from all tests' scripts
>> - mostly remove usage of global vars
>> - convert to SPDX headers
> You left big copyright in cpuacct.sh.

In this patch I have NOT touched anything else than the content of
testcases/kernel/controllers/cgroup which are files related to the
cgroup_regression_test.sh testcase; the file you mentioned is in
testcases/kernel/controllers/cpuacct/ ... am I missing something ?

> 
>> - expose a controllers' common /proc/mounts parsing function
>> - rename tests' helpers prefixing them with a test-specific tag to avoid
>>   name clashes on install: I have not renamed the tests' helpers using
>>   more specific meaningful name, since all of them performs really
>>   trivial ops needed and meaningful in the context of the regression-test
>>   subcase they serve; so I thought it would have been better to keep their
>>   names as they are now, bound to the subcase they help.
> 
>> Cristian Marussi (4):
>>   [LTP] cgroup_regression_test.sh ported to newlib
>>   [LTP] cgroup_regression_test.sh cleanup
>>   [LTP] cgroup_regression_test.sh: added helper
>>   [LTP] cgroup: helpers various fixes
> 
> Can you please squash it into single commit?
> Or in two (first cleanup & rewrite of group_regression_test.sh, second for
> helpers). It does not bring much to split it like this.

Ok I'll squash..I splitted thinking it could have been complained of being not
splitted :D

> 
> I guess fork_processes.c and getdelays.c can be using new C API as well.
> You don't have to do it, but it can bring benefits (using tst_res(), info about
> command).

I'll review those too...I focused only on the shell-scripts logic ... not sure
why in fact.


> 
> During cleanup please delete useless comments (getdelays.c: Compile with ...).
> I personally take SPDX license as sign that test has been cleanup from bad code
> and useless comments and ported into new API.
> 

ok

> NOTE: you can add your copyright to the files.
> 
> Kind regards,
> Petr
> 

Regards

Cristian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 0/4]  cgroup tests newlib-porting
  2018-12-21 15:36   ` Cristian Marussi
@ 2018-12-21 15:47     ` Petr Vorel
  2018-12-21 18:23       ` Cristian Marussi
  0 siblings, 1 reply; 17+ messages in thread
From: Petr Vorel @ 2018-12-21 15:47 UTC (permalink / raw)
  To: ltp

Hi Cristian,

> > You left big copyright in cpuacct.sh.
> In this patch I have NOT touched anything else than the content of
> testcases/kernel/controllers/cgroup which are files related to the
> cgroup_regression_test.sh testcase; the file you mentioned is in
> testcases/kernel/controllers/cpuacct/ ... am I missing something ?
Sorry, I was wrong.


> > Can you please squash it into single commit?
> > Or in two (first cleanup & rewrite of group_regression_test.sh, second for
> > helpers). It does not bring much to split it like this.

> Ok I'll squash..I splitted thinking it could have been complained of being not
> splitted :D
For small changes we like to have it atomic (split), but rewrite is IMHO better
do it in one commit or two (group_regression_test.sh and then the rest - that's
up to you). I focus too much on details for tests which are for very old kernel.


> > I guess fork_processes.c and getdelays.c can be using new C API as well.
> > You don't have to do it, but it can bring benefits (using tst_res(), info about
> > command).

> I'll review those too...I focused only on the shell-scripts logic ... not sure
> why in fact.
I'd prefer to convert it to new C API or leave it as they are.


Kind regards,
Petr

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib
  2018-12-21 15:20     ` Cristian Marussi
@ 2018-12-21 18:23       ` Cristian Marussi
  0 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 18:23 UTC (permalink / raw)
  To: ltp

Hi

On 21/12/2018 15:20, Cristian Marussi wrote:
> Hi
> 
> On 21/12/2018 14:25, Petr Vorel wrote:
>> Hi Cristian,
>>
>> ...
>>> --- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh
>>>  {
>>>  	grep -q -w "ns" /proc/cgroups
>>>  	if [ $? -ne 0 ]; then
>>> -		tst_resm TCONF "CONFIG_CGROUP_NS"
>>> +		tst_res TCONF "CONFIG_CGROUP_NS"
>>>  		return
>>>  	fi
>>
>> This could be just
>>
>> grep -q -w "ns" /proc/cgroups || tst_res TCONF "CONFIG_CGROUP_NS is not enabled"
>>
>> But CONFIG_CGROUP_NS was removed in a77aea92010a ("cgroup: remove the ns_cgroup")
>> in v3.0. We don't have TST_MAX_KVER, so we cannot use TST_MAX_KVER="3.0", but
>> maybe compare kernel version with tst_kvcmp (see doc) and adjust warning for new kernels.
> 
> Fine I'll do. In fact I could see it working properly only when testing on QEMU
> 2.6.39.

Done with test_kvcmp BUT regarding the grep --q ... || tst_res, it turns out it
needs anyway a return afterwards to end the testcase function ...so I've left
the if block (even if I could have appended the return after the || tst_res)

Regards

Cristian
> 
> Regards
> 
> Cristian
>>
>> Kind regards,
>> Petr
>>
> 
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 4/4]  cgroup: helpers various fixes
  2018-12-21 14:01   ` Petr Vorel
  2018-12-21 15:29     ` Cristian Marussi
@ 2018-12-21 18:23     ` Cristian Marussi
  1 sibling, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 18:23 UTC (permalink / raw)
  To: ltp

Hi

On 21/12/2018 14:01, Petr Vorel wrote:
> Hi Cristian,
> 
>> diff --git a/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
>> new file mode 100644
> When you add new file, you need to put it also into .gitignore.
> + Remove /test_6_2 from it (original file).
> 
> ...
>> +++ b/testcases/kernel/controllers/cgroup/cgroup_regress_test_6_2.c
>> @@ -0,0 +1,37 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Copyright (c) 2009 FUJITSU LIMITED
>> + *
>> + * Author: Li Zefan <lizf@cn.fujitsu.com>
>> + */
>> +
>> +#define _GNU_SOURCE
> Is _GNU_SOURCE really needed?
> 

Yes..needed to compile the CLONE_NEWNS flag passed down the newlib function
ltp_clone_quick()

>> +#include <sched.h>
>> +#include <stdlib.h>
>> +#include <unistd.h>
>> +#include "test.h"
> Please don't use legacy API.

Done.
> 
>> +
>> +#define DEFAULT_USEC	30000
>> +
>> +int foo(void __attribute__ ((unused)) * arg)
>> +{
>> +	return 0;
>> +}
>> +
>> +int main(int argc, char **argv)
>> +{
>> +	int usec;
>> +
>> +	if (argc == 2)
>> +		usec = atoi(argv[1]);
>> +	else
>> +		usec = DEFAULT_USEC;
>> +
>> +	while (1) {
>> +		usleep(usec);
>> +		ltp_clone_quick(CLONE_NEWNS, foo, NULL);
>> +	}
>> +
>> +	tst_exit();
>> +}
> 
> ...
> 
>> +++ b/testcases/kernel/controllers/cgroup/getdelays.c
>> @@ -1,3 +1,4 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>  /* getdelays.c
> 
> There is build warning, can you please fix it:
> 
> getdelays.c: In function ‘get_family_id’:
> getdelays.c:177:14: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
>   int id = 0, rc;
>               ^~
> getdelays.c: In function ‘main’:
> getdelays.c:418:7: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]
>    int i;
>        ^
> 
Done.

Regards

Cristian

> Kind regards,
> Petr
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [LTP] [PATCH v2 0/4]  cgroup tests newlib-porting
  2018-12-21 15:47     ` Petr Vorel
@ 2018-12-21 18:23       ` Cristian Marussi
  0 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2018-12-21 18:23 UTC (permalink / raw)
  To: ltp

Hi

On 21/12/2018 15:47, Petr Vorel wrote:
> Hi Cristian,
> 
>>> You left big copyright in cpuacct.sh.
>> In this patch I have NOT touched anything else than the content of
>> testcases/kernel/controllers/cgroup which are files related to the
>> cgroup_regression_test.sh testcase; the file you mentioned is in
>> testcases/kernel/controllers/cpuacct/ ... am I missing something ?
> Sorry, I was wrong.
> 
> 
>>> Can you please squash it into single commit?
>>> Or in two (first cleanup & rewrite of group_regression_test.sh, second for
>>> helpers). It does not bring much to split it like this.
> 
>> Ok I'll squash..I splitted thinking it could have been complained of being not
>> splitted :D
> For small changes we like to have it atomic (split), but rewrite is IMHO better
> do it in one commit or two (group_regression_test.sh and then the rest - that's
> up to you). I focus too much on details for tests which are for very old kernel.
> 
> 
>>> I guess fork_processes.c and getdelays.c can be using new C API as well.
>>> You don't have to do it, but it can bring benefits (using tst_res(), info about
>>> command).
> 
>> I'll review those too...I focused only on the shell-scripts logic ... not sure
>> why in fact.
> I'd prefer to convert it to new C API or leave it as they are.

I removed usage/references of the old API from fork_processes while getdelay it
was completely unrelated from LTP API; in fact both are helpers launched by the
LTP test scripts merely as background processes without any direct feedback
reported to the testcase caller.

How could I use the new C API in this case ?

Regards

Cristian

> 
> 
> Kind regards,
> Petr
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-12-21 18:23 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-20 18:21 [LTP] [PATCH v2 0/4] cgroup tests newlib-porting Cristian Marussi
2018-12-20 18:21 ` [LTP] [PATCH v2 1/4] cgroup_regression_test.sh ported to newlib Cristian Marussi
2018-12-21 14:25   ` 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

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.