blob: 1b4f314f978142f94aa069954980508ae7bfae56 [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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
# #
# Author: Miao Xie <miaox@cn.fujitsu.com> #
# #
################################################################################
export TCID="cpuset_inherit"
export TST_TOTAL=27
export TST_COUNT=1
. cpuset_funcs.sh
check 1 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
cfile_name=
# base_op_write_and_test <write_file_name> <write_string> <expect_string>
base_op_write_and_test()
{
local write_file="$1"
local write_string="$2"
local expect_string="$3"
local return_result=
mkdir -p "$(dirname $write_file)" || {
tst_brkm TFAIL "Failed to mkdir -p $(basename $write_file)"
return 1
}
[ "$write_string" = NULL ] && write_string=" "
/bin/echo "$write_string" > "$write_file" 2> $CPUSET_TMP/stderr
mkdir $(dirname $write_file)/2 2> $CPUSET_TMP/stderr
return_result=$?
write_result="$(cat "$(dirname $write_file)/2/$(basename $write_file)")"
case "$expect_string" in
EMPTY)
test -z "$write_result" -a $return_result = 0
return_result=$?
;;
WRITE_ERROR)
return_result=$((!$return_result))
;;
*)
test "$expect_string" = "$write_result" -a $return_result = 0
return_result=$?
;;
esac
if [ $return_result -eq 0 ]; then
tst_resm TPASS "$cfile_name: Inherited information is right!"
else
tst_resm TFAIL "$cfile_name: Test result - $write_result Expected string - \"$expect_string\""
fi
return $return_result
}
inherit_test()
{
setup
if [ $? -ne 0 ]; then
exit_status=1
else
base_op_write_and_test "$@"
if [ $? -ne 0 ]; then
exit_status=1
fi
cleanup
if [ $? -ne 0 ]; then
exit_status=1
fi
fi
TST_COUNT=$(($TST_COUNT + 1))
}
test_cpus()
{
cfile_name="cpus"
while read cpus result
do
inherit_test "$CPUSET/1/cpuset.cpus" "$cpus" "$result"
done <<- EOF
NULL EMPTY
0 EMPTY
$cpus_all EMPTY
EOF
# while read cpus result
}
test_mems()
{
cfile_name="mems"
while read mems result
do
inherit_test "$CPUSET/1/cpuset.mems" "$mems" "$result"
done <<- EOF
NULL EMPTY
0 EMPTY
$mems_all EMPTY
EOF
# while read mems result
}
# test cpu_exclusive mem_exclusive mem_hardwall memory_migrate
test_three_result_similar_flags()
{
for filename in cpu_exclusive mem_exclusive mem_hardwall \
memory_migrate
do
cfile_name="$filename"
while read flags result
do
inherit_test "$CPUSET/1/cpuset.$filename" "$flags" "$result"
done <<- EOF
0 0
1 0
EOF
# while read flags, result
done # for filename in flagfiles
}
# test memory_spread_page memory_spread_slab
test_spread_flags()
{
for filename in memory_spread_page memory_spread_slab
do
cfile_name="$filename"
while read flags result
do
inherit_test "$CPUSET/1/cpuset.$filename" "$flags" "$result"
done <<- EOF
0 0
1 1
EOF
# while read flags, result
done # for filename in flagfiles
}
test_sched_load_balance_flag()
{
cfile_name="sched_load_balance"
while read flag result
do
inherit_test "$CPUSET/1/cpuset.sched_load_balance" "$flag" "$result"
done <<- EOF
0 1
1 1
EOF
# while read mems result
}
test_domain()
{
cfile_name="sched_relax_domain_level"
while read domain_level result
do
inherit_test "$CPUSET/1/cpuset.sched_relax_domain_level" "$domain_level" "$result"
done <<- EOF
-1 -1
0 -1
1 -1
2 -1
3 -1
4 -1
5 -1
EOF
# while read domain_level result
}
# Case 1-3
test_cpus
# Case 4-6
test_mems
# Case 7-14
test_three_result_similar_flags
# Case 15-18
test_spread_flags
# Case 19-20
test_sched_load_balance_flag
# Case 21-27
test_domain
exit $exit_status