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.1 09/04/27 SMI"
27 #
28
29 DESCRIPTION
30 ===========
31
32 This test suite contains common tests for different NFS versions
33 (i.e., nfsv4, future 4.1, etc).
34
35
36 TEST STRUCTURE
37 ==============
38
39 ${STF_SUITE_ROOT}
40 |- config.vars
41 |- checkenv_def
42 |- configure.ksh
43 |- unconfigure.ksh
44 |- krb5_config.ksh
45 |- bin
46 |- lib
47 |- include
48 +- setup
49 | +- nfsv4
50 | | |- checkenv_def
51 | | |- configure.ksh
52 | | |- unconfigure.ksh
53 | ...
54 |
55 +- tests
56 +- delegation
57 +- openlock
58 +- acl
59 +- file_ops
60 +- recovery
61 +- stress
62
63 - programs used by tests are put into STF_TEST_SUITE/bin
64 - c function libs are put into STF_TEST_SUITE/lib
65 - ksh script libs are put into STF_TEST_SUITE/include
66 - test cases are grouped into 6 directories so far, more will
67 be added in the later phases as needed:
68 - delegation: test nfs delegation feature.
69 - openlock: test nfs open/lock state management.
70 - acl: test nfs acl.
71 - file_ops: test file/dir operations via nfs
72 - recovery: test nfs recovery feature.
73 - stress: stress on open/read/write/lock ops.
74
75 To make it easy to write and deploy multiple setups, files for a
76 specific setup are placed under a dedicated subdir.
77
78 User needs to set SETUP env variable to specify which configuration
79 files to use. If SETUP=none, there will be no setup, nor any
80 configuration files. If SETUP=nfsv4, top-level configuration files
81 will redirect call from STF to corresponding files in setup/nfsv4.
82
83 Top-level configuration files also perform some common tasks required
84 by all setups.
85
86
87 INSTALLATION
88 ============
89
90 You can install the suite package, or install the suite source and
91 build by yourself.
92
93 1. Installing from Packages
94
95 o In the majority of cases, the test suite can be installed from
96 packages. To do that, you need to be as root. The package is
97 called SUNWstc-nfs-nfsgen and installs into "/opt" by default.
98
99 Installation is via the standard Solaris package installation
100 tool pkgadd(1M). To install SUNWstc-nfs-nfsgen simply enter the
101 following command line:
102
103 # pkgadd -d <package location> SUNWstc-nfs-nfsgen
104
105 Where <package location> refers to the path containing the
106 SUNWstc-nfs-nfsgen package directory.
107
108 It is recommended that you install the packages from scratch,
109 rather than on top of an existing installation. Thus, if an
110 old version of the tests is installed:
111
112 # pkgrm SUNWstc-nfs-nfsgen
113
114 o It is also acceptable to use an nfs accessible version of the
115 SUNWstc-nfs-nfsgen package.
116
117 2. Installing the Test Suite Source
118
119 You can install the suite source locally as any user.
120
121
122 UNINSTALLATION
123 ==============
124
125 Prior to uninstalling the test suite, you may want to run
126 stf_unconfigure firstly. For more detail see UNCONFIGURATION.
127
128 1. Uninstalling the Test Suite Package
129
130 Use the standard Solaris package installation tool pkgrm(1M) to
131 uninstall the package as root:
132
133 # pkgrm SUNWstc-nfs-nfsgen
134
135 2. Uninstalling the Test Suite Source
136
137 You can remove the corresponding directory.
138
139
140 BUILDING
141 ========
142
143 If the suite is installed from packages, you can skip this section.
144 If the suite source is installed locally, first you need to build
145 it. This method uses the standard STF techniques to create a Solaris
146 package, which will be installed under the base directory
147 "/opt/SUNWstc-nfs-nfsgen".
148
149 Briefly, this build and installation is performed as follows:
150
151 # set path to STF bin directory
152 $ PATH=<path-to-STF>/bin/`uname -p`:$PATH
153 $ export PATH
154
155 $ cd <WS_ROOT>/usr/src/suites/nfs/nfsgen
156 $ stf_build package
157 $ cd <WS_ROOT>/packages/`uname -p`
158 $ sudo pkgadd -d <WS_ROOT>/packages/`uname -p`/SUNWstc-nfs-nfsgen
159
160 where WS_ROOT represents the root of the workspace under
161 which the nfsgen test suite source resides.
162
163
164 PREREQUISITES
165 =============
166
167 Below are the requirements common to all setups:
168
169 1. You must have at least two machines. One is test client where
170 you run those tests, another one is NFS server which is accessed
171 remotely. Some tests(recovery, delegation) need three machines,
172 you should set variable 'CLIENT2" as the second client's name.
173
174 2. All systems under testing (including the local system) must
175 enable r* service (i.e., run the command "netservices open")
176 and be able to do rcp/rsh to each other as root; (i.e., add
177 "local_host_name root" to ~/.rhosts on server, and comment out
178 CONSOLE entry in /etc/default/login).
179
180 3. The suite requires the "root" password to do setup. You can
181 either run the suite as root, or enter the root password when
182 it asks on command line when you do 'stf_configure' as a regular
183 user.
184
185 4. Make sure STF tools be in your PATH.
186
187 5. You must set SETUP env variable to specify the setup on which
188 you want to run your tests. Currently it can have two values:
189
190 nfsv4 - run tests on NFSV4.0 protocol
191 none - run tests on the environment user set up manually.
192
193 "none" setup is a special setup. In this setup, the test suite
194 won't do any setup. That means user should set up a workable
195 environment manually before he runs tests, and set up env
196 variables needed by tests correctly. If you want to use this
197 mode, see more details in "MANUAL SETUP" section below.
198
199 6. Except SETUP=none, SERVER env variable must be set to specify
200 server machine.
201
202 7. If you run tests on TX, you must specify ZONE_PATH env variable
203 to specify the pathname to labeled zone root file system.
204
205 8. If user set SHROPT to "sec=krb5" (or "sec=krb5i", "sec=krb5p")
206 Then test will setup kerberos environment in all machine.
207 In that case, STC krb5tools are required. This test suite
208 can use either a local installation of the SUNWstc-krb5tools
209 package, or a remote, NFS-mounted location of the tools.
210 KRB5TOOLS_HOME points to its root directory. Its default value is
211 /opt/SUNWstc-krb5tools. To use krb5tools from elsewhere,
212 simply set KRB5TOOLS_HOME in your environment, or use the '-c' option,
213 for example:
214
215 $ stf_configure -c \
216 "KRB5TOOLS_HOME=/ws/stcnv-gate/proto/tools/krb5tools"
217
218 Krb5 tests also uses four other env variables: DNS_DOMAIN,
219 SRV_DNS_DOMAIN, CLT2_DNS_DOMAIN, DNS_SERVER:
220
221 DNS_DOMAIN - client dns domain. Default value is
222 sfbay.sun.com.
223 SRV_DNS_DOMAIN CLT2_DNS_DOMAIN
224 - server dns domain and client2 dns domain.
225 If users don't specify them, the values are
226 got from the following resources:
227 - /etc/resolv.conf
228 - default as DNS_DOMAIN
229 So user needs to set them if the machine has
230 a different DNS domain than client.
231 DNS_SERVER - a dns server that can resolve client
232 and server's dns names.
233
234 Notes:
235 - Currently openlock tests don't support krb5 config.
236 - DNS_DOMAIN, SRV_DNS_DOMAIN, CLT2_DNS_DOMAIN is used to construct
237 full qualified domain name for client and server, so they
238 cannot be, for example, "sun.com", instead they should
239 be "sfbay.sun.com", "ireland.sun.com", etc. BTW, although
240 test scripts can get client and server's full qualified
241 domain name automatically from dns sever, that requires
242 reverse dns lookup has been set up for machines being
243 queried, which is not always true for lab machines.
244
245 9. If not all systems participating in test execution are of a single
246 architecture (a "cross-architecture" testing scenario), the user shall
247 be prepared to pkgadd, install, mount or in some other manner make
248 available the appropriate test binaries on all systems participating
249 in the test. or install test suite for all architectures into the client.
250 And make sure the root directory of test suite on all systems is
251 the SAME path. For example, CLIENT2 - sparc; client - i386, if we have
252 a binary in client located under /opt/SUNWstc-suite/bin/386/foo,
253 then we can also find a sparc binary in server or client under
254 /opt/SUNWstc-suite/bin/sparc/foo.
255
256
257 Below are requirements specific to nfsv4 setup:
258
259 1. By default, the test will detect automatically the filesystem type of
260 $SHRDIR on SERVER. If filesystem type is ZFS, tests will run over ZFS;
261 if filesystem type is UFS, tests will run over UFS.
262
263 If SERVER is zfs boot, and you want to run the tests over UFS, you
264 must provide a dir based on UFS and define it to SHRDIR variable;
265 Similarly, if SERVER is ufs boot, and you also want to run the tests
266 over ZFS, you must provide a dir based on ZFS and define it to
267 SHRDIR variable.
268
269
270 OPTIONAL SETTINGS
271 =================
272
273 The following env variables(especially SHROPT and MNTOPT) may be
274 useful when running tests:
275
276 SHRDIR - shared directory on server (default is "/nfsgen_share")
277 SHROPT - share options (default is anon=0 since ACL tests need it)
278 MNTDIR - mount directory on client (default is "/nfsgen_mount"),
279 All tests are run in this directory
280 MNTOPT - mount options (default is "rw")
281 STRESS_TIMEOUT - By default, the stress test will return TIMEOUT if
282 execution time of single test exceeds 3 hours(10800s). If you
283 change the value of the variables in stress/stress.vars,
284 you may need to reset STRESS_TIMEOUT to your expected time.
285 NFSGEN_DEBUG - debug variable, which can be set with
286 1) "all" for whole suite,
287 2) the name of test scripts you want to debug(e.g. srv_setup),
288 3) name of function in test scripts(e.g. wait_now),
289 4) "RUN_CHECK_CMD" or "RUN_CHECK_ALL" for commands
290 called by RUN_CHECK() function,
291 5) "RSH" to get output from the "RSH()" function
292 6) combination of 2-5, separated by ":".
293
294 The test suite provides many other env variables for customizing
295 test environment, but they should work out of box and are not
296 suggested to change. If you have any questions on them, feel
297 free to send email to maintainer of this suite, which you can
298 find in STC.INFO file under the test suite's root directory.
299
300
301 CONFIGURATION
302 =============
303
304 You can choose one of the following ways to define the variables
305 and configure your suite from the top level directory.
306
307 1) define environment variables
308
309 $ export SERVER=foo
310 $ stf_configure
311
312 2) use '-c" option
313 $ stf_configure -c "SERVER=foo" -c ...
314
315 3) use '-f' option
316 $ stf_configure -f ./myconf
317
318
319 EXECUTION
320 =========
321
322 At execution phase, you can only use 'stf_execute' to run whole suite or
323 specified tests via '-r' option.
324
325 Although stf_execute supports "-c" option to specify variables which
326 overrides those specified at configuration phase, you MUST NOT do that
327 for nfs suites, i.e., stf_execute -c "CLIENT2=client2" -c "SHRDIR=testdir",
328 since the suite has done corresponding configuration against those variables,
329 re-defining them at execution phase may cause confusing. But you can
330 print debugging info into journal file via 'stf_execute -c "NFSGEN_DEBUG=:xx:"',
331 which is an exception.
332
333 All results will be saved in the journal file under
334 /var/tmp/nfsgen/results or the directory defined by 'STF_RESULTS'.
335
336 Notes:
337 - Some tests call ipfilter to block packets, but ipfilter doesn't work
338 with RDMA configuration, so if you run the suite w/RDMA, those tests
339 (clntrecov_rw_pos01,clntrecov_rw_pos02) may return TIMEOUT.
340
341
342 UNCONFIGURATION
343 ===============
344
345 You can run the following command from the top level directory
346
347 $ stf_unconfigure
348
349
350 TEST DEVELOPMENT
351 ================
352
353 *NOTE*: This section is intended only for people who work on
354 this test suite. If you don't want to change the test suite, add
355 new setup or tests, you can skip this section.
356
357 nfsgen test suite is unique in that it supports multiple setups,
358 new setups, as well as new tests, can be added over time. For this
359 purpose, it is important to define the interface between setup
360 code and tests.
361
362 Tests can make the following assumptions on the test execution
363 environment:
364
365 1) a test directory with read/write/search access($MNTDIR)
366 2) both client and server have same nfs mapid domain($NFSMAPID_DOMAIN)
367 3) both client and server have a same local group($TGROUP),
368 4) both client and server have two same local users($TUSER01 and $TUSER02),
369 they MUST be in $TGROUP and can be any valid user known by both client
370 and server. If SETUP!=none, the suite configuration will
371 create in locally in both client and server.
372
373 All setup "plugins" should provide this, and tests are not
374 expected to change them during execution.
375
376
377 MANUAL SETUP
378 ============
379
380 As we mentioned before, when user sets SETUP variable, he can
381 set it to "none". This means user will set up the whole test
382 environment manually and let the test suite skip configuration
383 phase(however, user still needs to run stf_configure, which is
384 a step required by STF. It is just that stf_configure will
385 effectively do nothing in term of test environment setup.) This
386 feature is believed to be useful in some cases.
387
388 It should be noted that in this case, user is required to not
389 only set up a workable test environment, but also to set those
390 env variables correctly which compose of the interface between
391 setup code and tests(see "TEST ENVIRONMENT INTERFACE" section).
392
393 These variables are:
394
395 MNTDIR - test directory
396 NFSMAPID_DOMAIN - nfs mapid domain
397 TGROUP - a regular group on both client and server
398 TUSER01 - a regular user in TGROUP on both client and server
399 TUSER02 - a regular user in TGROUP on both client and server
400 TestZFS - If exported filesystem on the server is ZFS,
401 the variable should be set to 1.
402 CLIENT2 - Optional, if you set it, you should make sure
403 the machine can be access via rsh/rcp as root.
404
405
406 In this case, if you want to run acl tests, you still refer to
407 the README file under tests/acl to do more manual setup.
408
409 When SETUP variable is not set to none, the tests under open and
410 lock directories run separately with delegation on and off. But
411 if the variable is set to none, these tests only run with current
412 delegation configuration on the server.
413