summaryrefslogtreecommitdiff
path: root/qa/639
diff options
context:
space:
mode:
Diffstat (limited to 'qa/639')
-rwxr-xr-xqa/639236
1 files changed, 236 insertions, 0 deletions
diff --git a/qa/639 b/qa/639
new file mode 100755
index 0000000..0da5bc6
--- /dev/null
+++ b/qa/639
@@ -0,0 +1,236 @@
+#! /bin/sh
+# PCP QA Test No. 639
+# pmnsadd concurrency issues - pv #826904
+#
+# 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
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+_add()
+{
+ while true
+ do
+ pmlock $tmp.root.lock && break
+ sleep 1
+ done
+ pmnsadd -n $tmp.root $1
+ rm -f $tmp.root.lock
+}
+
+cat <<End-of-File >$tmp.master
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+root {
+ one
+ two
+ keep1 1:0:1
+ keep2 2:0:2
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one {
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one {
+ one
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+one.one.one {
+ keep4 4:0:4
+}
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+
+two {
+ keep3 3:0:3
+}
+
+/*
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+*/
+End-of-File
+
+cat <<End-of-File >$tmp.d1
+root {
+ d1 1:1:1
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.d2
+one {
+ d2 2:1:2
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d3
+one.one {
+ d3 3:1:3
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d6
+one.one {
+ d6 6:1:6
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d7
+one.one {
+ d7 7:1:7
+}
+End-of-File
+
+cat <<End-of-File >$tmp.one.one.d8
+one.one {
+ d8 8:1:8
+}
+End-of-File
+
+cat <<End-of-File >$tmp.two.d4
+two {
+ d4 4:1:4
+}
+End-of-File
+
+cat <<End-of-File >$tmp.two.d9
+two {
+ d9 9:1:9
+}
+End-of-File
+
+cat <<End-of-File >$tmp.three.one.d5
+three.one {
+ d5 5:1:5
+}
+End-of-File
+
+# real QA test starts here
+echo "Initial state ..."
+pminfo -m -n $tmp.master
+
+echo
+echo "Serial additions ..."
+echo "Serial additions ..." >$seq.full
+cp $tmp.master $tmp.root
+for m in $tmp.d1 $tmp.one.d2 $tmp.one.one.d3 $tmp.two.d4 $tmp.three.one.d5 \
+ $tmp.one.one.d6 $tmp.one.one.d7 $tmp.one.one.d8 $tmp.two.d9
+do
+ pmnsadd -n $tmp.root $m 2>&1
+done \
+| tee -a $seq.full \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+pminfo -m -n $tmp.root | LC_COLLATE=POSIX sort
+
+echo
+echo "Parallel additions ..."
+echo "Parallel additions ..." >>$seq.full
+cp $tmp.master $tmp.root
+rm -f $tmp*.out
+for m in $tmp.d1 $tmp.one.d2 $tmp.one.one.d3 $tmp.two.d4 $tmp.three.one.d5 \
+ $tmp.one.one.d6 $tmp.one.one.d7 $tmp.one.one.d8 $tmp.two.d9
+do
+ _add $m >$m.out 2>&1 &
+done
+wait
+
+cat $tmp*.out \
+| grep ' leaf' \
+| LC_COLLATE=POSIX sort -nr
+echo
+
+for f in $tmp*.out
+do
+ echo >>$seq.full
+ echo "=== $f ===" >>$seq.full
+ cat $f >>$seq.full
+done
+
+pminfo -m -n $tmp.root | LC_COLLATE=POSIX sort
+
+# success, all done
+exit