1#!/bin/bash 2# Copyright (c) International Business Machines Corp., 2008 3# Author: Matt Helsley <matthltc@us.ibm.com> 4# 5# This library is free software; you can redistribute it and/or 6# modify it under the terms of the GNU Lesser General Public 7# License as published by the Free Software Foundation; either 8# version 2.1 of the License, or (at your option) any later version. 9# 10# This library is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# Lesser General Public License for more details. 14# 15# You should have received a copy of the GNU Lesser General Public 16# License along with this library; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18# 19 20#set -x 21P='ltp-cgroup-freezer' 22 23export EXIT_GOOD=0 24export EXIT_TERMINATE=-1 25 26 27trap "exit ${EXIT_TERMINATE}" ERR 28 29# 30# Run tests for freezer and signal controllers 31# 32 33 # TODO add: 34 #vfork_freeze.sh 35 # write signal/send_invalid_sig.sh 36 # write signal/read_signal.kill.sh 37FREEZER_TEST_SCRIPTS=( write_freezing.sh 38 freeze_write_freezing.sh 39 freeze_thaw.sh 40 freeze_sleep_thaw.sh 41 freeze_kill_thaw.sh 42 freeze_move_thaw.sh 43 freeze_cancel.sh 44 freeze_self_thaw.sh 45 stop_freeze_thaw_cont.sh 46 stop_freeze_sleep_thaw_cont.sh 47 fork_freeze.sh ) 48 49TEST_SCRIPTS=( ) 50 51function test_setup() 52{ 53 if [ -z "${LTPROOT}" ]; then 54 CGROUPS_TESTROOT="$(pwd)" 55 . libltp 56 else 57 CGROUPS_TESTROOT="${LTPROOT}/testcases/bin" 58 fi 59 60 ####################################################################### 61 ## Initialize some LTP variables -- Set _COUNT and _TOTAL to fake values 62 ## else LTP complains. 63 ####################################################################### 64 TCID="$0" 65 TST_COUNT=1 66 TST_TOTAL=$(( ${#TEST_SCRIPTS[@]} + 0 )) 67 TMPDIR="${TMPDIR:-/tmp}" 68 69 export LTPBIN PATH TCID TST_COUNT TST_TOTAL CGROUPS_TESTROOT 70 tst_resm TINFO "Preparing to run: ${P} $@" 71 72 # this is not require here 73 #make all 74} 75 76function test_prereqs() 77{ 78 cat /proc/filesystems | grep -E '\bcgroup\b' > /dev/null 2>&1 || { 79 tst_resm TINFO "Kernel does not support cgroups. Skipping." 80 exit ${EXIT_GOOD} # 0 81 } 82 83 tst_resm TINFO " Testing prereqs for cgroup freezer tests." 84 if [ ! -f /proc/cgroups ]; then 85 tst_resm TINFO "Tests require cgroup freezer support in the kernel." 86 exit 1 87 fi 88 89 if [ "$(grep -w freezer /proc/cgroups | cut -f1)" != "freezer" ]; then 90 tst_resm TINFO "Tests require cgroup freezer support in the kernel." 91 exit 1 92 fi 93 94 . "${CGROUPS_TESTROOT}/libcgroup_freezer" 95 96 tst_resm TINFO " It's ok if there's an ERROR before the next INFO." 97 mount_freezer && umount_freezer && { 98 TEST_SCRIPTS=( "${TEST_SCRIPTS[@]}" "${FREEZER_TEST_SCRIPTS[@]}" ) 99 } 100 tst_resm TINFO " OK, resume worrying about ERRORS." 101 export TST_TOTAL=$(( ${#TEST_SCRIPTS[@]} + 0 )) 102} 103 104function main() 105{ 106 local rc=0 107 108 for TEST in "${TEST_SCRIPTS[@]}" ; do 109 export TCID="${TEST}" 110 tst_resm TINFO " running ${TEST}" 111 ((TST_COUNT++)) 112 export TST_COUNT 113 "${CGROUPS_TESTROOT}/${TEST}" 114 rc=$? 115 116 if [ $rc != 0 ]; then 117 tst_resm TFAIL "${TEST} $rc" 118 break 119 else 120 tst_resm TPASS "${TEST}" 121 fi 122 done 123 trap '' ERR 124 return $rc 125} 126 127test_setup && \ 128test_prereqs && \ 129declare -r TST_TOTAL && \ 130main 131rc=$? 132trap '' ERR 133exit $rc 134