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