summaryrefslogtreecommitdiff
path: root/qa/187
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/187
downloadpcp-debian.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/187')
-rwxr-xr-xqa/187135
1 files changed, 135 insertions, 0 deletions
diff --git a/qa/187 b/qa/187
new file mode 100755
index 0000000..fd67d72
--- /dev/null
+++ b/qa/187
@@ -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
+