#!/bin/sh # PCP QA Test No. 273 # Increase testing code coverage in core parts of libpcp # # Copyright (c) 2010 Ken McDonell. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard environment, filters and checks . ./common.product . ./common.filter . ./common.check _cleanup() { _restore_primary_logger rm -f $tmp.* exit $status } status=1 $sudo rm -rf $tmp.* $seq.full trap "_cleanup" 0 1 2 3 15 _filter() { sed \ -e 's/0x[0-9a-f][0-9a-f]*/HEX/g' } _filter2() { sed \ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \ -e '/build_dsotab/s/parsing .*/ parsing .../' \ -e '/^\[[0-9][0-9]*]/d' \ -e '/^0x[0-9a-f][0-9a-f]* \[[0-9][0-9]*]/d' \ -e '/^__pmLocalPMDA/d' \ -e '/^Local Context PMDA Table$/d' \ -e '/__pmConnectLogger:/s/pid = [0-9][0-9]*/pid = PID/' \ -e 's/fd=[0-9][0-9]*/fd=N/g' \ -e '/IPC table fd/s/:.*/: .../' \ -e '/__pmSendCreds/s/:.*/: .../' \ -e '/NotifyEndLocalContext: /s/:.*/: .../' \ -e '/value /s/ [0-9].*/ NUMBER/' \ -e '/^__pmDataIPC:/d' \ -e '/^__pmSetDataIPC:/{ N d }' \ -e 's/Permission denied/No permission to perform requested operation/' \ -e '/__pmConnect(fd=/d' \ | perl -ne ' # squash repeated occurrences of the following pattern # (as a result of needing to do getaddrinfo list walk) if (/^IPC table fd.PDU version.: ...$/) { $saved[1] = $_; } elsif (/^__pmSetSocketIPC: fd=N$/) { $saved[0] = $_; } else { if ($#saved >= 0) { print $saved[0]; } if ($#saved == 1) { print $saved[1]; } @saved = undef; print; }' } _filter3() { sed \ -e 's/Connection timed out/No route to host/' } # simple PMDA is using PMDA_INTERFACE_2 # if [ ! -f $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX ] then ( cd $PCP_PMDAS_DIR/simple; $sudo make; $sudo ./Install /dev/null 2>&1 fi # real QA test starts here _change_config pmcd on _change_config pmlogger on _writable_primary_logger $sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1 _wait_for_pmlogger # help.c # $sudo pminfo -t -L sampledso $sudo pminfo -T -L sampledso pminfo -T -a src/foo sample $sudo pminfo -T -L -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple.now # instance.c # $sudo pminfo -L -f -Dfetch sampledso.bin 2>&1 | _filter_dumpresult pminfo -f -Dindom sample.bin 2>&1 | _filter $sudo pminfo -fL -Dfetch,indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple 2>&1 \ | _filter_dumpresult | _filter src/indom sample.bin src/indom sample.long.one pmval -s 1 -i "bin-123" sample.bin $sudo src/torture_indom -L sampledso.colour $sudo src/torture_indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now # fetchlocal.c # $sudo pminfo -f -L -Dfetch sampledso.bad.unknown 2>&1 | _filter_dumpresult # spec.c # pminfo -f -h localhost:44321 sample.long.hundred pminfo -f -h localhost:1,44321 sample.long.hundred pminfo -f -h localhost: sample.long.hundred pminfo -f -h localhost:44321,1x3 sample.long.hundred pminfo -f -h localhost:44321@no-host sample.long.hundred 2>&1 | _filter3 pminfo -f -h localhost:44321@no-host:44322 sample.long.hundred 2>&1 | _filter3 pminfo -f -h localhost:44321@ sample.long.hundred # units.c # # Pbyte / hour -> 1F055000 pmstore sample.dynamic.meta.pmdesc.units 0x1F055000 >/dev/null pminfo -d sample.dynamic.meta.metric # Ebyte / sec -> 1F063000 pmstore sample.dynamic.meta.pmdesc.units 0x1F063000 >/dev/null pminfo -d sample.dynamic.meta.metric # bigger than Ebyte -> 10070000 pmstore sample.dynamic.meta.pmdesc.units 0x10070000 >/dev/null pminfo -d sample.dynamic.meta.metric # bigger than Hour -> 01006000 pmstore sample.dynamic.meta.pmdesc.units 0x01006000 >/dev/null pminfo -d sample.dynamic.meta.metric # byte^2 -> 20000000 pmstore sample.dynamic.meta.pmdesc.units 0x20000000 >/dev/null pminfo -d sample.dynamic.meta.metric # nsec / byte -> F1000000 pmstore sample.dynamic.meta.pmdesc.units 0xF1000000 >/dev/null pminfo -d sample.dynamic.meta.metric # / byte^2 -> E0000000 pmstore sample.dynamic.meta.pmdesc.units 0xE0000000 >/dev/null pminfo -d sample.dynamic.meta.metric # nsec^3 -> 03000000 pmstore sample.dynamic.meta.pmdesc.units 0x03000000 >/dev/null pminfo -d sample.dynamic.meta.metric # / nsec^3 -> 0D000000 pmstore sample.dynamic.meta.pmdesc.units 0x0D000000 >/dev/null pminfo -d sample.dynamic.meta.metric # count^2 -> 00200000 pmstore sample.dynamic.meta.pmdesc.units 0x00200000 >/dev/null pminfo -d sample.dynamic.meta.metric # / count^2 -> 00E00000 pmstore sample.dynamic.meta.pmdesc.units 0x00E00000 >/dev/null pminfo -d sample.dynamic.meta.metric # restore to byte / sec -> 1F003000 pmstore sample.dynamic.meta.pmdesc.units 0x1F003000 >/dev/null # units.c using grind_cov # for type in 0 1 2 3 4 5 do # space src/grind_conv $type 1024 1:0:0:4:0:0 1:0:0:3:0:0 src/grind_conv $type 1048576 1:0:0:3:0:0 1:0:0:4:0:0 # space / time src/grind_conv $type 4096 1:-1:0:2:3:0 1:-1:0:3:5:0 src/grind_conv $type 14400 1:-1:0:3:5:0 1:-1:0:2:3:0 # space-time / count src/grind_conv $type 92160 1:1:-1:1:3:0 1:1:-1:2:4:1 src/grind_conv $type 15 1:1:-1:2:4:1 1:1:-1:1:3:0 # time / space src/grind_conv $type 1024 -1:1:0:2:3:0 -1:1:0:1:2:0 src/grind_conv $type 1000 -1:1:0:1:2:0 -1:1:0:2:3:0 done # and some odd cases and error cases src/grind_conv -Dvalue 3 4096 1:0:0:5:0:0 1:0:0:6:0:0 src/grind_conv 3 4 1:0:0:6:0:0 1:0:0:5:0:0 src/grind_conv 3 4096 1:0:0:7:0:0 1:0:0:6:0:0 src/grind_conv 3 4096 1:0:0:5:0:0 1:0:0:7:0:0 src/grind_conv 3 3600 0:1:0:0:6:0 0:1:0:0:4:0 src/grind_conv -Dvalue 3 3600 0:1:0:0:4:0 0:1:0:0:6:0 # dimensions not the same src/grind_conv 3 0 0:1:0:0:1:0 0:2:0:0:1:0 # cannot convert events src/grind_conv 8 0 0:1:0:0:1:0 0:1:0:0:1:0 # units.c using src/xval # echo src/xval -D 0x3fffffff 2>&1 \ | sed -e '/pmExtract.*AGGREGATE/{ s/feffff3f/3ffffffe/g s/ffffff3f/3fffffff/g s/00000040/40000000/g }' src/xval 0x7fffffff src/xval 0xffffffff src/xval 0x3fffffffffffffff src/xval 0x7fffffffffffffff src/xval 0xffffffffffffffff src/xval -u 0xffffffffffffffff echo src/xval -e # store.c # echo $sudo src/chknumval -L sampledso.long.write_me sampledso.ulong.write_me sampledso.longlong.write_me >$tmp.out 2>$tmp.err cat $tmp.err $tmp.out | _filter2 echo $sudo src/chknumval -Dcontext -L pmcd.control.debug sampledso.long.write_me sample.colour >$tmp.out 2>$tmp.err cat $tmp.err $tmp.out | _filter2 cat >$tmp.root <$tmp.out 2>$tmp.err cat $tmp.err $tmp.out | _filter2 echo $sudo src/chknumval -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now simple.now simple.now >$tmp.out 2>$tmp.err cat $tmp.err $tmp.out | _filter2 # success, all done status=0 exit