From 47e6e7c84f008a53061e661f31ae96629bc694ef Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sun, 26 Oct 2014 12:33:50 +0400 Subject: Debian 3.9.10 --- qa/555 | 253 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100755 qa/555 (limited to 'qa/555') diff --git a/qa/555 b/qa/555 new file mode 100755 index 0000000..9968833 --- /dev/null +++ b/qa/555 @@ -0,0 +1,253 @@ +#!/bin/sh +# PCP QA Test No. 555 +# pmie syslog(3) changes and parsing -t tag and -p pri arguments in +# a syslog action +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard environment, filters and checks +. ./common.product +. ./common.filter +. ./common.check +. ./localconfig + +rm -f $seq.out +case $PCP_PLATFORM +in + irix|linux) + ln $seq.$PCP_PLATFORM $seq.out || exit 1 + ;; + darwin|solaris) + ln $seq.linux $seq.out || exit 1 + ;; + *) + _notrun "No qualified output exists for $PCP_PLATFORM" + ;; +esac + +$sudo rm -f $seq.full /tmp/syslog.full /tmp/syslog.out + +signal=$PCP_BINADM_DIR/pmsignal +status=1 # failure is the default! + +update_config=true +systemctl=false +upstart=false +if [ -f /etc/rsyslog.conf -a -f /var/run/*syslogd.pid ] +then + # smells like rsyslogd + # + ( echo "smells like rsyslogd"; ls -l /etc/rsyslog.conf /var/run/*syslogd.pid ) >>/tmp/syslog.full + daemon=rsyslogd + config=/etc/rsyslog.d/pcpqa.conf + update_config=false + # For Ubuntu 9.10 (at least) SIGHUP to rsyslogd does not really + # restart rsyslogd ... worse, /etc/init.d/rsyslogd may have been + # converted to use "upstart" + # + if initctl version 2>&1 | grep -q upstart + then + upstart=true + elif [ -f /etc/init.d/rsyslog ] + then + init=/etc/init.d/rsyslog + elif [ -f /etc/init.d/syslog ] + then + # the SuSE way + upstart=false + init=/etc/init.d/syslog + else + if `which systemctl >/dev/null 2>&1` + then + systemctl=true + else + echo "Botch: using rsyslog, but I don't know how to stop/start it" + exit 1 + fi + fi + echo "upstart=$upstart" >>/tmp/syslog.full + echo "systemctl=$systemctl" >>/tmp/syslog.full + echo "init=$init" >>/tmp/syslog.full +elif [ -f /etc/syslog.conf ] +then + # regular old syslogd + # + ( echo "smells like old syslogd"; ls -l /etc/rsyslog.conf ) >>/tmp/syslog.full + daemon=syslogd + config=/etc/syslog.conf +else + _notrun "No /etc/*syslog.conf -- probably using a different syslog package" +fi + +# avoid systemd/systemctl wrapper +# +[ -f /etc/SuSE-release ] && export SYSTEMD_NO_WRAP=1 +[ -f /etc/fedora-release ] && export SYSTEMCTL_SKIP_REDIRECT=1 + +cleanup() +{ + if [ -f $config.$seq ]; then + if $update_config + then + $sudo mv $config.$seq $config + else + $sudo rm $config.$seq $config + fi + if [ $daemon = rsyslogd ] + then + if $upstart + then + $sudo service rsyslog restart >>/tmp/syslog.full 2>&1 + elif $systemctl + then + $sudo systemctl restart rsyslog + else + # kill should be enough, but restart to be sure + # + # $sudo kill -HUP `cat /var/run/rsyslogd.pid` || exit + $sudo $init restart >>/tmp/syslog.full 2>&1 + fi + else + $sudo $signal -a -s HUP $daemon || exit + fi + fi + $sudo mv /tmp/syslog.full $seq.full + $sudo rm -f /tmp/syslog.out + rm -f $tmp.* +} +trap "cleanup; exit \$status" 0 1 2 3 15 + +# move aside the current syslog configuration, as we have NFI +# what kind of setup is in use and where our messages will go +# +setup() +{ + # let rsyslog create it, to ensure any security labels setup + if [ $daemon != rsyslogd ] + then + $sudo cp /dev/null /tmp/syslog.out || exit + $sudo chmod 666 /tmp/syslog.out || exit + fi + if $update_config + then + $sudo mv $config $config.$seq || exit + else + $sudo touch $config.$seq + fi + echo '*.* /tmp/syslog.out' >$tmp.syslog.conf + $sudo cp $tmp.syslog.conf $config || exit + echo "config=$config" >>/tmp/syslog.full + $sudo cat $config >>/tmp/syslog.full + if [ $daemon = rsyslogd ] + then + if $upstart + then + $sudo service rsyslog restart >>/tmp/syslog.full 2>&1 + elif $systemctl + then + $sudo systemctl restart rsyslog >>/tmp/syslog.full 2>&1 + else + # kill should be enough, but restart to be sure + # + # $sudo kill -HUP `cat /var/run/rsyslogd.pid` || exit + $sudo $init restart >>/tmp/syslog.full 2>&1 + fi + else + $sudo $signal -a -s HUP $daemon || exit + fi +} + +# real QA test starts here +echo "ps before setup ..." >>/tmp/syslog.full +$PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '([P]ID)|([s]yslog)' >>/tmp/syslog.full +setup +echo "ps after setup ..." >>/tmp/syslog.full +$PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '([P]ID)|([s]yslog)' >>/tmp/syslog.full + +# syslog logger -p +# 5D daemon.notice <--- default +# 6D daemon.info +# 4D daemon.warning +# 5B user.notice +# 6B user.info +# 4B user.warning +# 5Q local0.notice +# 6Q local0.info +# 4Q local0.warning + +cat <<'End-of-File' >$tmp.conf +// errors +hinv.ncpu > 0 -> syslog "-t"; +hinv.ncpu > 0 -> syslog "-ttag extra"; +hinv.ncpu > 0 -> syslog "-t" "tag extra"; +hinv.ncpu > 0 -> syslog "-p"; +hinv.ncpu > 0 -> syslog "-pinfo extra" "-pinfo [6D]" "{1}"; +hinv.ncpu > 0 -> syslog "-p" "info extra" "-pinfo [6D]" "{2}"; +hinv.ncpu > 0 -> syslog "-p" "evil" "-t" "bogus" "bad -p evil and -t" "{3}"; +hinv.ncpu > 0 -> syslog "-p" "evil.info" "bad facil for -p evil.info [6D]" "{4}"; +hinv.ncpu > 0 -> syslog "-p" "user.evil" "bad pri for -p user.evil [5B]" "{5}"; + +// OK +hinv.ncpu > 0 -> syslog "-t" "foo" "-p" "user.notice" "-t & -pinfo, 4 args [5B]" "{6}"; +hinv.ncpu > 0 -> syslog "-t" "foo" "-puser.notice" "-t & -pinfo, 3 args [5B]" "{7}"; +hinv.ncpu > 0 -> syslog "-tfoo" "-pinfo" "-t & -pinfo, 2 args [6D]" "{8}"; +hinv.ncpu > 0 -> syslog "-p" "user.info" "-p user.info, 2 args [6B]" "{9}"; +hinv.ncpu > 0 -> syslog "-pdaemon.info" "-pdaemon.info, 1 arg [6D]" "{10}"; +hinv.ncpu > 0 -> syslog "-t" "foo" "-t 2 args" "{11}"; +hinv.ncpu > 0 -> syslog "-tfoo" "-t 1 arg" "{12}"; +hinv.ncpu > 0 -> syslog "no -t or -p args" "{13}"; + + +// OK + holdoff +hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-p" "local0.notice" "-t & -pinfo, 4 args [5Q] + holdoff" "{14}"; +hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-plocal0.notice" "-t & -pinfo, 3 args [5Q] + holdoff" "{14}"; +hinv.ncpu > 0 -> syslog 1 min "-tfoo" "-pinfo" "-t & -pinfo, 2 args [6D] + holdoff" "{15}"; +hinv.ncpu > 0 -> syslog 1 min "-p" "local0.info" "-p user.info, 2 args [6Q] + holdoff" "{16}"; +hinv.ncpu > 0 -> syslog 1 min "-pdaemon.info" "-pdaemon.info, 1 arg [6D] + holdoff" "{17}"; +hinv.ncpu > 0 -> syslog 1 min "-t" "foo" "-t 2 args + holdoff" "{18}"; +hinv.ncpu > 0 -> syslog 1 min "-tfoo" "-t 1 arg + holdoff" "{19}"; +hinv.ncpu > 0 -> syslog 1 min "no -t or -p args + holdoff" "{20}"; + +End-of-File + +pmie -t 2sec -T 5sec >$tmp.log 2>&1 -c $tmp.conf & +wait + +sed <$tmp.log \ + -e "/Info: evaluator exiting/d" \ + -e "s;$tmp;TMP;;" + +sleep 5 +echo + +# note - runpriv lines noticed on krelly with SGIconsole 2.0 +# note - agetty lines noticed on canary with SLES9 SP1 beta2 +# note - DHCPDISCOVER lines noticed on kenj-laptop with Ubuntu 8.10 +# +echo "=== all of syslog ===" >>/tmp/syslog.full +$sudo cat /tmp/syslog.out >>/tmp/syslog.full +echo >>/tmp/syslog.full +echo "=== syslog for pid $! ===" >>/tmp/syslog.full +# More recent syslog format seen on Ubuntu 11.04 +# (high-precision rsyslog timestamps, traditional-mode no longer enabled) +# 2011-07-09T10:38:40+10:00 HOST pcp-pmie[PID]: +# +$sudo grep '\['$!']:' /tmp/syslog.out \ +| tee -a /tmp/syslog.full \ +| sed \ + -e 's/^[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/^[0-9][0-9][0-9][0-9]-[0-9][0-9]*-[0-9][0-9]*T[0-9][0-9]:[0-9][0-9]:[0-9][0-9][^ ]* /DATE /' \ + -e "s/\\[$!]/[PID]/" \ + -e "s/`hostname | sed -e 's/\..*//'` /HOST /" \ + -e 's/[0-9][A-Z]:HOST/HOST/' \ + -e '/ sudo: .*syslog.out$/d' \ + | LC_COLLATE=POSIX sort \ + | uniq + +# success, all done +status=0 +exit -- cgit v1.2.3