summaryrefslogtreecommitdiff
path: root/qa/371
diff options
context:
space:
mode:
Diffstat (limited to 'qa/371')
-rwxr-xr-xqa/371190
1 files changed, 190 insertions, 0 deletions
diff --git a/qa/371 b/qa/371
new file mode 100755
index 0000000..7da9a5c
--- /dev/null
+++ b/qa/371
@@ -0,0 +1,190 @@
+#!/bin/sh
+# PCP QA Test No. 371
+#
+# Parsing and error checking for the mapfile used by sheet2pcp
+#
+# 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
+
+which sheet2pcp >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "sheet2pcp not installed"
+perl -e "use XML::TokeParser" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl XML::TokeParser module not installed"
+perl -e "use Spreadsheet::Read" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl Spreadsheet::Read module not installed"
+
+_filter()
+{
+ sed \
+ -e "s;$tmp;TMP;"
+}
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+cat <<'End-of-File' >$tmp.simple.csv
+"DATE";"Metric A";"Metric B";"Metric C"
+End-of-File
+
+
+# real QA test starts here
+
+echo "Usage and file existence checks ..."
+sheet2pcp
+sheet2pcp $tmp.simple.csv
+sheet2pcp $tmp.simple.csv $tmp.mapfile
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp extra
+
+sheet2pcp $tmp.simple.csv /no/such/file $tmp
+
+echo
+echo "Mapfile syntax errors ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet heading="1" blah="123"> <!-- unexpected attr -->
+ <foo><!-- bogus tag -->bar</foo>
+ <metric pmid="60.0.2" indom="60.0" units="0,1,0,0,PM_TIME_MSEC,0"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.percpu.cpu.sys</metric>
+ <metric pmid="60.0.22" units="0,1,0,0,PM_TIME_MSEC,0" fungus="bogus"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.all.cpu.sys</metric>
+ <metric pmid="60.0">bad.pmid.one</metric>
+ <metric pmid="6x.0.2">bad.pmid.two</metric>
+ <metric indom="60.0.0">bad.indom.one</metric>
+ <metric indom="60">bad.indom.two</metric>
+ <metric indom="bozo">bad.indom.three</metric>
+ <metric units="0,0,0,0,0">bad.units.one</metric>
+ <metric units="0,0,0,0,0,0,0">bad.units.two</metric>
+ <metric units="BOZO,0,0,PM_SPACE_BOZO,0,0,">bad.units.three</metric>
+ <metric units="1,0,0,PM_SPACE_BOZO,0,0,">bad.units.four</metric>
+ <metric type="PM_TYPE_FOO">bad.type.one</metric>
+ <metric type="">bad.type.two</metric>
+ <metric sem="PM_SEM_FOO">bad.sem.one</metric>
+ <metric sem="PM_SEM_COUNTER"></metric> <!-- no metric name -->
+ <datetime monkey="true"></datetime>
+ <data hi="ho">badmetricname</data>
+ <data></data>
+ <data>no.foo.metric</data>
+ <data>kernel.percpu.cpu.sys[cpu0]</data>
+ <data>kernel.percpu.cpu.sys[cpu1]</data>
+ <data>kernel.percpu.cpu.sys[cpu3</data> <!-- missing ] -->
+ <data>kernel.percpu.cpu.sys[cpu4][fluff</data> <!-- extra stuff -->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu</metric>
+ <data>hinv.ncpu</data>
+ <!--no datetime element-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <datetime></datetime>
+ <!--no data element-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet datefmt="DD-MM-YYYY">
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <datetime></datetime>
+ <data>
+ hinv.ncpu
+ </data>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+echo "Mapfile semantic errors ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE"> hinv.ncpu </metric>
+ <metric>hinv.ncpu</metric> <!-- dup name -->
+ <metric indom="PMI_DOMAIN.1">foo</metric>
+ <data> hinv.ncpu </data>
+ <data>foo[one instance]</data>
+ <data>foo[one other instance]</data> <!-- fails unique to space rule -->
+ <datetime></datetime>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+echo
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<sheet>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu
+ </metric>
+ <metric pmid="60.0.32">kernel.percpu.cpu.someother</metric> <!-- dup pmid -->
+ <datetime></datetime>
+ <data> hinv.ncpu </data>
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+
+echo
+echo "Should be OK ..."
+cat <<'End-of-File' >$tmp.mapfile
+<?xml version="1.0" encoding="UTF-8"?>
+<!--For PCP QA 371-->
+<sheet heading="1">
+ <metric pmid="60.0.2" indom="60.0" units="0,1,0,0,PM_TIME_MSEC,0"
+ type="PM_TYPE_U64" sem="PM_SEM_COUNTER">
+ kernel.percpu.cpu.sys</metric>
+ <metric pmid="60.0.32" type="PM_TYPE_U32" sem="PM_SEM_DISCRETE">
+ hinv.ncpu</metric>
+ <metric pmid="PM_ID_NULL">good.pmid.one</metric>
+ <metric pmid="PMI_DOMAIN.0.63">good.pmid.two</metric>
+ <metric indom="PM_INDOM_NULL">good.indom.one</metric>
+ <metric indom="PMI_DOMAIN.27">good.indom.two</metric>
+ <datetime></datetime>
+ <data>hinv.ncpu</data>
+ <data>kernel.percpu.cpu.sys[cpu0]</data>
+ <data>kernel.percpu.cpu.sys[cpu1]</data>
+ <!--pmiDump-->
+</sheet>
+End-of-File
+sheet2pcp $tmp.simple.csv $tmp.mapfile $tmp 2>&1 \
+| _filter
+
+# don't expect an output archive as there are no rows of data
+# in the spreadsheet
+#
+[ -f $tmp.0 -o -f $tmp.index -o -f $tmp.meta ] && pmdumplog -az $tmp
+
+# success, all done
+exit