* Change the entry like:
cpuacct01 run_cpuacct_test.sh 1
cpuacct02 run_cpuacct_test.sh 2
* Add cpuacct tests to scenario_groups/default
* Add umount_cpuacct_mounted function for umount cpuacct mounted
* Make use of tst_require_root, exists and tst_resm
* Some cleanup
Signed-off-by: Zeng Linggang <[email protected]>
---
runtest/cpuacct | 4 +-
scenario_groups/default | 1 +
.../kernel/controllers/cpuacct/cpuacct_setup.sh | 37 +-
.../kernel/controllers/cpuacct/run_cpuacct_test.sh | 376 +++++++++------------
4 files changed, 191 insertions(+), 227 deletions(-)
diff --git a/runtest/cpuacct b/runtest/cpuacct
index 34354de..11279f9 100644
--- a/runtest/cpuacct
+++ b/runtest/cpuacct
@@ -1,2 +1,2 @@
-CPUACCT01 $LTPROOT/testcases/bin/run_cpuacct_test.sh 1
-CPUACCT02 $LTPROOT/testcases/bin/run_cpuacct_test.sh 2
+cpuacct01 run_cpuacct_test.sh 1
+cpuacct02 run_cpuacct_test.sh 2
diff --git a/scenario_groups/default b/scenario_groups/default
index bf7ab79..2f9acbe 100644
--- a/scenario_groups/default
+++ b/scenario_groups/default
@@ -28,3 +28,4 @@ kernel_misc
modules
fs_ext4
pipes
+cpuacct
diff --git a/testcases/kernel/controllers/cpuacct/cpuacct_setup.sh
b/testcases/kernel/controllers/cpuacct/cpuacct_setup.sh
index fb58d1d..6eab1b4 100755
--- a/testcases/kernel/controllers/cpuacct/cpuacct_setup.sh
+++ b/testcases/kernel/controllers/cpuacct/cpuacct_setup.sh
@@ -15,8 +15,8 @@
# 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 #
+# along with this program; if not, write to the Free Software Foundation,
#
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
#
#
################################################################################
################################################################################
@@ -45,18 +45,29 @@
#
#
################################################################################
+# umount cpuacct if it has been mounted.
+umount_cpuacct_mounted()
+{
+ dir=`cat /proc/mounts | grep cpuacct | awk '{print $2}'`
+ if [ -n "$dir" ]; then
+ umount "$dir" 2> /dev/null
+ fi
+}
+
# The cleanup function
-cleanup ()
+cleanup()
{
echo "Cleanup called"
rm -rf txt*
rmdir /dev/cpuacct/group*/group* 2> /dev/null
rmdir /dev/cpuacct/group* 2> /dev/null
umount /dev/cpuacct/ 2> /dev/null
+ umount_cpuacct_mounted
rmdir /dev/cpuacct 2> /dev/null
rm -rf tmp2 2> /dev/null
}
-task_kill ()
+
+task_kill()
{
for i in `ps -e | grep cpuacct_task | awk '{print $1}'`
do
@@ -70,33 +81,31 @@ task_kill ()
#clean any group created eralier (if any)
-setup ()
+setup()
{
- if [ -e /dev/cpuacct ]
- then
+ if [ -e /dev/cpuacct ]; then
echo "WARN:/dev/cpuacct already exist..overwriting"
rmdir /dev/cpuacct/group*/group* 2> /dev/null
- rmdir /dev/cpuacct/group* 2> /dev/null
+ rmdir /dev/cpuacct/group* 2> /dev/null
umount /dev/cpuacct/ 2> /dev/null
- rmdir /dev/cpuacct 2> /dev/null
-
+ rmdir /dev/cpuacct 2> /dev/null
mkdir /dev/cpuacct
else
mkdir /dev/cpuacct
fi
+ umount_cpuacct_mounted
mount -t cgroup -ocpuacct none /dev/cpuacct 2> /dev/null
if [ $? -ne 0 ]
then
echo "TFAIL: Could not mount cgroup filesystem"
echo "Exiting test"
cleanup
- exit -1
+ exit 1
fi
# Group created earlier may again be visible if not cleaned properly.
#so clean them
- if [ -e /dev/cpuacct/group_1 ]
- then
+ if [ -e /dev/cpuacct/group_1 ]; then
rmdir /dev/cpuacct/group*/group* 2> /dev/null
rmdir /dev/cpuacct/group* 2> /dev/null
echo "WARN: Earlier groups found and removed...";
@@ -108,6 +117,6 @@ setup ()
usage()
{
echo "Could not start cpu account controller test";
- echo "usage: run_cpuacct_test.sh $TEST_NUM ";
+ echo "usage: run_cpuacct_test.sh <TEST_NUM>";
echo "Skipping the cpu account controller test...";
}
diff --git a/testcases/kernel/controllers/cpuacct/run_cpuacct_test.sh
b/testcases/kernel/controllers/cpuacct/run_cpuacct_test.sh
index 4c4d951..88425f8 100755
--- a/testcases/kernel/controllers/cpuacct/run_cpuacct_test.sh
+++ b/testcases/kernel/controllers/cpuacct/run_cpuacct_test.sh
@@ -14,8 +14,8 @@
# 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 #
+# along with this program; if not, write to the Free Software Foundation, #
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
# #
#############################################################################
# Name Of File: run_cpuacct_test.sh #
@@ -40,6 +40,7 @@
# #
#############################################################################
+
export TCID="cpuacct_test01";
export TST_TOTAL=1;
export TST_COUNT=1;
@@ -47,22 +48,19 @@ export TST_COUNT=1;
TEST_NUM=$1;
SCRIPT_PID=$$;
RC=0;
-PWD=`pwd`;
-
-cd $LTPROOT/testcases/bin/ 2> /dev/null
-. cpuacct_setup.sh
-
-if [ "$USER" != root ]; then
- tst_brkm TBROK ignored "Test must be run as root"
- exit 0
-fi
tst_kvercmp 2 6 30 2> /dev/null
if [ $? -eq 0 ]; then
- tst_brkm TBROK ignored "Test should be run with kernel 2.6.30 or newer"
+ tst_brkm TCONF ignored "Test should be run with kernel 2.6.30 or newer"
exit 0
fi
+. cmdlib.sh
+
+tst_require_root
+
+. cpuacct_setup.sh
+
task_kill 2> /dev/null
cleanup
@@ -71,18 +69,17 @@ cg_path="/dev/cpuacct";
num_online_cpus=`tst_ncpus`
#Function to create tasks equal to num_online_cpus.
-nr_tasks ()
+nr_tasks()
{
- $PWD/cpuacct_task01 &
+ cpuacct_task01 &
pid=$!
}
#Function to caluculate the threshold value.
-get_threshold ()
+get_threshold()
{
num_online_cpus=`expr $num_online_cpus \* $num_online_cpus`
- if [ $num_online_cpus -le 32 ]
- then
+ if [ $num_online_cpus -le 32 ]; then
threshold=32
else
threshold=$num_online_cpus
@@ -92,37 +89,33 @@ get_threshold ()
#Function which is called for reading the cpuacct.usage_percpu stat value
#for Parent and Child cgroups.
-per_cpu_usage ()
+per_cpu_usage()
{
attrc=0
attrp=0
- i=0
- k=0
- while read line
- do
- j=0
- for k in $line
- do
- j=`expr $j + $k`
- done
- if [ "$i" == "0" ]
- then
- attrp=$j
- i=`expr $i + 1`
- else
- attrc=`expr $j + $attrc`
- fi
- done < "./tmp2"
+ i=0
+ k=0
+ while read line
+ do
+ j=0
+ for k in $line
+ do
+ j=`expr $j + $k`
+ done
+ if [ "$i" = "0" ]; then
+ attrp=$j
+ i=`expr $i + 1`
+ else
+ attrc=`expr $j + $attrc`
+ fi
+ done < "./tmp2"
}
#Function which verifies the cpu accounting of the Parent and the Child
cgroups.
check_attr()
{
-
- if [ "$1" == "1" ]
- then
- if [ "$2" == "cpuacct.stat" ]
- then
+ if [ "$1" = "1" ]; then
+ if [ "$2" = "cpuacct.stat" ]; then
attr1="`sed -n 1p tmp2`"
attr2="`sed -n 2p tmp2`"
attr3="`sed -n 3p tmp2`"
@@ -131,29 +124,27 @@ check_attr()
echo "$2 for Parent cgroup is $attr1 : $attr2"
echo "$2 for Child cgroup is $attr3 : $attr4"
- if [ "$attr1" == "$attr3" ] && [ "$attr2" == "$attr4" ]
- then
+ if [ "$attr1" = "$attr3" ] && \
+ [ "$attr2" = "$attr4" ]; then
RC=$?
echo "TPASS $mes:$2 PASSED"
- else
+ else
RC=$?
echo "TFAIL $mes:$2 FAILED"
- fi
- elif [ "$2" == "cpuacct.usage_percpu" ]
- then
+ fi
+ elif [ "$2" = "cpuacct.usage_percpu" ]; then
per_cpu_usage
echo
- echo "$2 for Parent cgroup : $attrp"
- echo "$2 for Child cgroup : $attrc"
- if [ "$attrp" == "$attrc" ]
- then
- RC=$?
- echo "TPASS $mes:$2 PASSED"
- else
- RC=$?
- echo "TFAIL $mes:$2 FAILED"
- fi
+ echo "$2 for Parent cgroup : $attrp"
+ echo "$2 for Child cgroup : $attrc"
+ if [ "$attrp" = "$attrc" ]; then
+ RC=$?
+ echo "TPASS $mes:$2 PASSED"
+ else
+ RC=$?
+ echo "TFAIL $mes:$2 FAILED"
+ fi
else
attr1="`sed -n 1p tmp2`"
attr2="`sed -n 2p tmp2`"
@@ -161,10 +152,9 @@ check_attr()
echo
echo "$2 for Parent cgroup is $attr1"
echo "$2 for Child cgroup is $attr2"
- if [ "$attr1" == "$attr2" ]
- then
+ if [ "$attr1" = "$attr2" ]; then
RC=$?
- echo "TPASS $mes:$2 PASSED"
+ echo "TPASS $mes:$2 PASSED"
else
RC=$?
echo "TFAIL $mes:$2 FAILED"
@@ -172,9 +162,7 @@ check_attr()
fi
else
-
- if [ "$2" == "cpuacct.stat" ]
- then
+ if [ "$2" = "cpuacct.stat" ]; then
attr0="`sed -n 1p tmp2 | cut -d" " -f2`"
attr1="`sed -n 2p tmp2 | cut -d" " -f2`"
attr2="`sed -n 3p tmp2 | cut -d" " -f2`"
@@ -193,29 +181,25 @@ check_attr()
diff_sys=`expr $attr1 - $attr_sys`
[ ${diff_sys} -le 0 ] && diff_sys=$((0 - $diff_sys))
if [ "$diff_usr" -le "$threshold" ] && \
- [ "$diff_sys" -le "$threshold" ]
- then
+ [ "$diff_sys" -le "$threshold" ]; then
RC=$?
- echo "TPASS $mes:$2 PASSED"
- else
+ echo "TPASS $mes:$2 PASSED"
+ else
RC=$?
- echo "TFAIL $mes:$2 FAILED"
+ echo "TFAIL $mes:$2 FAILED"
fi
- elif [ "$2" == "cpuacct.usage_percpu" ]
- then
+ elif [ "$2" = "cpuacct.usage_percpu" ]; then
per_cpu_usage
echo
echo "$2 for Parent cgroup : $attrp"
echo "$2 for Child cgroup : $attrc"
- if [ "$attrp" == "$attrc" ]
- then
+ if [ "$attrp" = "$attrc" ]; then
RC=$?
- echo "TPASS $mes:$2 PASSED"
- else
+ echo "TPASS $mes:$2 PASSED"
+ else
RC=$?
- echo "TFAIL $mes:$2 FAILED"
- fi
-
+ echo "TFAIL $mes:$2 FAILED"
+ fi
else
attr0="`sed -n 1p tmp2`"
attr1="`sed -n 2p tmp2`"
@@ -224,14 +208,13 @@ check_attr()
echo
echo "$2 for Parent cgroup : $attr0"
echo "$2 for Child cgroup : $attr"
- if [ "$attr0" == "$attr" ]
- then
+ if [ "$attr0" = "$attr" ]; then
RC=$?
- echo "TPASS $mes:$2 PASSED"
- else
+ echo "TPASS $mes:$2 PASSED"
+ else
RC=$?
- echo "TFAIL $mes:$2 FAILED"
- fi
+ echo "TFAIL $mes:$2 FAILED"
+ fi
fi
fi
}
@@ -242,144 +225,115 @@ setup;
echo "TEST STARTED: Please avoid using system while this test executes";
-
status=0
case ${TEST_NUM} in
- "1" )
- ls $PWD/cpuacct_task01 &> /dev/null
- if [ $? -ne 0 ]
- then
- echo "TFAIL Task file cpuacct_task01.c not compiled"
- echo "Please check Makefile Exiting test"
- task_kill 2> /dev/null
- exit -1
+"1" )
+ exists cpuacct_task01
+ cpuacct_task01 &
+ pid=$!
+
+ mkdir $cg_path/group_1 2> /dev/null
+ mkdir $cg_path/group_1/group_11/ 2> /dev/null
+ if [ $? -ne 0 ]; then
+ echo "TFAIL Cannot create cpuacct cgroups Exiting Test"
+ cleanup
+ task_kill 2> /dev/null
+ exit 1
+ fi
+ echo $pid > $cg_path/group_1/group_11/tasks 2> /dev/null
+ if [ $? -ne 0 ]; then
+ echo "TFAIL Not able to move a task to the cgroup"
+ echo "Exiting Test"
+ cleanup 2> /dev/null
+ task_kill 2> /dev/null
+ exit 1
+ fi
+ sleep 5
+ task_kill 2> /dev/null
+ for i in cpuacct.usage cpuacct.usage_percpu cpuacct.stat
+ do
+ cat $cg_path/group_1/$i \
+ $cg_path/group_1/group_11/$i > tmp2
+ check_attr $1 $i
+ if [ $RC -ne 0 ]; then
+ status=1
fi
- $PWD/cpuacct_task01 &
- pid=$!
+ done
+ if [ $status -eq 0 ]; then
+ echo
+ tst_resm TPASS "$mes test executed successfully"
+ cleanup 2> /dev/null
+ task_kill 2> /dev/null
+ exit 0
+ else
+ echo
+ tst_resm TFAIL "$mes test execution Failed"
+ cleanup 2> /dev/null
+ exit 1
+ fi
+ ;;
- mkdir $cg_path/group_1 2> /dev/null
- mkdir $cg_path/group_1/group_11/ 2> /dev/null
- if [ $? -ne 0 ]
- then
- echo "TFAIL Cannot create cpuacct cgroups Exiting Test"
- cleanup
- task_kill 2> /dev/null
- exit -1
- fi
- echo $pid > /$cg_path/group_1/group_11/tasks 2> /dev/null
- if [ $? -ne 0 ]
- then
- echo "TFAIL Not able to move a task to the cgroup"
+"2" )
+ mkdir $cg_path/group_1 2> /dev/null
+ mkdir $cg_path/group_1/group_11 2> /dev/null
+ mkdir $cg_path/group_1/group_12 2> /dev/null
+ if [ $? -ne 0 ]; then
+ echo "TFAIL Cannot create cpuacct cgroups Exiting Test"
+ cleanup 2> /dev/null
+ task_kill 2> /dev/null
+ exit 1
+ fi
+
+ exists cpuacct_task01
+ for (( m=0 ; m<=$num_online_cpus ; m++ ))
+ do
+ nr_tasks
+ echo $pid > $cg_path/group_1/group_11/tasks
+ if [ $? -ne 0 ]; then
+ echo "TFAIL Not able to move task to cgroup"
echo "Exiting Test"
cleanup 2> /dev/null
task_kill 2> /dev/null
- exit -1
- fi
- sleep 5
- task_kill 2> /dev/null
- for i in cpuacct.usage cpuacct.usage_percpu cpuacct.stat
- do
- cat $cg_path/group_1/$i \
- $cg_path/group_1/group_11/$i > tmp2
- check_attr $1 $i
- if [ $RC -ne 0 ]
- then
- status=1
+ exit 1
fi
- done
- if [ $status -eq 0 ]
- then
- echo
- echo "$mes test executed successfully"
+ nr_tasks
+ echo $pid >$cg_path/group_1/group_12/tasks
+ if [ $? -ne 0 ]; then
+ echo "TFAIL Not able to move task to cgroup"
+ echo "Exiting Test"
cleanup 2> /dev/null
task_kill 2> /dev/null
- exit 0
- else
- echo
- echo "$mes test execution Failed"
- cleanup 2> /dev/null
- exit -1
+ exit 1
fi
- ;;
-
- "2" )
- mkdir $cg_path/group_1 2> /dev/null
- mkdir $cg_path/group_1/group_11 2> /dev/null
- mkdir $cg_path/group_1/group_12 2> /dev/null
- if [ $? -ne 0 ]
- then
- echo "TFAIL Cannot create cpuacct cgroups Exiting Test"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- exit -1
- fi
-
- ls $PWD/cpuacct_task01 &> /dev/null
- if [ $? -ne 0 ]
- then
- echo "TFAIL Task file cpuacct_task01.c not compiled"
- echo "Please check Makefile Exiting test"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- exit -1
- fi
- for (( m=0 ; m<=$num_online_cpus ; m++ ))
- do
- nr_tasks
- echo $pid > $cg_path/group_1/group_11/tasks
- if [ $? -ne 0 ]
- then
- echo "TFAIL Not able to move task to cgroup"
- echo "Exiting Test"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- exit -1
- fi
- nr_tasks
- echo $pid >$cg_path/group_1/group_12/tasks
- if [ $? -ne 0 ]
- then
- echo "TFAIL Not able to move task to cgroup"
- echo "Exiting Test"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- exit -1
- fi
- sleep 2
- done
+ sleep 2
+ done
+ task_kill 2> /dev/null
+ for i in cpuacct.usage cpuacct.usage_percpu cpuacct.stat
+ do
+ cat $cg_path/group_1/$i \
+ $cg_path/group_1/group_11/$i \
+ $cg_path/group_1/group_12/$i >tmp2
+ check_attr $1 $i
+ if [ $RC -ne 0 ]; then
+ status=1
+ fi
+ done
+ if [ $status -eq 0 ]; then
+ echo
+ tst_resm TPASS "$mes test executed successfully"
+ cleanup 2> /dev/null
task_kill 2> /dev/null
- for i in cpuacct.usage cpuacct.usage_percpu cpuacct.stat
- do
- cat $cg_path/group_1/$i \
- $cg_path/group_1/group_11/$i \
- $cg_path/group_1/group_12/$i >tmp2
- check_attr $1 $i
- if [ $RC -ne 0 ]
- then
- status=1
- fi
- done
- if [ $status -eq 0 ]
- then
- echo
- echo "$mes test executed successfully"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- cd $PWD
- exit 0
- else
- echo
- echo "$mes test execution Failed"
- cleanup 2> /dev/null
- task_kill 2> /dev/null
- cd $PWD
- exit -1
- fi
-
- ;;
- * )
- usage
- exit -1
- ;;
- esac
-
+ exit 0
+ else
+ echo
+ tst_resm TFAIL "$mes test execution Failed"
+ cleanup 2> /dev/null
+ task_kill 2> /dev/null
+ exit 1
+ fi
+ ;;
+* )
+ usage
+ exit 1
+ ;;
+esac
--
1.8.4.2
------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list