pmrep: further zbxsend python3 fixes
[pcp.git] / qa / 457
bloba0001e1b2096f78d14ae23e54fc9efbcce6c0060
1 #! /bin/sh
2 # PCP QA Test No. 457
3 # checks basic pmdalogger functionality
5 # Copyright (c) 2011 Aconex. All Rights Reserved.
7 seq=`basename $0`
8 echo "QA output created by $seq"
10 # get standard environment, filters and checks
11 . ./common.product
12 . ./common.filter
13 . ./common.check
15 [ -d $PCP_PMDAS_DIR/logger ] || _notrun "No pmdalogger installed"
17 _cleanup()
19 if $_needclean
20 then
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
25 then
26 ( cd $PCP_PMDAS_DIR/logger; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
27 else
28 ( cd $PCP_PMDAS_DIR/logger; $sudo ./Remove </dev/null >/dev/null 2>&1 )
30 _needclean=false
32 $sudo rm -fr $tmp.dir
33 $sudo rm -f $tmp.*
34 exit $status
37 _testdata()
39 # generate data in a single write, for pmda determinism
40 echo \
41 "TeSt DaTa ... TeSt DaTa ...
42 TeSt2 DaTa2 ... TeSt2 DaTa2"
45 _filter()
47 sed \
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'
53 _filter_dir()
55 # size is filesystem and blocksize dependent
56 _filter | sed '/^logger\.perfile\.dir\.size$/ {
58 s:[0-9][0-9]*:SIZE:
62 $sudo rm -fr $tmp.dir
63 $sudo rm -f $tmp.* $seq.full
65 # setup pmdalogger configuration file
66 echo "
67 # from PCP QA $seq
68 reg n $tmp.reg
69 fifo n $tmp.fifo
70 none n $tmp.none
71 empty n $tmp.empty
72 dir n $tmp.dir
73 pipe n $tmp.pipe|
74 " >$tmp.conf
76 # and PMDA Install script
77 cat >$tmp.input <<End-of-File
80 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!
86 _needclean=true
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)
93 _testdata > $tmp.reg
94 wc $tmp.reg >>$here/$seq.full
95 mkdir $tmp.dir
96 mkfifo $tmp.fifo
97 touch $tmp.empty
98 $PCP_ECHO_PROG $PCP_ECHO_N "#!/bin/sh
99 echo \$\$ > $tmp.pipe.pid
100 trap \"echo child\" USR1
101 read book
102 ""$PCP_ECHO_C" > $tmp.pipe # i.e. print something when sigusr1 delivered
103 chmod 755 $tmp.pipe
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
115 echo
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
124 echo
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"
132 rm -f $tmp.fifo
133 pminfo -f logger.perfile.fifo | _filter
135 echo
136 echo "=== 3. log file rotation ===" | tee -a $here/$seq.full
137 $PCP_ECHO_PROG $PCP_ECHO_N "Checking removed file""$PCP_ECHO_C"
138 rm -f $tmp.reg
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
149 echo
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
159 echo
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
169 echo
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
174 echo
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
185 status=0
186 exit