1 #!/bin/bash 2 3 ################################################################################ 4 ## ## 5 ## Copyright (c) 2008 FUJITSU LIMITED ## 6 ## ## 7 ## This program is free software; you can redistribute it and#or modify ## 8 ## it under the terms of the GNU General Public License as published by ## 9 ## the Free Software Foundation; either version 2 of the License, or ## 10 ## (at your option) any later version. ## 11 ## ## 12 ## This program is distributed in the hope that it will be useful, but ## 13 ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## 14 ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## 15 ## for more details. ## 16 ## ## 17 ## You should have received a copy of the GNU General Public License ## 18 ## along with this program; if not, write to the Free Software ## 19 ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## 20 ## ## 21 ## Author: Li Zefan <lizf (at] cn.fujitsu.com> ## 22 ## ## 23 ################################################################################ 24 25 NUM_EVENTS=1 26 EVENT_TEST_CASES=( "fork" "exec" "exit" "uid" "gid" ) 27 28 cd $LTPROOT/testcases/bin 29 30 export TCID="pec01" 31 export TST_TOTAL=5 32 export TST_COUNT=1 33 34 exit_status=0 35 36 if [ $(id -u) != 0 ]; then 37 tst_brkm TCONF ignored "Test must be run as root" 38 exit 0; 39 fi 40 41 grep cn_proc /proc/net/connector > /dev/null 42 if [ $? -ne 0 ]; then 43 tst_brkm TCONF ignored "Process Event Connector is not supported or kernel is below 2.6.26" 44 exit 0; 45 fi 46 47 # Run a test case 48 # 49 # $1: the test number 50 # $2: type of event 51 run_case() 52 { 53 export TST_COUNT=$1 54 55 log="$LTPROOT/output/log" 56 mkdir -p $log 2> /dev/null 57 58 pec_listener > "$log/listener_$1.log" 2>&1 & 59 pid=$! 60 # Wait for pec_listener to start listening 61 sleep $((1*NUM_EVENTS)) 62 63 event_generator -e $2 > "$log/generator_$1.log" 64 ret1=$? 65 66 # Sleep until pec_listener has seen and handled all of 67 # the generated events 68 sleep $((1*NUM_EVENTS)) 69 kill -s SIGINT $pid 2> /dev/null 70 wait $pid 71 ret2=$? 72 73 if [ $ret1 -ne 0 -o ! -s "$log/generator_$1.log" ]; then 74 tst_resm TFAIL "failed to generate process events" 75 exit_status=1 76 return 1 77 fi 78 79 if [ $ret2 -eq 2 ]; then 80 tst_brkm TCONF NULL "connector may not be supported" 81 exit 0 82 fi 83 84 if [ $ret2 -ne 0 ]; then 85 tst_resm TFAIL "failed to listen process events" 86 exit_status=1 87 return 1 88 fi 89 90 event="`cat $log/generator_$1.log`" 91 cat "$log/listener_$1.log" | grep "$event" > /dev/null 92 if [ $? -eq 0 ]; then 93 tst_resm TPASS "get event - $event" 94 else 95 tst_resm TFAIL "expected event - $event" 96 exit_status=1 97 fi 98 } 99 100 i=1; 101 for CASE in "${EVENT_TEST_CASES[@]}" ; do 102 run_case $i $CASE 103 ((i++)) 104 done 105 106 exit $exit_status 107 108