#! /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