diff options
Diffstat (limited to 'qa/187')
-rwxr-xr-x | qa/187 | 135 |
1 files changed, 135 insertions, 0 deletions
@@ -0,0 +1,135 @@ +#! /bin/sh +# PCP QA Test No. 187 +# for bug #327288 - $PCP_RC_DIR/pcp blows away $PCP_TMP_DIR/pmlogger entries +# +# Note ... this will be a "sometimes" failure ... requires special +# combinations of pids such that sort != sort -n and comm gets confused +# $PCP_RC_DIR/pcp +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check + +sts=0 +trap "$sudo rm -f $tmp.*; exit \$sts" 0 1 2 3 15 +signal=$PCP_BINADM_DIR/pmsignal + +rm -f $seq.full + +_burn_pids() +{ + # burn off 1024 pids + # + for i in 1 2 3 4 5 6 7 8 + do + for j in 1 2 3 4 5 6 7 8 + do + for k in 1 2 3 4 5 6 7 8 + do + for l in 1 2 + do + true + done + done + done + done +} + +_check() +{ + ( echo "this" $this_pid; + echo "other" $other_pid; + echo "other-fqdn" $otherfqdn_pid; ) \ + | while read tag pid + do + $PCP_ECHO_PROG $PCP_ECHO_N "map file for $tag host""$PCP_ECHO_C" + if [ -f $PCP_TMP_DIR/pmlogger/$pid ] + then + $PCP_ECHO_PROG " present" + else + $PCP_ECHO_PROG $PCP_ECHO_N " missing ... ""$PCP_ECHO_C" + + if [ "$tag" = this ] + then + $PCP_ECHO_PROG "expected for this host when PMCD killed" + else + $PCP_ECHO_PROG "NOT EXPECTED" + echo "pid=$pid, $PCP_TMP_DIR/pmlogger contains" + ls -l $PCP_TMP_DIR/pmlogger + echo "pmlogger processes ..." + ps $PCP_PS_ALL_FLAGS | grep pmlogger + echo "pmlogger log file for missing one ..." + cat $tmp.$pid + fi + fi + done +} + +otherhost=`./getpmcdhosts -L -n 1` +[ -z "$otherhost" ] && _notrun "Cannot find a remote host running pmcd" +echo "otherhost=$otherhost" >>$seq.full +otherip=`_host_to_ipaddr $otherhost` +if [ -z "$otherip" ] +then + echo "Arrgh ... cannot get IP addr for otherhost=$otherhost" + sts=1 + exit +fi +echo "otherip=$otherip" >>$seq.full + +# real QA test starts here +_start_up_pmlogger -L -c /dev/null -l $tmp.log1 -s1 $tmp.this >/dev/null 2>&1 +this_pid=$pid +echo "this logger pid=$this_pid" >>$seq.full +_wait_for_pmlogger $this_pid $tmp.log1 +$sudo mv $tmp.log1 $tmp.$this_pid + +trap "$signal $this_pid $other_pid $otherfqdn_pid >/dev/null 2>&1; wait; $sudo rm -fr $tmp.*; exit \$sts" 0 1 2 3 15 + +_burn_pids + +_start_up_pmlogger -h $otherhost -L -c /dev/null -l $tmp.log2 -s1 $tmp.other >/dev/null 2>&1 +other_pid=$pid +echo "other host=$otherhost logger pid=$other_pid" >>$seq.full +_wait_for_pmlogger $other_pid $tmp.log2 +$sudo mv $tmp.log2 $tmp.$other_pid + +_burn_pids + +_start_up_pmlogger -h $otherip -L -c /dev/null -l $tmp.log3 -s1 $tmp.other.fqdn >/dev/null 2>&1 +otherfqdn_pid=$pid +echo "other fqdnhost=$otherip logger pid=$otherfqdn_pid" >>$seq.full +_wait_for_pmlogger $otherfqdn_pid $tmp.log3 +$sudo mv $tmp.log3 $tmp.$otherfqdn_pid + +# check entries +_check + +$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start +_wait_for_pmcd +_wait_for_pmlogger + +# check again +_check + +echo >>$seq.full +echo "=== this log ===" >>$seq.full +cat $tmp.$this_pid >>$seq.full + + +echo >>$seq.full +echo "=== other log ===" >>$seq.full +cat $tmp.$other_pid >>$seq.full + + +echo >>$seq.full +echo "=== otherfqdn log ===" >>$seq.full +cat $tmp.$otherfqdn_pid >>$seq.full + |