blob: 75b1a2b000c9e18b21ca0f923dee89860caf6cdd [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: Miao Xie <miaox@cn.fujitsu.com> #
# #
################################################################################
cd $LTPROOT/testcases/bin
. ./cpuset_funcs.sh
export TCID="cpuset04"
export TST_TOTAL=32
export TST_COUNT=1
nr_cpus=$NR_CPUS
nr_mems=$N_NODES
cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
mems_all="$(seq -s, 0 $((nr_mems-1)))"
exit_status=0
# test cpus
test1()
{
echo > "$CPUSET/father/cpus" || return 1
echo > "$CPUSET/father/child/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test -z "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test2()
{
echo > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test -z "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test3()
{
echo 0 > "$CPUSET/father/cpus" || return 1
echo > "$CPUSET/father/child/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test4()
{
echo 0 > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test5()
{
echo 0 > "$CPUSET/father/cpus" || return 1
echo 1 > "$CPUSET/father/child/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test6()
{
echo 0 > "$CPUSET/father/cpus" || return 1
echo 0,1 > "$CPUSET/father/child/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test7()
{
echo "0,1" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-1" = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test8()
{
echo "0,1" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-1" = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test9()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo > "$CPUSET/father/child/cpus" || return 1
echo > "$CPUSET/father/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test -z "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test10()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
echo > "$CPUSET/father/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-$((nr_cpus-1))" = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test11()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo > "$CPUSET/father/child/cpus" || return 1
echo 0 > "$CPUSET/father/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test -z "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test12()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
echo 0 > "$CPUSET/father/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test 0 = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test13()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 1 > "$CPUSET/father/child/cpus" || return 1
echo 0 > "$CPUSET/father/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-$((nr_cpus-1))" = "$(cat "$CPUSET/father/cpus")" || return 1
test 1 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test14()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 0,1 > "$CPUSET/father/child/cpus" || return 1
echo 0 > "$CPUSET/father/cpus" 2> /dev/null && return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-$((nr_cpus-1))" = "$(cat "$CPUSET/father/cpus")" || return 1
test "0-1" = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test15()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
echo "0,1" > "$CPUSET/father/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-1" = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
test16()
{
echo "$cpus_all" > "$CPUSET/father/cpus" || return 1
echo 0 > "$CPUSET/father/child/cpus" || return 1
echo "0,1" > "$CPUSET/father/cpus" || return 1
cpuset_log "father cpus $(cat "$CPUSET/father/cpus")"
cpuset_log "child cpus $(cat "$CPUSET/father/child/cpus")"
test "0-1" = "$(cat "$CPUSET/father/cpus")" || return 1
test 0 = "$(cat "$CPUSET/father/child/cpus")" || return 1
}
## test mems
test17()
{
echo > "$CPUSET/father/mems" || return 1
echo > "$CPUSET/father/child/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test -z "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test18()
{
echo > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test -z "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test19()
{
echo 0 > "$CPUSET/father/mems" || return 1
echo > "$CPUSET/father/child/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test20()
{
echo 0 > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test21()
{
echo 0 > "$CPUSET/father/mems" || return 1
echo 1 > "$CPUSET/father/child/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test22()
{
echo 0 > "$CPUSET/father/mems" || return 1
echo 0,1 > "$CPUSET/father/child/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test23()
{
echo "0,1" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-1" = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test24()
{
echo "0,1" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-1" = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test25()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo > "$CPUSET/father/child/mems" || return 1
echo > "$CPUSET/father/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test -z "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test26()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
echo > "$CPUSET/father/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-$((nr_mems-1))" = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test27()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo > "$CPUSET/father/child/mems" || return 1
echo 0 > "$CPUSET/father/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test -z "$(cat "$CPUSET/father/child/mems")" || return 1
}
test28()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
echo 0 > "$CPUSET/father/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test 0 = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test29()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 1 > "$CPUSET/father/child/mems" || return 1
echo 0 > "$CPUSET/father/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-$((nr_mems-1))" = "$(cat "$CPUSET/father/mems")" || return 1
test 1 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test30()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 0,1 > "$CPUSET/father/child/mems" || return 1
echo 0 > "$CPUSET/father/mems" 2> /dev/null && return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-$((nr_mems-1))" = "$(cat "$CPUSET/father/mems")" || return 1
test "0-1" = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test31()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
echo "0,1" > "$CPUSET/father/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-1" = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
test32()
{
echo "$mems_all" > "$CPUSET/father/mems" || return 1
echo 0 > "$CPUSET/father/child/mems" || return 1
echo "0,1" > "$CPUSET/father/mems" || return 1
cpuset_log "father mems $(cat "$CPUSET/father/mems")"
cpuset_log "child mems $(cat "$CPUSET/father/child/mems")"
test "0-1" = "$(cat "$CPUSET/father/mems")" || return 1
test 0 = "$(cat "$CPUSET/father/child/mems")" || return 1
}
for i in $(seq 1 $TST_TOTAL)
do
setup
if [ $? -ne 0 ]; then
exit_status=1
else
mkdir "$CPUSET/father"
mkdir "$CPUSET/father/child"
test$i
if [ $? -ne 0 ]; then
tst_resm TFAIL "Break the hierarchy limit."
exit_status=1
else
tst_resm TPASS "Hierarchy test succeeded."
fi
cleanup
if [ $? -ne 0 ]; then
exit_status=1
fi
fi
: $((TST_COUNT++))
done
exit $exit_status