/var/lib/pcp/testsuite/1064 is in pcp-testsuite 4.0.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #!/bin/sh
# PCP QA Test No. 1064
# derived metrics - rescale() and defined()
#
# Copyright (c) 2017 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()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}
status=1 # failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15
# Derived metric expr dump from 0x8513a48...
# expr node 0x867eb68 type=PLUS left=0x867eb98 right=0x867ed28
_filter()
{
awk <$tmp.out >$tmp.sed '
BEGIN { n = 0 }
$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
{ next }'
sed -f $tmp.sed <$tmp.out \
| sed \
-e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*.*numpmid/TIMESTAMP ... numpmid/' \
-e 's/=0x0 /=(nil) /g' \
-e "s;$tmp;TMP;"
}
_filter_values()
{
$PCP_AWK_PROG '
NF == 1 && $1 ~ /^a\.m/ { metric = $1 }
$1 == "value" && metric == "a.m1" { if ($2 >= 0 && $2 <= 1023*60/1024) $2 = "OK" }
{ print }'
}
# real QA test starts here
cat <<End-of-File >$tmp.config
# expect 0 ... 1023 * 60 / 1024 (so around 60)
a.m1 = rescale(sample.byte_rate, "Kbyte/min")
a.m2 = rescale(mkconst(36000, units="count/hour"),"count/sec")
a.m3 = rescale(mkconst(36000, units="count/hour")+rescale(mkconst(600, units="count/min"),"count/hour"), "count/sec")
a.m4 = defined(sample.long.million)
a.m5 = defined(sample.long.not_million)
a.m6 = ! defined(sample.long.ten) ? 0 : defined(sample.ulong.ten) + 2*defined(sample.ulong.hundred) + 3*defined(sample.ulong.million)
a.m7 = ! defined(sample.long.bozo) ? defined(sample.ulong.ten) + 2*defined(sample.ulong.hundred) + 3*defined(sample.ulong.million) : 0
# error cases
a.err.m1 = rescale(sample.long.hundred, "Kbyte/sec")
a.err.m2 = rescale(sample.string.hullo, "millisec/count")
End-of-File
export PCP_DERIVED_CONFIG=$tmp.config
pminfo -Dderive,appl0,appl1 -fd a >$tmp.out 2>&1
_filter \
| _filter_values
echo "expecting ..."
cat <<End-of-File
a.m1 OK
a.m2 10
a.m3 20
a.m4 1 (defined)
a.m5 0 (not defined)
a.m6 6
a.m7 6
a.err.m1 Incompatible dimensions
a.err.m2 Not arithmetic
End-of-File
# success, all done
status=0
exit
|