summaryrefslogtreecommitdiff
path: root/qa/223
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/223
downloadpcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/223')
-rwxr-xr-xqa/223337
1 files changed, 337 insertions, 0 deletions
diff --git a/qa/223 b/qa/223
new file mode 100755
index 0000000..facf0e7
--- /dev/null
+++ b/qa/223
@@ -0,0 +1,337 @@
+#! /bin/sh
+# PCP QA Test No. 223
+# Exercise the new pmns/Rebuild
+#
+# 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
+
+[ $PCP_PLATFORM = irix ] || _notrun "tests the IRIX Rebuild script"
+
+_copy_Rebuild()
+{
+ scr_src=$PCP_VAR_DIR/pmns/
+ cp $scr_src/Rebuild $1
+ if [ -f $scr_src/Xlate-irix-names ]
+ then
+ cp $scr_src/Xlate-irix-names $1
+ fi
+}
+
+_filter ()
+{
+ sed \
+ -e "s/\/$$/\/PID/g" \
+ -e 's/^\*\*\*.*[^*]$/*** old file/' \
+ -e 's/^---.*[^-]$/--- new file/'
+}
+
+_setup() {
+ PMNS_OLD=$tmp/old
+ PMNS_NEW=$tmp/new
+ export PMNS_OLD PMNS_NEW
+ rm -rf $PMNS_OLD $PMNS_NEW
+ mkdir -p $PMNS_NEW
+ mkdir -p $PMNS_OLD
+ echo >$PMNS_NEW/root 'root {
+ foo
+}
+foo {
+ one 0:0:1
+}'
+}
+
+_setup_wxy()
+{
+ echo >$PMNS_NEW/root '
+root {
+ extra
+}
+extra {
+ xxx
+ yyy
+}
+#include "xxx"
+#include "yyy"'
+
+ echo >$PMNS_NEW/www.orphan '
+extra.www {
+ two 0:0:2
+}'
+
+ echo >$PMNS_NEW/xxx '
+extra.xxx {
+ two 0:0:3
+}'
+
+ echo '/* new */' >$PMNS_NEW/xxx.N
+ cat $PMNS_NEW/xxx >>$PMNS_NEW/xxx.N
+
+ echo >$PMNS_NEW/yyy '
+extra.yyy {
+ two 0:0:4
+}'
+
+ echo '/* old */' >$PMNS_NEW/yyy.O
+ cat $PMNS_NEW/yyy >>$PMNS_NEW/yyy.O
+}
+
+_check()
+{
+ echo "Exit status: $1"
+ type=unknown
+ [ -d $PMNS_OLD ] && type=directory
+ [ -f $PMNS_OLD ] && type=file
+ [ -L $PMNS_OLD ] && type=symlink
+ echo "PMNS_OLD pathname is: $type"
+ echo "PMNS_NEW contents:"
+ ls $PMNS_NEW
+ $DO_VALIDATE && _validate
+}
+
+_validate()
+{
+ ( cd $PMNS_NEW; pmnscomp -f -n root root.bin )
+ echo "pminfo:"
+ pminfo -m -n $PMNS_NEW/root >$tmp.out 2>&1
+ status=$?
+ _filter <$tmp.out
+ if [ $status != 0 ]
+ then
+ for file in $PMNS_NEW/*
+ do
+ echo "=========================="
+ echo "new/`basename $file`"
+ echo "=========================="
+ cat $file
+ done
+ fi
+}
+
+_remove_rebuild()
+{
+ rm -f $1/Rebuild
+ if [ -f $1/Xlate-irix-names ]
+ then
+ rm -f $1/Xlate-irix-names
+ fi
+}
+
+# get standard filters
+. ./common.filter
+
+tmp=/tmp/$$
+status=0
+DO_VALIDATE=true
+trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+echo "=== PMNS_OLD does not exist ==="
+_setup
+rm -rf $PMNS_OLD
+echo "=== PMNS_OLD does not exist ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD is empty ==="
+_setup
+echo "=== PMNS_OLD is empty ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD contains scripts that can safely be nuked ==="
+_setup
+touch $PMNS_OLD/Brand $PMNS_OLD/Makefile $PMNS_OLD/Rebuild
+echo "=== PMNS_OLD contains scripts that can safely be nuked ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD contains files not in conflict with PMNS_NEW, copy them ==="
+_setup
+touch $PMNS_OLD/root.N $PMNS_OLD/urk $PMNS_OLD/urk.O
+echo >$PMNS_OLD/xxx '
+extra.xxx {
+ two 0:0:3
+}'
+echo "=== PMNS_OLD contains files not in conflict with PMNS_NEW, copy them ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== files in PMNS_OLD and PMNS_NEW are identical ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+cp $PMNS_NEW/* $PMNS_OLD
+echo "=== files in PMNS_OLD and PMNS_NEW are identical ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== salvage useful stuff from PMNS_OLD ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+mv $PMNS_NEW/xxx* $PMNS_OLD
+DO_VALIDATE=false
+_check N/A
+DO_VALIDATE=true
+echo "=== salvage useful stuff from PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== hard cases ==="
+_setup
+_setup_wxy
+rm $PMNS_NEW/www*
+sed -e 's/two/three/' <$PMNS_NEW/xxx.N >$PMNS_OLD/xxx
+sed -e 's/two/three/' <$PMNS_NEW/yyy.O >$PMNS_OLD/yyy
+_check N/A
+echo "=== hard cases ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== PMNS_OLD is a file (error) ==="
+_setup
+rm -rf $PMNS_OLD
+touch $PMNS_OLD
+echo "=== PMNS_OLD is a file (error) ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== www.orphan, xxx.N and yyy.O in both places, waste the ones from PMNS_OLD ==="
+_setup
+_setup_wxy
+touch $PMNS_OLD/www.orphan $PMNS_OLD/xxx.N $PMNS_OLD/yyy.O
+_check N/A
+echo "=== www.orphan, xxx.N and yyy.O in both places, waste the ones from PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== orphan (saveme) in PMNS_OLD ==="
+_setup
+touch $PMNS_OLD/saveme
+echo "=== orphan (saveme) in PMNS_OLD ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+echo
+echo "=== nested decls, a la DBMS PMDAS ==="
+_setup
+ echo >$PMNS_NEW/root '
+root {
+ extra
+}
+#include "extra"'
+
+ echo >$PMNS_NEW/extra '
+extra {
+ xxx
+ yyy
+}
+#include "xxx"
+#include "yyy"'
+
+ echo >$PMNS_NEW/xxx '
+#define CLUST 1
+#define ID xxx
+extra.xxx {
+#include "dummy"
+#undef CLUST
+#undef ID'
+
+ echo >$PMNS_NEW/yyy '
+#define CLUST 2
+#define ID yyy
+extra.yyy {
+#include "dummy"
+#undef CLUST
+#undef ID'
+
+ echo >$PMNS_NEW/dummy '
+ one 0:CLUST:1
+ special
+}
+
+extra.ID.special {
+ two 0:CLUST:2
+ three 0:CLUST:3
+}
+'
+
+echo "=== nested decls, a la DBMS PMDAS ===" >>$seq.full
+ls -lR $PMNS_OLD $PMNS_NEW >>$seq.full 2>&1
+_copy_Rebuild $PMNS_NEW
+$sudo "cd $PMNS_NEW; ./Rebuild -uv" >$tmp.err
+chk=$?
+_remove_rebuild $PMNS_NEW
+_filter <$tmp.err
+_check $chk
+
+# all done
+exit