1 #! /usr/bin/ksh -p
   2 #
   3 # CDDL HEADER START
   4 #
   5 # The contents of this file are subject to the terms of the
   6 # Common Development and Distribution License (the "License").
   7 # You may not use this file except in compliance with the License.
   8 #
   9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10 # or http://www.opensolaris.org/os/licensing.
  11 # See the License for the specific language governing permissions
  12 # and limitations under the License.
  13 #
  14 # When distributing Covered Code, include this CDDL HEADER in each
  15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16 # If applicable, add the following below this CDDL HEADER, with the
  17 # fields enclosed by brackets "[]" replaced with your own identifying
  18 # information: Portions Copyright [yyyy] [name of copyright owner]
  19 #
  20 # CDDL HEADER END
  21 #
  22 
  23 #
  24 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  25 # Use is subject to license terms.
  26 #
  27 # control program for OPEN op tests
  28 
  29 [[ -n $DEBUG && $DEBUG != 0 ]] && set -x
  30 
  31 NAME=$(basename $0)
  32 DIR=$(dirname $0)
  33 CDIR=$(pwd)
  34 TESTROOT=${TESTROOT:-"$CDIR/../../"}
  35 TESTTAG="OPEN"
  36 TESTLIST=$(egrep -v "^#|^  *$" ${TESTTAG}.flist)
  37 
  38 # sourcing framework global environment variables created after go_setup
  39 # and for this purpose only this file should be sourced
  40 CONFIGFILE=/var/tmp/nfsv4/config/config.suite
  41 if [[ ! -f $CONFIGFILE ]]; then
  42         echo "$NAME: CONFIGFILE[$CONFIGFILE] not found;"
  43         echo "\texit UNINITIATED."
  44         exit 6
  45 fi
  46 . $CONFIGFILE
  47 
  48 #source support functions
  49 TESTSH="$TESTROOT/testsh"
  50 . $TESTSH
  51 
  52 iscipso=0
  53 is_cipso "vers=4" $SERVER
  54 if (( $? == $CIPSO_NFSV4 )); then
  55         iscipso=1
  56         # In open_neg04{a}, we need to do "Open" operation in non-global zone
  57         # for TX test, so add a tcl script to non-global zone.
  58         echo "connect $SERVER" > $ZONE_PATH/root/open_neg04
  59         echo 'set res [compound {Putfh $env(qfh); \
  60                 Open $env(seqid) 3 0 "$env(cid) $env(owner)-a" \
  61                 {1 0 {{mode 0644}}} {0 "$env(tf)"}; Getfh}]' \
  62                 >> $ZONE_PATH/root/open_neg04
  63         echo 'puts "$status $res"' >> $ZONE_PATH/root/open_neg04
  64         echo 'disconnect' >> $ZONE_PATH/root/open_neg04
  65 fi
  66 
  67 # Start the tests with some information
  68 echo
  69 echo "Testing at CLIENT=[$CLIENT] to SERVER=[$SERVER]"
  70 echo "Started $TESTTAG op tests at [$(date)] ..."
  71 echo
  72 
  73 # Now ready to run the tests
  74 (
  75 for t in $TESTLIST; do
  76         # Need to switch to $TUSER2 for quota testing
  77         grep QUOT $t >/dev/null 2>&1
  78         rc=$?
  79         grep $TUSER2 /etc/passwd >/dev/null 2>&1
  80         rc=$(( $rc + $iscipso + $? ))
  81         if (( rc == 0 )); then
  82                 su $TUSER2 -c "(. $CONFIGFILE; \
  83                         $TESTROOT/nfsh $t)"
  84         else
  85                 # check if need to run as root
  86                 grep ROOTDIR $t >/dev/null 2>&1
  87                 if (( $? == 0 )); then
  88                         /suexec "$TESTROOT/nfsh $t"
  89                 else
  90                         $TESTROOT/nfsh $t
  91                 fi
  92         fi
  93 done
  94 )
  95 
  96 [[ $iscipso == 1 ]] && rm $ZONE_PATH/root/open_neg04
  97 
  98 echo
  99 echo "Testing ends at [$(date)]."
 100 echo 
 101 exit $PASS