#! /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 <$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 <$tmp.d1 root { d1 1:1:1 } End-of-File cat <$tmp.one.d2 one { d2 2:1:2 } End-of-File cat <$tmp.one.one.d3 one.one { d3 3:1:3 } End-of-File cat <$tmp.one.one.d6 one.one { d6 6:1:6 } End-of-File cat <$tmp.one.one.d7 one.one { d7 7:1:7 } End-of-File cat <$tmp.one.one.d8 one.one { d8 8:1:8 } End-of-File cat <$tmp.two.d4 two { d4 4:1:4 } End-of-File cat <$tmp.two.d9 two { d9 9:1:9 } End-of-File cat <$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