run_pec_test revision 8bec5d12646894cf29be8231ef5cb54fa468e22f
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@cn.fujitsu.com>                                     ##
22##                                                                            ##
23################################################################################
24
25NUM_EVENTS=1
26EVENT_TEST_CASES=( "fork" "exec" "exit" "uid" "gid" )
27
28cd $LTPROOT/testcases/bin
29
30export TCID="pec01"
31export TST_TOTAL=5
32export TST_COUNT=1
33
34exit_status=0
35
36if [ $(id -u) != 0 ]; then
37	tst_brkm TCONF ignored "Test must be run as root"
38	exit 0;
39fi
40
41grep cn_proc /proc/net/connector > /dev/null
42if [ $? -ne 0 ]; then
43	tst_brkm TCONF ignored "Process Event Connector is not supported or kernel is below 2.6.26"
44	exit 0;
45fi
46
47# Run a test case
48#
49# $1: the test number
50# $2: type of event
51run_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
100i=1;
101for CASE in "${EVENT_TEST_CASES[@]}" ; do
102	run_case $i $CASE
103	((i++))
104done
105
106exit $exit_status
107
108