123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/bash
- ################################################################################
- ## ##
- ## Copyright (c) 2008 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: Li Zefan <lizf@cn.fujitsu.com> ##
- ## ##
- ################################################################################
- NUM_EVENTS=1
- EVENT_TEST_CASES=( "fork" "exec" "exit" "uid" "gid" )
- cd $LTPROOT/testcases/bin
- export TCID="pec01"
- export TST_TOTAL=5
- export TST_COUNT=1
- exit_status=0
- if [ $(id -u) != 0 ]; then
- tst_brkm TCONF ignored "Test must be run as root"
- exit 0;
- fi
- grep cn_proc /proc/net/connector > /dev/null
- if [ $? -ne 0 ]; then
- tst_brkm TCONF ignored "Process Event Connector is not supported or kernel is below 2.6.26"
- exit 0;
- fi
- # Run a test case
- #
- # $1: the test number
- # $2: type of event
- run_case()
- {
- export TST_COUNT=$1
- log="$LTPROOT/output/log"
- mkdir -p $log 2> /dev/null
- pec_listener > "$log/listener_$1.log" 2>&1 &
- pid=$!
- # Wait for pec_listener to start listening
- sleep $((1*NUM_EVENTS))
- event_generator -e $2 > "$log/generator_$1.log"
- ret1=$?
- # Sleep until pec_listener has seen and handled all of
- # the generated events
- sleep $((1*NUM_EVENTS))
- kill -s SIGINT $pid 2> /dev/null
- wait $pid
- ret2=$?
- if [ $ret1 -ne 0 -o ! -s "$log/generator_$1.log" ]; then
- tst_resm TFAIL "failed to generate process events"
- exit_status=1
- return 1
- fi
- if [ $ret2 -eq 2 ]; then
- tst_brkm TCONF NULL "connector may not be supported"
- exit 0
- fi
- if [ $ret2 -ne 0 ]; then
- tst_resm TFAIL "failed to listen process events"
- exit_status=1
- return 1
- fi
- event="`cat $log/generator_$1.log`"
- cat "$log/listener_$1.log" | grep "$event" > /dev/null
- if [ $? -eq 0 ]; then
- tst_resm TPASS "get event - $event"
- else
- tst_resm TFAIL "expected event - $event"
- exit_status=1
- fi
- }
- i=1;
- for CASE in "${EVENT_TEST_CASES[@]}" ; do
- run_case $i $CASE
- ((i++))
- done
- exit $exit_status
|