3 # checks basic pmdalogger functionality
5 # Copyright (c) 2011 Aconex. All Rights Reserved.
8 echo "QA output created by $seq"
10 # get standard environment, filters and checks
15 [ -d $PCP_PMDAS_DIR/logger
] || _notrun
"No pmdalogger installed"
21 [ -f $PCP_VAR_DIR/config
/logger
/logger.conf.
$seq ] && \
22 _restore_config
$PCP_VAR_DIR/config
/logger
/logger.conf
23 _restore_pmda_install logger
24 if $install_on_cleanup
26 ( cd $PCP_PMDAS_DIR/logger
; $sudo .
/Install
<$tmp.input
>/dev
/null
2>&1 )
28 ( cd $PCP_PMDAS_DIR/logger
; $sudo .
/Remove
</dev
/null
>/dev
/null
2>&1 )
39 # generate data in a single write, for pmda determinism
41 "TeSt DaTa ... TeSt DaTa ...
42 TeSt2 DaTa2 ... TeSt2 DaTa2"
48 -e "s,$tmp,TMPFILE,g" \
49 -e "s,$PCP_VAR_DIR,PCP_VAR_DIR,g" \
50 -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g'
55 # size is filesystem and blocksize dependent
56 _filter |
sed '/^logger\.perfile\.dir\.size$/ {
63 $sudo rm -f $tmp.
* $seq.full
65 # setup pmdalogger configuration file
76 # and PMDA Install script
77 cat >$tmp.input
<<End-of-File
82 install_on_cleanup
=false
83 pminfo logger
>/dev
/null
2>&1 && install_on_cleanup
=true
85 status
=1 # failure is the default!
87 trap "_cleanup" 0 1 2 3 15
89 # real QA test starts here
90 _prepare_pmda_install logger
92 # prepare test case files (see below)
94 wc $tmp.reg
>>$here/$seq.full
98 $PCP_ECHO_PROG $PCP_ECHO_N "#!/bin/sh
99 echo \$\$ > $tmp.pipe.pid
100 trap \"echo child\" USR1
102 ""$PCP_ECHO_C" > $tmp.pipe
# i.e. print something when sigusr1 delivered
105 [ -d $PCP_VAR_DIR/config
/logger
] ||
$sudo mkdir
-p $PCP_VAR_DIR/config
/logger
106 [ -f $PCP_VAR_DIR/config
/logger
/logger.conf
] && \
107 _save_config
$PCP_VAR_DIR/config
/logger
/logger.conf
108 $sudo cp $tmp.conf
$PCP_VAR_DIR/config
/logger
/logger.conf
110 # install PMDA accepting the defaults (esp config file)
111 $sudo .
/Remove
< /dev
/null
>/dev
/null
2>&1
112 $sudo .
/Install
< /dev
/null
>$tmp.out
2>&1
113 cat $tmp.out | _filter_pmda_install | _filter
116 echo "=== 1. simple working case ===" |
tee -a $here/$seq.full
117 $PCP_ECHO_PROG $PCP_ECHO_N "Checking initial data:""$PCP_ECHO_C"
118 pminfo
-f logger.perfile.reg | _filter
119 _testdata
>> $tmp.reg
120 wc $tmp.reg
>>$here/$seq.full
121 $PCP_ECHO_PROG $PCP_ECHO_N "Checking appended data:""$PCP_ECHO_C"
122 pminfo
-f logger.perfile.reg | _filter
125 echo "=== 2. named pipe (fifo) ===" |
tee -a $here/$seq.full
126 $PCP_ECHO_PROG $PCP_ECHO_N "Check initial pipe""$PCP_ECHO_C"
127 pminfo
-f logger.perfile.fifo | _filter
128 $PCP_ECHO_PROG $PCP_ECHO_N "Checking new pipe data""$PCP_ECHO_C"
129 _testdata
>> $tmp.fifo
130 pminfo
-f logger.perfile.fifo | _filter
131 $PCP_ECHO_PROG $PCP_ECHO_N "Unlink the fifo""$PCP_ECHO_C"
133 pminfo
-f logger.perfile.fifo | _filter
136 echo "=== 3. log file rotation ===" |
tee -a $here/$seq.full
137 $PCP_ECHO_PROG $PCP_ECHO_N "Checking removed file""$PCP_ECHO_C"
139 sleep 3 # pmda interval timer is 2 seconds
140 pminfo
-f logger.perfile.reg | _filter
141 $PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
142 _testdata
>> $tmp.reg
143 wc $tmp.reg
>>$here/$seq.full
144 sleep 3 # pmda interval timer is 2 seconds
145 pminfo
-f logger.perfile.reg | _filter
146 wc $tmp.reg
>>$here/$seq.full
147 od -c $tmp.reg
>>$here/$seq.full
150 echo "=== 4. non-existant file ===" |
tee -a $here/$seq.full
151 $PCP_ECHO_PROG $PCP_ECHO_N "Check a missing file""$PCP_ECHO_C"
152 pminfo
-f logger.perfile.none | _filter
153 _testdata
>> $tmp.none
154 wc $tmp.none
>>$here/$seq.full
155 sleep 3 # pmda interval timer is 2 seconds
156 $PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
157 pminfo
-f logger.perfile.none | _filter
160 echo "=== 5. empty file ===" |
tee -a $here/$seq.full
161 $PCP_ECHO_PROG $PCP_ECHO_N "Check an empty file""$PCP_ECHO_C"
162 pminfo
-f logger.perfile.empty | _filter
163 _testdata
>> $tmp.empty
164 wc $tmp.empty
>>$here/$seq.full
165 sleep 3 # pmda interval timer is 2 seconds
166 $PCP_ECHO_PROG $PCP_ECHO_N "Checking new log file""$PCP_ECHO_C"
167 pminfo
-f logger.perfile.empty | _filter
170 echo "=== 6. directory ===" |
tee -a $here/$seq.full
171 $PCP_ECHO_PROG $PCP_ECHO_N "Check a directory""$PCP_ECHO_C"
172 pminfo
-f logger.perfile.dir | _filter_dir
175 echo "=== 7. command pipe ===" |
tee -a $here/$seq.full
176 [ -f $tmp.pipe.pid
] || _fail
"PID file from command pipe not found"
177 pid
=`cat $tmp.pipe.pid`
178 $PCP_ECHO_PROG $PCP_ECHO_N "Check a piped command""$PCP_ECHO_C"
179 pminfo
-f logger.perfile.pipe | _filter
180 $PCP_ECHO_PROG $PCP_ECHO_N "Signal the command""$PCP_ECHO_C"
181 pmsignal
-s USR1
$pid >/dev
/null
2>&1
182 sleep 3 # some time for it to be delivered
183 pminfo
-f logger.perfile.pipe | _filter