1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
25 #
26 # ident "@(#)README 1.20 09/08/23 SMI"
27 #
28
29 DESCRIPTION:
30 ===========
31 This is the 'sharemnt' test suite which consists of tests for
32 share_nfs(1M), mount_nfs(1M), sharemgr(1M) and "zfs set sharenfs".
33
34
35 INSTALLATION:
36 ============
37 You can install the suite package, or install the suite source and
38 build by yourself.
39
40 1. Installing from Packages
41
42 o In the majority of cases, the test suite can be installed from
43 packages. To do that, you need to be as root. The package is
44 called SUNWstc-nfs-sharemnt and installs into "/opt" by default.
45 Installation is via the standard Solaris package installation
46 tool pkgadd(1M). To install SUNWstc-nfs-sharemnt simply enter the
47 following command line:
48
49 # pkgadd -d <package location> SUNWstc-nfs-sharemnt
50
51 Where <package location> refers to the path containing the
52 SUNWstc-nfs-sharemnt package directory.
53
54 It is recommended that you install the packages from scratch,
55 rather than on top of an existing installation. Thus, if an
56 old version of the tests is installed:
57
58 # pkgrm SUNWstc-nfs-sharemnt
59
60 o It is also acceptable to use an nfs accessible version of the
61 SUNWstc-nfs-sharemnt package.
62
63 2. Installing the Test Suite Source
64
65 You can install the suite source locally as any user.
66
67
68 UNINSTALLATION:
69 ==============
70 Prior to uninstalling the test suite, you may want to run
71 stf_unconfigure first. For more detail see UNCONFIGURATION.
72
73 1. Uninstalling the Test Suite Package
74
75 Use the standard Solaris package installation tool pkgrm(1M) to
76 uninstall the package as root:
77
78 # pkgrm SUNWstc-nfs-sharemnt
79
80 2. Uninstalling the Test Suite Source
81
82 You can remove the corresponding directory.
83
84
85 BUILDING:
86 ========
87 If the suite is installed from packages, you can skip this section.
88 If the suite source is installed locally, maybe you need to build
89 it. This method uses the standard STF techniques to create a Solaris
90 package, which will be installed under the base directory
91 "/opt/SUNWstc-nfs-sharemnt".
92
93 Briefly, this build and installation is performed as follows:
94
95 # set path to STF bin directory
96 $ PATH=<path-to-STF>/bin/`uname -p`:$PATH
97 $ export PATH
98
99 # WS_ROOT is the root of the STC workspace containing sharemnt source code
100 $ cd <WS_ROOT>/usr/src/suites/nfs/sharemnt
101 $ stf_build package
102 $ cd <WS_ROOT>/packages/`uname -p`
103 $ sudo pkgadd -d `pwd` SUNWstc-nfs-sharemnt
104
105
106 PREREQUISITES:
107 =============
108 The suite runs in remote networking mode. You need to prepare
109 two systems to run all tests. One is the local host where the
110 tests are run and the other one is the remote system acting as
111 the NFS SERVER.
112
113 Also, please do the followings before running the tests:
114
115 1. Make sure STF and STC genutils Tools be in your PATH.
116
117 You can use either a local installation of the SUNWstc-stf and
118 SUNWstc-genutils packages:
119
120 $ PATH=$PATH:/opt/SUNWstc-stf/bin/$(isainfo -n)
121 $ PATH=$PATH:/opt/SUNWstc-genutils/bin
122 $ export PATH
123
124 or a remote, NFS-mounted location of the tools, for example:
125
126 $ PATH=$PATH:/ws/stcnv-gate/proto/tools/stf/bin/$(isainfo -n)
127 $ PATH=$PATH:/ws/stcnv-gate/proto/tools/genutils/bin
128 $ export PATH
129
130 or the tools you build in your own workspace, for example:
131
132 $ PATH=$PATH:<WS_ROOT>/proto/tools/stf/bin/$(isainfo -n)
133 $ PATH=$PATH:<WS_ROOT>/proto/tools/genutils/bin
134 $ export PATH
135
136 Please note that if the STC genutils tool could not be accessed by
137 NFS path, it is required to install SUNWstc-genutils package to the
138 same path on all systems participating in test.
139
140 2. MUST define environment variable "SERVER".
141
142 SERVER is for your server's hostname.
143
144 3. The suite requires the "root" password to setup the server.
145 Run 'stf_configure' as a non-root user and enter the root
146 password when prompted for it.
147
148 4. All systems under testing (including the local system) must
149 enable r* service (i.e. run the command "netservices open")
150 and be able to do rcp/rsh to each other as root; (i.e. add
151 "local_host_name root" to ~root/.rhosts on server).
152
153 5. You can define the following optional variables, if not set,
154 the default value (see config.vars file) will be used.
155
156 NFSSHRDIR - the direcotry exported in server
157 NFSMNTDIR - path for localhost to mount
158 SHAREMNT_DEBUG - debug variable
159 There are two ways to turn debug on:
160 1) export SHAREMNT_DEBUG=<value>; stf_execute ...
161 2) stf_execute -c SHAREMNT_DEBUG=<value> ...
162
163 SHAREMNT_DEBUG can be set to the following <value>
164 1) "all" for the whole suite,
165 2) "RSH" for debug RSH and all scripts executed on server,
166 3) the name of the case file you want to debug (e.g. runtests),
167 4) name of function in tools/genutils/include (e.g. wait_now),
168 5) name of function in include/sharemnt.kshlib (e.g. share_check),
169 6) combination of 2-5, separated by ":".
170
171 For example:
172 1) turn debug on for the whole suite at runtime
173 $ stf_execute -c SHAREMNT_DEBUG=all
174 2) turn debug on in function share_check() and RSH()
175 $ export SHAREMNT_DEBUG=share_check:RSH; stf_execute -m i386
176
177 TESTGRP - testing group used by sharemgr
178
179 6. Trusted Extensions over a CIPSO connection
180
181 If you want to test NFS in Trusted Extensions over a CIPSO
182 connection you MUST define the variable "ZONE_PATH" with
183 <non-global zone path>
184
185 Example:
186 $ stf_configure -c "SERVER=myserver" \
187 -c "ZONE_PATH=/zone/public"
188
189 This will produce the resultant NFSSHRDIR default of:
190 /zone/public/TESTDIR_shmnt
191 And will produce the resultant NFSMNTDIR default of:
192 /zone/public/MNTDIR_shmnt
193
194 The default for ZONE_PATH is NULL.
195
196 NOTE: Only NFSv3 and NFSv4 are supported under Trusted Extensions.
197
198 7. For stress test, by default, we only share 2000 entries on
199 the server. You can reset the number with the variable
200 "NUM_SHARES".
201
202 If the expected time of sharing $NUM_SHARES entries exceeds
203 2 hours, you SHOULD reset the variable "STRESS_TIMEOUT"
204 with your expected time. Eg. if you want to share 40000
205 entries, and expected time is less than 3 hours, you can set
206 with following configuration:
207
208 $ stf_configure -c "SERVER=myserver" -c "NUM_SHARES=40000"\
209 -c "STRESS_TIMEOUT=10800"
210
211 For sharemgr group stress test, by default, we create 100 groups,
212 with 5 entries in each group. You can reset the number
213 with the variables "NUM_GROUPS" and "NUM_ENTRYS". Eg.
214 if you want to create 200 groups, with 10 entries in each
215 group, and expected time is less than 3 hours, you can set
216 with following configuration:
217
218 $ stf_configure -c "SERVER=myserver" -c "NUM_GROUPS=200"\
219 -c "NUM_ENTRYS=10" -c "STRESS_TIMEOUT=10800"
220
221 8. For multiple clients tests. If you want to run this suite on
222 multiple clients with the same SERVER simultaneously, please
223 note the followings:
224 - stress test does not support it.
225 - krb5 test does not support it.
226 - ZFS test does not support it.
227 - NFSSHRDIR, NFSMNTDIR, ZONE_PATH MUST be set as same for
228 nfslogd test.
229
230 9. For krb5 tests. STC krb5tools are required, they can be found in the
231 STC genutils tool, see more details in its README.
232
233 For using krb5tools, please make sure these packages are installed
234 or the related commands are available on your test systems:
235 - SUNWkdcr: Kerberos V5 KDC (root)
236 - SUNWkdcu: Kerberos V5 Master KDC (user)
237 - SUNWkrbr: Kerberos version 5 support (Root)
238 - SUNWkrbu: Kerberos version 5 support (Usr)
239
240 The krb5 tests also use three other env variables: DNS_DOMAIN,
241 SRV_DNS_DOMAIN, DNS_SERVER:
242
243 DNS_DOMAIN - client dns domain. Default value is
244 sfbay.sun.com.
245 SRV_DNS_DOMAIN - server dns domain. By default it has
246 the same value as DNS_DOMAIN. User need
247 to set it if server has a different
248 DNS domain than client.
249 DNS_SERVER - a dns server that can resolve client
250 and server's dns names.
251
252 Notes: DNS_DOMAIN and SRV_DNS_DOMAIN is used to construct
253 full qualified domain name for client and server, so they
254 cannot be, for example, "sun.com", instead they should
255 be "sfbay.sun.com", "ireland.sun.com", etc. BTW, although
256 test scripts can get client and server's full qualified
257 domain name automatially from dns sever, that requires
258 reverse dns lookup has been set up for machines being
259 queried, which is not always true for lab machines.
260
261 10. For sharetab tests. One case needs reboot the server, to run
262 it, please set env variable SHRTAB_REBOOT as TRUE. The
263 default value is FALSE, this case will be UNTEST.
264
265 11. If both client and server are setup with RDMA connection and you
266 want to run the tests with NFS/RDMA, set the following variable
267 before configuration:
268 $ export TESTRDMA=yes (default TESTRDMA=no)
269
270 The "proto=rdma" option will be added to the mount options of the
271 "basic" and "krb5/basic" subdirs, if TESTRMDA=yes.
272
273 12. With more share/mount options are added to basic subdir, its test
274 assertion list becomes bigger, so it takes more time to run basic
275 tests. If time is in pressure, user can choose what to run by picking
276 the option combinations from the default selectable lists(please
277 see SHROPTS_LIST, MNTOPTS_LIST and VEROPTS_LIST defined in
278 basic/basic.vars). Note: other options beyond the relative list
279 are not allowed.
280
281 For example, set the following variables before configuration:
282
283 $ export SHROPTS="rw public" (default SHROPTS=SHROPTS_LIST)
284 $ export MNTOPTS="ro proto=tcp" (default MNTOPTS=MNTOPTS_LIST)
285 $ export VEROPTS="vers=4 vers=2" (default VEROPTS=VEROPTS_LIST)
286
287 In addition, for saving the time of execution, it is strongly
288 suggested to install and use STF tools locally.
289
290 13. By default, krb5/basic will not test public option, if you want
291 to run krb5 tests with public option, set the following variable
292 before configuration:
293
294 $ export KRB5_PUBLIC=yes (default KRB5_PUBLIC=no)
295
296 And if you want to limit the NFS version tests to default, v4,
297 v3, or v2 or combination of these, set the following variable
298 before configuration, e.g. to default and v3, do:
299
300 $ export KRB5_VERS="null 3" (default KRB5_VERS="null 4 3 2")
301
302 Both variables must be set BEFORE or at "stf_configure" to generate
303 the correct set of tests, for example:
304
305 $ export KRB5_VERS="null" ; stf_configure
306 or $ stf_configure -c KRB5_VERS=4 -c KRB5_PUBLIC=yes
307
308 14. To test options quota/noquota of mount_nfs(1M) in misc_opts, if NFSSHRDIR
309 is based on UFS, they will be setup using LOFI (but NOTE that the LOFI
310 setup will be lost if you reboot the SERVER). Tests covered quota/noquota
311 options may fail expectedly if LOFI setup is gone.
312
313
314 CONFIGURATION:
315 =============
316 You can choose one of the following ways to define the variables
317 and configure your suite from the top level directory.
318
319 1) define environment variables
320 $ export SERVER=myserver
321 $ stf_configure
322
323 2) use '-c" option
324 $ stf_configure -c "SERVER=myserver" \
325 -c "SHAREMNT_DEBUG=configure"
326
327 3) use '-f' option
328 $ echo "export SERVER=myserver" > /tmp/varfile
329 $ stf_configure -f /tmp/varfile
330
331
332 EXECUTION:
333 =========
334 At execution phase, you can run 'stf_execute' by itself, or run
335 'stf_execute -c' specifying optional variables which will override
336 those specified in the configure phase.
337
338 All results will be saved in journal files under the 'STF_RESULTS'
339 directory; this directory defaults to
340 /var/tmp/SUNWstc-nfs-sharemnt/results
341 when the test suite is executed from /opt/SUNWstc-nfs-sharemnt
342
343
344 UNCONFIGURATION:
345 ===============
346 You can run 'stf_unconfigure' from the top level directory.
347 $ stf_unconfigure
348
349 Please note that in order to run tests after unconfiguration,
350 'stf_configure' must first be invoked to reconfigure the test
351 suite before running 'stf_execute'.
352
353
354 TEST STRUCTURE:
355 ==============
356 STF_TEST_SUITE--include
357 |-tests-----basic
358 |-krb5
359 |-nfslogd
360 |-others
361 |-sharetab
362 |-stress
363
364 - ksh script libs are put into STF_TEST_SUITE/include
365 - test cases are grouped into 6 directories so far, more will
366 be added in the later phases as needed:
367 - basic: the basic share_nfs/mount_nfs options
368 - krb5: share and mount with sec=krb5* options
369 - nfslogd: tests include log option with different tag
370 - others: tests require specific system configuration
371 and regression tests for the bugs found/fixed
372 sharemgr
373 - sharetab: in-kernel sharetab test
374 - stress: stress test
375