android13/external/ltp/testcases/kernel/controllers/freezer/run_freezer.sh

134 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) International Business Machines Corp., 2008
# Author: Matt Helsley <matthltc@us.ibm.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#set -x
P='ltp-cgroup-freezer'
export EXIT_GOOD=0
export EXIT_TERMINATE=-1
trap "exit ${EXIT_TERMINATE}" ERR
#
# Run tests for freezer and signal controllers
#
# TODO add:
#vfork_freeze.sh
# write signal/send_invalid_sig.sh
# write signal/read_signal.kill.sh
FREEZER_TEST_SCRIPTS=( write_freezing.sh
freeze_write_freezing.sh
freeze_thaw.sh
freeze_sleep_thaw.sh
freeze_kill_thaw.sh
freeze_move_thaw.sh
freeze_cancel.sh
freeze_self_thaw.sh
stop_freeze_thaw_cont.sh
stop_freeze_sleep_thaw_cont.sh
fork_freeze.sh )
TEST_SCRIPTS=( )
function test_setup()
{
if [ -z "${LTPROOT}" ]; then
CGROUPS_TESTROOT="$(pwd)"
. libltp
else
CGROUPS_TESTROOT="${LTPROOT}/testcases/bin"
fi
#######################################################################
## Initialize some LTP variables -- Set _COUNT and _TOTAL to fake values
## else LTP complains.
#######################################################################
TCID="$0"
TST_COUNT=1
TST_TOTAL=$(( ${#TEST_SCRIPTS[@]} + 0 ))
TMPDIR="${TMPDIR:-/tmp}"
export LTPBIN PATH TCID TST_COUNT TST_TOTAL CGROUPS_TESTROOT
tst_resm TINFO "Preparing to run: ${P} $@"
# this is not require here
#make all
}
function test_prereqs()
{
cat /proc/filesystems | grep -E '\bcgroup\b' > /dev/null 2>&1 || {
tst_resm TINFO "Kernel does not support cgroups. Skipping."
exit ${EXIT_GOOD} # 0
}
tst_resm TINFO " Testing prereqs for cgroup freezer tests."
if [ ! -f /proc/cgroups ]; then
tst_resm TINFO "Tests require cgroup freezer support in the kernel."
exit 1
fi
if [ "$(grep -w freezer /proc/cgroups | cut -f1)" != "freezer" ]; then
tst_resm TINFO "Tests require cgroup freezer support in the kernel."
exit 1
fi
. "${CGROUPS_TESTROOT}/libcgroup_freezer"
tst_resm TINFO " It's ok if there's an ERROR before the next INFO."
mount_freezer && umount_freezer && {
TEST_SCRIPTS=( "${TEST_SCRIPTS[@]}" "${FREEZER_TEST_SCRIPTS[@]}" )
}
tst_resm TINFO " OK, resume worrying about ERRORS."
export TST_TOTAL=$(( ${#TEST_SCRIPTS[@]} + 0 ))
}
function main()
{
local rc=0
for TEST in "${TEST_SCRIPTS[@]}" ; do
export TCID="${TEST}"
tst_resm TINFO " running ${TEST}"
((TST_COUNT++))
export TST_COUNT
"${CGROUPS_TESTROOT}/${TEST}"
rc=$?
if [ $rc != 0 ]; then
tst_resm TFAIL "${TEST} $rc"
break
else
tst_resm TPASS "${TEST}"
fi
done
trap '' ERR
return $rc
}
test_setup && \
test_prereqs && \
declare -r TST_TOTAL && \
main
rc=$?
trap '' ERR
exit $rc