summaryrefslogtreecommitdiff
path: root/qa/366
diff options
context:
space:
mode:
Diffstat (limited to 'qa/366')
-rwxr-xr-xqa/366332
1 files changed, 332 insertions, 0 deletions
diff --git a/qa/366 b/qa/366
new file mode 100755
index 0000000..761b2a2
--- /dev/null
+++ b/qa/366
@@ -0,0 +1,332 @@
+#!/bin/sh
+# PCP QA Test No. 366
+# pmlogconf - migrate from version 1.0 to 2.0
+#
+# Copyright (c) 2010 Ken McDonell. All Rights Reserved.
+#
+# Maintenance notes.
+# As pmlogconf usage grows, the generated pmlogconf files are going
+# to become more complicated and more variable across platforms and
+# in particular groups will change from not being expanded by default
+# to be expanded by default, and new groups will be added.
+#
+# Where this test _expects_ a control line to be expanded to a group
+# of metrics, we use platform/version variants of the *.out files.
+#
+# But where a control line is expanded on some platforms, but not
+# on others, we should just cull the control line from the $tmp.conf
+# file and the block of related changes in all the *.out files ...
+# as long as some expansion is done, the test remains valid.
+#
+# Newly added groups should be handled by adding to the $tmp.cull-list
+# file below, using the pmlogconf "tag", e.g. networking/nfs2-client, and
+# possibly removing the block of related changes in all the *.out files
+#
+# Newly added metrics within a group we care about should be culled
+# in _filter().
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+. ./localconfig
+
+[ -f $PCP_BINADM_DIR/pmlogconf-setup ] || _notrun "pmlogconf version 2.0 not installed"
+
+_filter()
+{
+ sed \
+ -e '/network.interface.out.fifo/d' \
+ -e '/network.interface.in.fifo/d' \
+ -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \
+ -e '/^[0-9]/d'
+}
+
+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.cull-list
+networking/nfs2-client
+networking/nfs2-server
+networking/nfs3-client
+networking/nfs3-server
+networking/nfs4-client
+networking/nfs4-server
+tools/atop
+tools/collectl
+tools/dmcache
+tools/mpstat
+tools/vmstat
+tools/iostat
+tools/sar
+shping/summary
+postgresql/summary
+sqlserver/summary
+mysql/summary
+memory/proc-linux
+disk/perpartition
+End-of-File
+
+# turn $tmp.cull-list into an awk program to cull groups like
+#+ networking/nfs2-client:n:default:
+## NFS v2 client stats
+#----
+#
+echo "BEGIN { i=0; skip=0" >$tmp.awk
+sed -e 's/.*/ cull[i++] = "&"/' <$tmp.cull-list >>$tmp.awk
+cat <<'End-of-File' >>$tmp.awk
+}
+$1 == "#+" { for (tag in cull) {
+ split($2, word, /:/)
+ if (word[1] == cull[tag]) {
+ skip = 1
+ next
+ }
+ }
+ skip = 0
+}
+skip == 0 { print }
+End-of-File
+
+cat <<'End-of-File' >$tmp.conf
+#pmlogconf 1.0
+# pmlogconf.sh control file version
+#
+# pmlogger(1) config file created and updated by
+# pmlogconf.sh(1).
+#
+# DO NOT UPDATE THE INTITIAL SECTION OF THIS FILE.
+# Any changes may be lost the next time pmlogconf.sh is used
+# on this file.
+#
+
+# System configuration
+#
+#+ I0:n:once:
+## hardware configuration [nodevis, osvis, oview, routervis,
+## pmchart:Overview]
+#----
+
+# Disk activity
+#
+#+ D0:n:default:
+## activity (IOPs and bytes for both reads and writes) over all disks
+## [osvis, pmstat, pmchart:Disk, pmchart:Overview]
+#----
+#+ D1:n:default:
+## per controller disk activity [pmchart:DiskCntrls]
+#----
+#+ D2:n:default:
+## per spindle disk activity [dkvis, pmie:per_disk]
+#----
+#+ D3:n:default:
+## all available data per disk spindle
+#----
+
+# CPU activity
+#
+#+ C0:n:default:
+## utilization (usr, sys, idle, ...) over all CPUs [osvis, pmstat,
+## pmchart:CPU, pmchart:Overview, pmie:cpu]
+#----
+#+ C2:n:default:
+## contributions to CPU wait time
+#----
+#+ C1:n:default:
+## utilization per CPU [clustervis, mpvis, nodevis, oview, pmie:cpu,
+## pmie:per_cpu]
+#----
+#+ C3:n:default:
+## per CPU contributions to wait time
+#----
+
+# Kernel activity
+#
+#+ K0:n:default:
+## load average and number of logins [osvis, pmstat, pmchart:LoadAvg,
+## pmchart:Overview, pmie:cpu]
+#----
+#+ Ka:n:default:
+## run and swap queues [pmkstat]
+#----
+#+ K1:n:default:
+## context switches, total syscalls and counts for selected calls (e.g. read,
+## write, fork, exec, select) over all CPUs [pmstat, pmchart:Syscalls,
+## pmie:cpu]
+#----
+#+ K2:n:default:
+## per CPU context switches, total syscalls and counts for selected calls
+## [pmie:per_cpu]
+#----
+#+ K3:n:default:
+## bytes across the read() and write() syscall interfaces
+#----
+#+ K4:n:default:
+## interrupts [pmkstat]
+#----
+#+ K5:n:default:
+## buffer cache reads, writes, hits and misses [pmchart:BufferCache,
+## pmie:filesys]
+#----
+#+ K6:n:default:
+## all available buffer cache data
+#----
+#+ K7:n:default:
+## vnode activity
+#----
+#+ K8:n:default:
+## name cache (namei, iget, etc) activity [pmchart:DNLC, pmie:filesys]
+#----
+#+ K9:n:default:
+## asynchronous I/O activity
+#----
+
+# Memory
+#
+#+ M0:n:default:
+## pages in and out (severe VM demand) [pmstat, pmchart:Paging]
+#----
+#+ M1:n:default:
+## address translation (faults and TLB activity)
+#----
+#+ M2:n:default:
+## kernel memory allocation [osvis, pmstat, pmchart:Memory, pmchart:Overview]
+#----
+#+ M3:n:default:
+## current swap allocation and all swap activity [pmchart:Swap, pmie:memory]
+#----
+#+ M4:n:default:
+## swap configuration
+#----
+#+ M5:n:default:
+## "large" page and Origin node-based allocations and activity [nodevis,
+## oview]
+#----
+#+ M7:n:default:
+## NUMA migration stats [nodevis, oview]
+#----
+#+ M6:n:default:
+## all NUMA stats
+#----
+
+# Network
+#
+#+ N0:n:default:
+## bytes and packets (in and out) and bandwidth per network interface
+## [clustervis, osvis, pmchart:NetBytes, pmchart:Overview, pmie:per_netif]
+#----
+#+ N1:n:default:
+## all available data per network interface
+#----
+#+ N2:n:default:
+## TCP bytes and packets (in and out), connects, accepts, drops and closes
+## [pmchart:NetConnDrop, pmchart:NetPackets, pmie:network]
+#----
+#+ N3:n:default:
+## all available TCP data [pmchart:NetTCPCongestion]
+#----
+#+ N4:n:default:
+## UDP packets in and out [pmchart:NetPackets]
+#----
+#+ N5:n:default:
+## all available UDP data
+#----
+#+ N6:n:default:
+## socket stats (counts by type and state)
+#----
+#+ N7:n:default:
+## all available data for other protocols (IP, ICMP, IGMP)
+#----
+#+ N8:n:default:
+## mbuf stats (alloc, failed, waited, etc) [pmie:network]
+#----
+#+ N9:n:default:
+## multicast routing stats
+#----
+#+ Na:n:default:
+## SVR5 streams activity
+#----
+
+# Services
+#
+#+ S2:n:default:
+## RPC stats [pmie:rpc]
+#----
+
+# Filesystems and Volumes
+#
+#+ F0:n:default:
+## Filesystem fullness [pmchart:FileSystem, pmie:filesys]
+#----
+#+ F1:n:default:
+## XFS data and log traffic
+#----
+#+ F2:n:default:
+## all available XFS data
+#----
+#+ F3:n:default:
+## XLV operations and bytes per volume [xlv_vis]
+#----
+#+ F4:n:default:
+## XLV striped volume stats [xlv_vis]
+#----
+#+ F6:n:default:
+## XVM operations and bytes per volume
+#----
+#+ F7:n:default:
+## XVM stripe, mirror and concat volume stats [pmie:xvm]
+#----
+#+ F8:n:default:
+## all available XVM data
+#----
+#+ F5:n:default:
+## EFS activity
+#----
+
+# Hardware event counters
+#
+#+ H0:n:default:
+## NUMALink routers [nodevis, oview, routervis, pmchart:NUMALinks,
+## pmie:craylink]
+#----
+#+ H1:n:default:
+## Origin hubs [pmie:craylink]
+#----
+#+ H2:n:default:
+## global MIPS CPU event counters (enable first with ecadmin(1))
+#----
+#+ H3:n:default:
+## XBOW activity [xbowvis]
+#----
+
+# DO NOT UPDATE THE FILE ABOVE THIS LINE
+# Otherwise any changes may be lost the next time pmlogconf.sh is
+# used on this file.
+#
+# It is safe to make additions from here on ...
+#
+
+End-of-File
+cp $tmp.conf $tmp.orig
+
+# real QA test starts here
+echo q \
+| $PCP_BINADM_DIR/pmlogconf $tmp.conf >/dev/null
+
+cat $tmp.conf >$seq.full
+echo >>$seq.full
+cat $tmp.awk >>$seq.full
+$PCP_AWK_PROG -f $tmp.awk <$tmp.conf >$tmp.tmp
+echo >>$seq.full
+echo "after awking ..." >>$seq.full
+cat $tmp.tmp >>$seq.full
+
+diff $tmp.orig $tmp.tmp | _filter
+
+# success, all done
+exit