diff options
Diffstat (limited to 'qa/common.filter')
-rw-r--r-- | qa/common.filter | 734 |
1 files changed, 734 insertions, 0 deletions
diff --git a/qa/common.filter b/qa/common.filter new file mode 100644 index 0000000..d3d5b63 --- /dev/null +++ b/qa/common.filter @@ -0,0 +1,734 @@ +# standard PCP QA test output filters +# +# Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +# pmcd log file +# +_filter_pmcd_log() +{ + $PCP_AWK_PROG ' +/^active/ { state = 1 } +/_pmRead: timeout/ && state == 0 { next } +/pduread: timeout/ && state == 0 { next } +/assuming PCP 1.x PMDA/ && state == 0 { next } +/ok .* INADDR_ANY/ { $2 = "FD" } +/ok .*pmcd.socket$/ { $2 = "FD"; $4 = "UNIX_DOMAIN_SOCKET" } + { print }' \ + | sed \ + -e '/^__pmGetAddrInfo/d' \ + -e '/:__pmHostEntFree(/d' \ + -e '/^__pmHostEntGetName/d' \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \ + -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \ + -e '/pcp([0-9][0-9]*)/s//pcp(PID)/' \ + -e '/pcp\[[0-9][0-9]*]/s//pcp[PID]/' \ + -e '/pmcd([0-9][0-9]*)/s//pmcd(PID)/' \ + -e '/^\(Log for pmcd on\) [^ ][^ ]*/s//\1 HOST/' \ + -e '/^pmcd: PID/s/=.*/= PID/' \ + -e '/started PMDA/s/=.*/= PID/' \ + -e 's/ \[0x[0-9a-f]*]//' \ + -e '/^->/s/->[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/-> /' \ + -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;" \ + -e '/get_scsi_sn:/d' \ + -e '/Info: CleanupAgent/d' \ + -e '/using .* kmem interface/d' \ + -e '/pmcd_wait failed: exit status:/d' \ + -e 's/: host-based access control/: access control/g' \ + -e '/^User access list empty: user-based access control turned off$/d' \ + -e '/^Group access list empty: group-based access control turned off$/d' \ + -e '/pmcd caught SIG.* from pid=/s/=[0-9][0-9]*/=N/g' \ + -e '/^linux.*pmda_linux/{ +s/linux/[OS] / +s/60/??/ +s/ i:[0-9] / i:? / +s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/ +s/entry=[^ ]*/entry=[OS]_init/ +}' \ + -e '/^darwin.*pmda_darwin/{ +s/darwin/[OS] / +s/78/??/ +s/ i:[0-9] / i:? / +s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/ +s/entry=[^ ]*/entry=[OS]_init/ +}' \ + -e '/^solaris.*pmda_solaris/{ +s/solaris/[OS] / +s/75/??/ +s/ i:[0-9] / i:? / +s/lib=[^ ]*/lib=[OS]pmda.$DSO_SUFFIX/ +s/entry=[^ ]*/entry=[OS]_init/ +}' \ + -e "/^pmcd.*pmda_pmcd/s/lib=.*pmda_pmcd.$DSO_SUFFIX/lib=...pmda_pmcd.\$DSO_SUFFIX/" \ + -e '/Warning:.* linux .* Direct mapping/d' \ + -e '/NOTICE: using \/proc\/partitions for disk I\/O stats/d' \ + -e '/NOTICE: using \/proc\/diskstats for disk I\/O stats/d' \ + -e '/NOTICE: detected slabinfo version/d' \ + -e '/Warning: xfs metrics are not available/d' \ + -e '/Warning: cihb_getstats: info+recv init: /d' \ + -e '/Warning: cihb_getstats: V0 api probe: Not supported/d' \ + -e '/Warning: cihb_getstats: V0 api probe: Invalid argument/d' \ + -e '/Warning: cihb_getstats: V[01] api probe: Resource temporarily unavailable/d' \ + -e '/Warning: cihb_getstats: no stats available in this kernel/d' \ + -e '/Warning: cihb_getstats: no support for V0 or V1 api/d' \ + -e '/Warning: common_init: NON-CXFS Kernel: disabling metrics/d' \ + -e '/Warning: nfsd_init: direct map disabled/d' \ + -e '/Warning: cxfs_.*: NON-CXFS Kernel: disabling metrics/d' \ + -e '/Warning: cxfs_.*: NON-CXFS or incompatible Kernel: disabling metrics/d' \ + -e '/Warning: cxfs_common_init: direct map disabled/d' \ + -e '/Warning: cxfs_server_init: direct map disabled/d' \ + -e '/Warning: kmeminit: cannot change to group "sys": Operation not permitted/d' \ + -e '/Warning: cms_getstats: could not retrieve stats version Not supported/d' \ + -e '/Warning: cms_getstats: could not retrieve stats version Invalid argument/d' \ + -e '/Warning: cms_reload: No cms instrumentation in this kernel:/d' \ + -e '/Error: Cannot open stat device \/hw\/tape/d' \ + -e '/Note: computed HZ=/d' \ + -e '/Warning: Symbol address mismatch between System.map/d' \ + -e '/Warning: mismatch for .* between System.map/d' \ + -e '/Warning: only reported first .* mismatches between System.map/d' \ + -e '/Warning: proc.psinfo.wchan_s symbol names may not be accurate!/d' \ + -e '/Warning: Valid System.map file not found!/d' \ + -e '/Warning: proc.psinfo.wchan_s symbol names cannot be derived!/d' \ + -e '/Warning: Addresses will be returned for proc.psinfo.wchan_s instead!/d' \ + -e '/NOTICE: using ".*" for kernel symbols map/d' \ + -e '/NOTICE: using kernel 2\.4 or earlier CPU types/d' \ + -e '/NOTICE: using kernel 2\.6\.0 to 2\.6\.4 CPU types/d' \ + -e '/NOTICE: using 64 bit CPU time types/d' \ + | sed \ + -e '/Connected from.*Operations denied/{ +P +: more +N +s/^..*\n// +t more +}' \ + | $PCP_AWK_PROG ' +/^active agent/ { state = 1 } +state == 2 && NF == 0 { state = 0 } +state == 2 { print base,$0; next } + { print NR,$0 } +state == 1 && /^=====/ { state = 2; base = NR+1 }' \ + | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort +0n -1 +2n -3 \ + | sed -e 's/^[^ ]* //' +} + +# pmlogger log file +# +_filter_pmlogger_log() +{ + sed \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \ + -e 's/pmlogger([1-9][0-9]*) Error:/pmlogger(PID) Error:/' \ + -e '/^pmlogger: Signalled (signal=[1-9][0-9]*).*/d' \ + -e '/^\(Log for pmlogger on\) [^ ][^ ]*/s//\1 HOST/' \ + -e '/^Starting logger/s/host ".*/host "HOST"/' \ + -e '/^Archive basename: /s/:.*/: ARCHIVE/' \ + -e '/^pmlc request/s/ from .*:/ from HOST:/' +} + +# pmie log file +# +_filter_pmie_log() +{ + sed \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]/DATE/' \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \ + -e '/^\(Log for pmie on\) [^ ][^ ]*/s//\1 HOST/' \ + -e 's/^pmie: PID = [0-9][0-9]*, default host = .*/pmie: PID,HOST/g' \ + -e '/pmie(.*) Info: pmie caught SIGINT or SIGTERM/d' \ + -e '/pmie([0-9][0-9]*)/s//pmie(PID)/' \ + -e '/^pmie: /s/- on line/- near line/' +} +_show_pmie_exit() +{ + fgrep "evaluator exiting" | \ + sed -e 's/.* Info: evaluator exiting/pmie: note - evaluator exiting/g' +} +_show_pmie_errors() +{ + egrep -v '^Log finished |^Log for pmie on ' \ + | $PCP_AWK_PROG '{ if (NF > 0) print }' \ + | sed \ + -e 's/.*Info: evaluator exiting/pmie: note - evaluator exiting/g' \ + -e '/^pmie: /s/- on line/- near line/' +} + +# pmdumplog -a +# +_filter_pmdumplog() +{ + sed \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \ + -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \ + -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \ + -e '/^\(Performance metrics from host\) [^ ][^ ]*/s//\1 HOST/' \ + -e '/^archive:/s/\( *\).*/\1ARCHIVE/' \ + -e '/^host:/s/\( *\).*/\1HOST/' +} + +# pmdumptext +# +_filter_pmdumptext() +{ + sed \ + -e 's/^[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' +} + +# some common -D diagnostics +# +_filter_dbg() +{ + sed \ + -e '/^__pmLogSetTime(/s/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \ + -e '/^__pmLogRead:/s/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' +} + +# cull the optional PMDA +# +_filter_optional_pmdas() +{ + sed \ + -e '/pmdaaconex/d' \ + -e '/pmdaapache/d' \ + -e '/pmdaarray/d' \ + -e '/pmdaash/d' \ + -e '/pmdabash/d' \ + -e '/pmdabonding/d' \ + -e '/pmdabrocade/d' \ + -e '/pmdacisco/d' \ + -e '/pmdadbping/d' \ + -e '/pmdadmcache/d' \ + -e '/pmdadmf/d' \ + -e '/pmda_environ/d' \ + -e '/pmdaelasticsearch/d' \ + -e '/pmdaespping/d' \ + -e '/pmdagfs2/d' \ + -e '/pmdagluster/d' \ + -e '/pmdahippi/d' \ + -e '/pmdahotproc/d' \ + -e '/pmdaib/d' \ + -e '/pmdainfiniband/d' \ + -e '/pmdainfmx7/d' \ + -e '/pmdainfmxping/d' \ + -e '/pmdajbd2/d' \ + -e '/pmdajstat/d' \ + -e '/pmdakvm/d' \ + -e '/pmdalab/d' \ + -e '/pmdalogger/d' \ + -e '/pmdalmsensors/d' \ + -e '/pmdalockstat/d' \ + -e '/pmdalsf/d' \ + -e '/pmdamaillog/d' \ + -e '/pmdamailq/d' \ + -e '/pmdamemcache/d' \ + -e '/pmdammv/d' \ + -e '/pmdamounts/d' \ + -e '/pmdampi/d' \ + -e '/pmdamysql/d' \ + -e '/pmdanamed/d' \ + -e '/pmdanasavg/d' \ + -e '/pmdanetfilter/d' \ + -e '/pmdanetprobe/d' \ + -e '/pmdanews/d' \ + -e '/pmdanginx/d' \ + -e '/pmdanvidia/d' \ + -e '/pmdaoracle/d' \ + -e '/pmdaoraping/d' \ + -e '/pmdapapi/d' \ + -e '/pmdapdns/d' \ + -e '/pmdapmcd/d' \ + -e '/pmdaproc/d' \ + -e '/pmdaprocess/d' \ + -e '/pmdarpm/d' \ + -e '/pmdarsyslog/d' \ + -e '/pmdaroomtemp/d' \ + -e '/pmdasamba/d' \ + -e '/pmdasendmail/d' \ + -e '/pmdashping/d' \ + -e '/pmda_simple/d' \ + -e '/pmdasimple/d' \ + -e '/pmdasnia/d' \ + -e '/pmdasnmp/d' \ + -e '/pmdassping/d' \ + -e '/pmdasummary/d' \ + -e '/pmdasystemd/d' \ + -e '/pmdasystemtap/d' \ + -e '/pmdasyb10/d' \ + -e '/pmdasybping/d' \ + -e '/pmdatrace/d' \ + -e '/pmdatrivial/d' \ + -e '/pmdatxmon/d' \ + -e '/pmdavmware/d' \ + -e '/pmdawatch/d' \ + -e '/pmdaweblog/d' \ + -e '/pmdawebping/d' \ + -e '/pmdaxfs/d' \ + -e '/pmdaxvm/d' \ + -e '/pmdazimbra/d' \ + -e '/pmdazswap/d' \ + +} + +# cull the optional top-level PMNS entries +# +_filter_top_pmns() +{ + sed \ + -e 's/$/ /' \ + -e '/^ aim /d' \ + -e '/^ array /d' \ + -e '/^ ash /d' \ + -e '/^ bash /d' \ + -e '/^ bonding /d' \ + -e '/^ brocade /d' \ + -e '/^ broken /d' \ + -e '/^ cgroup /d' \ + -e '/^ cisco /d' \ + -e '/^ datatape /d' \ + -e '/^ dbping /d' \ + -e '/^ dmcache /d' \ + -e '/^ dmf /d' \ + -e '/^ elasticsearch /d' \ + -e '/^ environ /d' \ + -e '/^ gfs2 /d' \ + -e '/^ gluster /d' \ + -e '/^ hippi /d' \ + -e '/^ hotproc /d' \ + -e '/^ hw /d' \ + -e '/^ infmxping /d' \ + -e '/^ informix /d' \ + -e '/^ jbd2 /d' \ + -e '/^ jstat /d' \ + -e '/^ kvm /d' \ + -e '/^ lab /d' \ + -e '/^ lmsensors /d' \ + -e '/^ logger /d' \ + -e '/^ lsf /d' \ + -e '/^ mailq /d' \ + -e '/^ memcache /d' \ + -e '/^ mmv /d' \ + -e '/^ mpi /d' \ + -e '/^ mysql /d' \ + -e '/^ named /d' \ + -e '/^ netfilter /d' \ + -e '/^ netprobe /d' \ + -e '/^ news /d' \ + -e '/^ nginx /d' \ + -e '/^ nvidia /d' \ + -e '/^ oracle /d' \ + -e '/^ oraping /d' \ + -e '/^ pdns /d' \ + -e '/^ postgresql /d' \ + -e '/^ proc /d' \ + -e '/^ rpm /d' \ + -e '/^ rsyslog /d' \ + -e '/^ samba /d' \ + -e '/^ sendmail /d' \ + -e '/^ shping /d' \ + -e '/^ simple /d' \ + -e '/^ snmp /d' \ + -e '/^ ssping /d' \ + -e '/^ espping /d' \ + -e '/^ summary /d' \ + -e '/^ sybase /d' \ + -e '/^ sybping /d' \ + -e '/^ sysother /d' \ + -e '/^ systemd /d' \ + -e '/^ systemtap /d' \ + -e '/^ trace /d' \ + -e '/^ trivial /d' \ + -e '/^ txmon /d' \ + -e '/^ vmware /d' \ + -e '/^ web /d' \ + -e '/^ webping /d' \ + -e '/^ zimbra /d' \ + -e '/^ zswap /d' \ + -e 's/ $//' + +} + +# handle pmDumpResult() output +# +_filter_dumpresult() +{ + sed \ + -e '/pmResult/s/ .* numpmid/ ... numpmid/' \ + -e '/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/s/[^ ]*/TIMESTAMP/' \ + -e '/value /{ +s/\(value.*\) 0x[0-9a-f][0-9a-f]*/\1 HEXNUMBER/ +s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*e[+-]*[0-9][0-9]*/\1 NUMBER/ +s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*/\1 NUMBER/ +s/\(value.*\) -*[0-9][0-9]*\.[0-9][0-9]*/\1 NUMBER/ +s/\(value.*\) -*[0-9][0-9]*e[+-]*[0-9][0-9]*/\1 NUMBER/ +s/\(value.*\) -*[0-9][0-9]*/\1 NUMBER/ +s/\(value.*\) \[.*]/\1 AGGREGATE/ +s/\(value.*\) ".*"/\1 STRING/ +}' \ + -e '/inst /{ +s/inst \[[0-9][0-9]* or "dks..."]/inst [DISK]/ +s;inst \[[0-9][0-9]* or "/dev/[^"]*"];inst [DISK]; +}' + +} + +_filter_cron_scripts() +{ + sed \ + -e 's/cron\.pmcheck/PMLOGGER.CHECK/g' \ + -e 's/pmlogger_check/PMLOGGER.CHECK/g' \ + -e 's/pmlogger\.check/PMLOGGER.CHECK/g' \ + -e 's/cron\.pmdaily/PMLOGGER.DAILY/g' \ + -e 's/pmlogger_daily/PMLOGGER.DAILY/g' \ + -e 's/pmlogger\.daily/PMLOGGER.DAILY/g' \ + -e 's/cron\.logmerge/PMLOGGER.MERGE/g' \ + -e 's/cron\.pmlogmerge/PMLOGGER.MERGE/g' \ + -e 's/pmlogger\.merge/PMLOGGER.MERGE/g' \ + -e 's/pmlogger_merge/PMLOGGER.MERGE/g' \ + -e 's/cron\.pmsnap/pmsnap/g' +} + +_filter_pcp_start() +{ + sed \ + -e "s;$PCP_LOG_DIR/pmcd/pmcd.log;\$PCP_LOG_DIR/pmcd.log;" \ + -e "s;$PCP_LOG_DIR/pmcd.log;\$PCP_LOG_DIR/pmcd.log;" \ + -e "s;$PCP_RC_DIR/pmcd;\$PCP_RC_DIR/pmcd;" \ + -e "s;$PCP_RC_DIR/pmlogger;\$PCP_RC_DIR/pmlogger;" \ + -e "s;$PCP_RC_DIR/pcp;\$PCP_RC_DIR/pmcd;" \ + -e '/$PCP_RC_DIR\/pmcd/{ +s/ PMCD / pmcd / +}' \ + -e "s;$PCP_BINADM_DIR/pmcd;\$PCP_BINADM_DIR/pmcd;" \ + -e "s;$PCP_PMCDCONF_PATH;\$PCP_PMCDCONF_PATH;" \ + -e "s;$PCP_PMLOGGERCONTROL_PATH;\$PCP_PMLOGGERCONTROL_PATH;" \ + -e "s;$PCP_VAR_DIR/;\$PCP_VAR_DIR/;" \ + -e "s;$PCP_SYSCONF_DIR/;\$PCP_SYSCONF_DIR/;" \ + -e "s;/usr/etc/pmcd;\$PCP_BINADM_DIR/pmcd;" \ + -e '/Warning: Forcing PMCD to terminate!/s/PMCD/pmcd/' \ + -e '/^Starting PCP$/d' \ + -e 's/^\(Performance Co-Pilot starting .*\.\.\.\) *\(\$PCP_RC_DIR\)/\1\ +\2/' \ + -e '/^Performance Co-Pilot/s/\.\.\. *$/.../' \ + -e '/^Performance Co-Pilot starting/{ +s/\.\.\.[. ]*done/.../ +s/\.\.\.[. ]*failed/.../ +s/Performance Co-Pilot starting PMCD (logfile is [^)]*) .../Starting pmcd ... / +s/Performance Co-Pilot starting archive loggers .../Starting pmlogger ... / +}' \ + -e '/^Performance Co-Pilot installing/s//Installing/' \ + -e '/^\.[. ]*done$/d' \ + -e '/^\.[. ]*failed$/d' \ + -e '/^Waiting for PMCD/{ +s/PMCD/pmcd/ +s/\.\.\.[. ]*done/.../ +s/\.\.\.\.*/.../ +}' \ + -e '/^Waiting for pmcd/{ +s/\.\.\.[. ]*done/.../ +s/\.\.\.\.*/.../ +}' \ + -e 's/^\(Waiting .*\.\.\.\)\(\$PCP_RC_DIR\)/\1\ +\2/' \ + -e '/^[ ]*$/d' \ + | _filter_init_distro +} + +_filter_pcp_stop() +{ + sed \ + -e '/Stopping pmlogger .../d' \ + -e '/^Waiting for PMIE/s/PMIE/pmie/' \ + -e '/^Waiting for pmie/s/\.\.\.[. ]*done/.../' \ + -e '/^Waiting for PMCD/{ +s/\.\.\.[. ]*done/.../ +s/PMCD/pmcd/ +s/\.\.\.\.*/.../ +}' \ + -e '/^Waiting for pmcd/{ +s/\.\.\.[. ]*done/.../ +s/\.\.\.\.*/.../ +}' \ + -e '/Warning: Forcing PMCD to terminate!/s/PMCD/pmcd/' \ + -e '/^Waiting for pmie/s/\.\.\. *$/.../' \ + -e '/^Performance Co-Pilot/s/\.\.\. *$/.../' \ + -e '/^\.[. ]*done$/d' \ + | _filter_init_distro +} + +_filter_pmie_start() +{ + sed \ + -e '/^Waiting for PMIE/s/PMIE/pmie/' \ + -e '/^Waiting for pmie process(es) to terminate/d' \ + -e "s;$PCP_RC_DIR/pmie;\$PCP_RC_DIR/pmie;g" \ + -e '/(pmie) is disabled/d' \ + -e '/To enable/d' \ + -e '/update-rc.d -f pmie remove/d' \ + -e '/update-rc.d pmie defaults/d' \ + -e '/\/sbin\/chkconfig pmie on/d' \ + -e '/\/usr\/sbin\/sysv-rc-conf pmie on/d' \ + -e '/update-rc.d -f pmie defaults/d' \ + -e '/ln -sf \.\.\/init.d\/pmie \/etc\/rc\.d\//d' \ + -e "s;$PCP_PMIECONTROL_PATH;\$PCP_PMIECONTROL_PATH;" \ + -e '/^\.\.*done$/d' \ + -e "s;/private/tmp;/tmp;g" \ + -e '/^$/d' \ + | _filter_init_distro +} + +_filter_pmie_stop() +{ + sed \ + -e "s;$PCP_RC_DIR/pmie;\$PCP_RC_DIR/pmie;g" \ + -e '/^Waiting for PMIE/s/PMIE/pmie/' \ + -e '/^Waiting for pmie/s/\.\.\.[. ]*done/.../' \ + -e '/^Waiting for pmie/s/\.\.\. *$/.../' \ + | _filter_init_distro +} + +_filterall_pcp_start() +{ + _filter_pcp_start \ + | sed \ + -e '/rebuilding PMNS/d' \ + -e '/installing /d' +} + +_sort_pmdumplog_d() +{ + cat >$tmp.tmp + egrep '(^Descriptions)|(^$)' $tmp.tmp + $PCP_AWK_PROG <$tmp.tmp ' +/^Descriptions/ { next } +NF == 0 { next } +$1 == "PMID:" { printf "%s|",$0; next } +$1 == "Data" { printf "%s|",$0; next } + { print }' \ + | LC_COLLATE=POSIX _POSIX2_VERSION=0 sort -t'(' +1 -2 \ + | tr '|' '\012' \ + | src/hex2nbo +} + +_filter_pmda_install() +{ + sed \ + -e 's/.* \(hash table entries\)/ NNN \1/' \ + -e 's/.* \(non-leaf nodes\)/ NNN \1/' \ + -e 's/.* \(leaf nodes\)/ NNN \1/' \ + -e 's/.* \(bytes of symbol table\)/ NNN \1/' \ + -e '/^Installing .mchart view*/d' \ + -e '/Terminate PMDA/,/Updating the PMCD/c\ +Terminate PMDA if already installed ...\ +[...install files, make output...]\ +Updating the PMCD control file, and notifying PMCD ...' \ + -e '/Installing files/,/Updating the Performance Metrics/c\ +Installing files ...\ +[...install files, make output...]\ +Updating the Performance Metrics Name Space (PMNS) ...' +} + +_filter_pmda_remove() +{ + _filter_pmda_install | + sed \ + -e '/Removing files/d' \ + -e '/Updating the PMCD control file/c\ +Updating the PMCD control file, and notifying PMCD ...\ +[...removing files...]' +} + +# Make sure that quotes which span multiple lines get appended onto +# the one line, separated by \\n (instead of newlines). +# This allows for easier sed processing. +# BUG: problem handling a single " which isn't supposed to match, +# say in a comment or pattern search +# Partial solution: filter out: /"/ +# +_quote_filter() +{ + sed -e 's#/"/#/dbl-quote/#g' |\ + $PCP_AWK_PROG ' + /"/ { # unfinished quote - start or end + n = split($0, arr, /"/) + if ( (n % 2) == 0) { # odd number of quotes + line[line_num++] = $0 + if (inquote) { + inquote = 0 + for(i=0;i<=line_num;i++){ + printf("%s\\n", line[i]) + } + printf("\n") + line_num = 0 + } + else { + inquote = 1 + } + next + } + else { + print; next + } + } + inquote == 1 { + line[line_num++] = $0 + next + } + {print} + ' +} + +# +# concat lines between inst/value pairs +# inst ... value +# inst ... value XXXX +# YYYYYYY +# inst ... value +# becomes +# inst ... value +# inst ... value XXXX\\nYYYYYYY +# inst ... value +# +_inst_value_filter() +{ + $PCP_AWK_PROG ' + function print_line() { + if (line_num > 0) { + for(i=0;i<line_num-1;i++){ + printf("%s\\n", line[i]) + } + printf("%s", line[line_num-1]); + printf("\n") + line_num = 0 + } + } +$1 == "inst" && $2 ~ /^\[/ { + print_line() + line[line_num++] = $0 + next + } + # terminate run of inst...value ".... extending over multiple + # lines with a line ending in a ", or a line introducing new + # proc metric + /"$/ && line_num > 0 { + line[line_num++] = $0 + print_line() + next + } + ( (/proc\./ && /numval/ && /valfmt/) || /^proc\./ ) \ + && line_num > 0 { + x = $0 + print_line() + print x + next + } + line_num>0 { # continuation of value + line[line_num++] = $0 + next + } + {print} + END { + print_line() + } + ' +} + +_filter_torture_api() +{ + sed \ + -e '/Name space load/d' \ + -e '/PMAPI operations/s/[0-9][0-9]* PMAPI/N PMAPI/' \ + | _filter_top_pmns \ + | _filter_dumpresult \ + | sed -e '/PM_ID_NULL/{ +/No values returned!/s//No PMDA, no values [filtered]/ +/No PMCD agent for domain of request/s//No PMDA, no values [filtered]/ +}' \ + -e '/kernel\.all\.pswitch/s/valfmt: [01]/valfmt: 0-or-1/' \ + -e '/kernel\.all\.cpu/s/valfmt: [01]/valfmt: 0-or-1/' \ + -e '/^ hostname /d' \ + -e '/^ license /d' \ + -e '/^ services /d' \ + -e '/^ aconex /d' \ + -e '/^ apache /d' \ + -e '/^ bonding /d' \ + -e '/^ cihb /d' \ + -e '/^ cms /d' \ + -e '/^ cxfs /d' \ + -e '/^ dmcache /d' \ + -e '/^ dynamic /d' \ + -e '/^ elasticsearch /d' \ + -e '/^ engr /d' \ + -e '/^ feature /d' \ + -e '/^ idiot /d' \ + -e '/^ idl /d' \ + -e '/^ infiniband /d' \ + -e '/^ ipc /d' \ + -e '/^ kaio /d' \ + -e '/^ kpreempt /d' \ + -e '/^ kswitch /d' \ + -e '/^ kvm /d' \ + -e '/^ maillog /d' \ + -e '/^ mounts /d' \ + -e '/^ mt /d' \ + -e '/^ named /d' \ + -e '/^ nasavg /d' \ + -e '/^ netfilter /d' \ + -e '/^ numa /d' \ + -e '/^ nvidia /d' \ + -e '/^ origin /d' \ + -e '/^ papi /d' \ + -e '/^ pdns /d' \ + -e '/^ p76 /d' \ + -e '/^ process /d' \ + -e '/^ roomtemp /d' \ + -e '/^ rpm /d' \ + -e '/^ rsyslog /d' \ + -e '/^ samba /d' \ + -e '/^ softtemp /d' \ + -e '/^ stream /d' \ + -e '/^ sysfs /d' \ + -e '/^ sysioctl /d' \ + -e '/^ tmpfs /d' \ + -e '/^ udf /d' \ + -e '/^ vfs /d' \ + -e '/^ vmware /d' \ + -e '/^ waitio /d' \ + -e '/^ xvm /d' \ + -e '/^ zimbra /d' \ + -e '/^ zswap /d' \ + +} + +_filter_install() +{ + sed \ + -e 's/.* \(hash table entries\)/ NNN \1/' \ + -e 's/.* \(non-leaf nodes\)/ NNN \1/' \ + -e 's/.* \(leaf nodes\)/ NNN \1/' \ + -e 's/.* \(bytes of symbol table\)/ NNN \1/' \ + -e '/Performance Co-Pilot starting/d' +} + +_filter_post() +{ + sed \ + -e 's/^host [^ :]*:/host <host>:/' +} + +_filter_console() +{ + sed \ + -e 's/^ *[0-9]*\.[0-9][0-9]/<timestamp>/' \ + -e 's/0x0$/(nil)/' \ + -e 's/0x[0-9a-f]*/<addr>/' \ + -e 's/src=[^ ]*/src=<host>/' \ + -e '/Tab::updateTimeAxis:/s/used .*/used .../' +} + +_filter_views() +{ + sed \ + -e "s,^Load View: $PCP_VAR_DIR,Load View: PCP_VAR_DIR," \ + -e '/QGtkStyle was unable to detect the current GTK+ theme./d' +} |