blob: d077ead041769bdb9246432443a9fe650da0411b [file] [log] [blame]
#! /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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ##
## ##
## Author: Shi Weihua <shiwh@cn.fujitsu.com> ##
## ##
################################################################################
caseno=$1
pid=0;
subsystem=1;
release_agent_para=1;
release_agent_echo=1;
subsystem_str="debug";
remount_use_str="";
noprefix_use_str="";
release_agent_para_str="";
# not output debug info when stress test
no_debug=0
usage()
{
echo "usage of cgroup_fj_function2.sh: "
echo " ./cgroup_fj_function2.sh -case number[1-13]"
echo "example: ./cgroup_fj_function2.sh 1"
echo " will test the 1st case"
}
exit_parameter()
{
echo "ERROR: Wrong inputed parameter..Exiting test" >> $LOGFILE
exit -1;
}
export TESTROOT=`pwd`
if [ "$LOGFILE" = "" ]; then
LOGFILE="/dev/stdout"
fi
export TMPFILE=$TESTROOT/tmp_tasks
. $TESTROOT/cgroup_fj_utility.sh
case1()
{
do_mkdir 1 1 /dev/cgroup/subgroup_2
do_echo 1 0 $pid /dev/cgroup/subgroup_1/tasks
sleep 1
do_echo 1 0 $pid /dev/cgroup/subgroup_2/tasks
sleep 1
do_echo 1 1 $pid /dev/cgroup/tasks
}
case2()
{
do_mkdir 1 1 /dev/cgroup/subgroup_2
$TESTROOT/cgroup_fj_proc &
pid2=$!
sleep 1
cat /dev/cgroup/tasks > $TMPFILE
nlines=`cat $TMPFILE | wc -l`
for i in `seq 1 $nlines`
do
cur_pid=`sed -n "$i""p" $TMPFILE`
if [ -e /proc/$cur_pid/ ];then
do_echo 1 0 "$cur_pid" /dev/cgroup/subgroup_1/tasks
fi
done
sleep 1
cat /dev/cgroup/subgroup_1/tasks > $TMPFILE
nlines=`cat $TMPFILE | wc -l`
for i in `seq 1 $nlines`
do
cur_pid=`sed -n "$i""p" $TMPFILE`
if [ -e /proc/$cur_pid/ ];then
do_echo 1 0 "$cur_pid" /dev/cgroup/subgroup_2/tasks
fi
done
sleep 1
cat /dev/cgroup/subgroup_2/tasks > $TMPFILE
nlines=`cat $TMPFILE | wc -l`
for i in `seq 1 $nlines`
do
cur_pid=`sed -n "$i""p" $TMPFILE`
if [ -e /proc/$cur_pid/ ];then
do_echo 1 1 "$cur_pid" /dev/cgroup/tasks
fi
done
}
case3()
{
exist_subsystem "cpuset"
exist_subsystem "ns"
do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
mount_str="`mount -l | grep /dev/cgroup2`"
if [ "$mount_str" != "" ]; then
do_umount 0 1 /dev/cgroup2
fi
if [ -e /dev/cgroup2 ]; then
do_rmdir 1 1 /dev/cgroup2
fi
do_mkdir 1 1 /dev/cgroup2
exist_subsystem "cpu"
exist_subsystem "cpuacct"
exist_subsystem "memory"
do_mount 1 1 "-ocpu,cpuacct,memory" /dev/cgroup2 cgroup2
sleep 1
do_umount 0 1 /dev/cgroup
do_rmdir 0 1 /dev/cgroup
do_umount 0 1 /dev/cgroup2
do_rmdir 0 1 /dev/cgroup2
}
case4()
{
exist_subsystem "cpuset"
exist_subsystem "ns"
do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
mount_str="`mount -l | grep /dev/cgroup2`"
if [ "$mount_str" != "" ]; then
do_umount 1 1 /dev/cgroup2
fi
if [ -e /dev/cgroup2 ]; then
do_rmdir 0 1 /dev/cgroup2
fi
do_mkdir 0 1 /dev/cgroup2
do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup2 cgroup2
sleep 1
do_umount 0 1 /dev/cgroup
do_rmdir 0 1 /dev/cgroup
do_umount 0 1 /dev/cgroup2
do_rmdir 0 1 /dev/cgroup2
}
case5()
{
exist_subsystem "cpuset"
exist_subsystem "ns"
exist_subsystem "memory"
do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
mount_str="`mount -l | grep /dev/cgroup2`"
if [ "$mount_str" != "" ]; then
do_umount 1 1 /dev/cgroup2
fi
if [ -e /dev/cgroup2 ]; then
do_rmdir 0 1 /dev/cgroup2
fi
do_mkdir 0 1 /dev/cgroup2
do_mount 0 1 "-odebug,cpuset,memory" /dev/cgroup2 cgroup2
sleep 1
do_umount 0 1 /dev/cgroup
do_rmdir 0 1 /dev/cgroup
do_umount 0 1 /dev/cgroup2
do_rmdir 0 1 /dev/cgroup2
}
case6()
{
exist_subsystem "debug"
exist_subsystem "cpuset"
exist_subsystem "ns"
do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
mount_str="`mount -l | grep /dev/cgroup2`"
if [ "$mount_str" != "" ]; then
do_umount 1 1 /dev/cgroup2
fi
if [ -e /dev/cgroup2 ]; then
do_rmdir 0 1 /dev/cgroup2
fi
do_mkdir 0 1 /dev/cgroup2
do_mount 0 1 "-oall" /dev/cgroup2 cgroup2
sleep 1
do_umount 0 1 /dev/cgroup
do_rmdir 0 1 /dev/cgroup
do_umount 0 1 /dev/cgroup2
do_rmdir 0 1 /dev/cgroup2
}
case7()
{
do_mkdir 0 1 /dev/cgroup/subgroup_2
do_mv 0 1 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_3
}
case8()
{
do_mkdir 0 1 /dev/cgroup/subgroup_2
do_mv 0 0 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_2
}
case9()
{
mount_str="`mount -l | grep /dev/cgroup2`"
if [ "$mount_str" != "" ]; then
do_umount 1 1 /dev/cgroup2
fi
if [ -e /dev/cgroup2 ]; then
do_rmdir 0 1 /dev/cgroup2
fi
do_mkdir 0 1 /dev/cgroup2
do_mkdir 0 1 /dev/cgroup2/subgroup_2
do_mv 0 1 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_2
sleep 1
do_rmdir 0 1 /dev/cgroup2/subgroup_2
do_rmdir 0 1 /dev/cgroup2
}
case10()
{
do_mkdir 0 1 /dev/cgroup/subgroup_2
do_mv 0 0 /dev/cgroup/subgroup_1 /dev/cgroup/tasks
}
case11()
{
do_echo 0 1 $pid /dev/cgroup/subgroup_1/tasks
sleep 1
do_rmdir 0 0 /dev/cgroup/subgroup_1
sleep 1
do_echo 1 1 $pid /dev/cgroup/tasks
}
case12()
{
do_mkdir 0 1 /dev/cgroup/subgroup_1/subgroup_1_1
sleep 1
do_rmdir 0 0 /dev/cgroup/subgroup_1
do_rmdir 1 1 /dev/cgroup/subgroup_1/subgroup_1_1
}
case13()
{
do_rmdir 0 1 /dev/cgroup/subgroup_1
}
########################## main #######################
if [ "$#" -ne "1" ] || [ $caseno -lt 1 ] || [ $caseno -gt 13 ]; then
usage;
exit_parameter;
fi
echo "-------------------------------------------------------------------------" >> $LOGFILE
echo "case no : $CASENO1" >> $LOGFILE
echo `date` >> $LOGFILE
exist_subsystem "debug"
setup;
echo "INFO: now we begin to test no $CASENO1 ..." >> $LOGFILE
if [ $caseno -lt 3 ] || [ $caseno -gt 6 ]; then
mount_cgroup;
$TESTROOT/cgroup_fj_proc &
pid=$!
mkdir_subgroup;
fi
case$caseno
cleanup;
if [ $caseno -lt 3 ] || [ $caseno -gt 6 ]; then
do_kill 1 1 9 $pid
fi
sleep 1
exit 0;