summaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2009-02-22 14:43:02 -0500
committerSteve Dickson <steved@redhat.com>2009-02-22 14:43:02 -0500
commit43d64aa2dabf5029aac3e503a875a3cda6c5d253 (patch)
tree34b0d7d90205ca9f6a26c319638d80d44ee03bd7 /README
downloadcthon04-43d64aa2dabf5029aac3e503a875a3cda6c5d253.tar.gz
cthon04-43d64aa2dabf5029aac3e503a875a3cda6c5d253.tar.xz
cthon04-43d64aa2dabf5029aac3e503a875a3cda6c5d253.zip
Inital Commit
Diffstat (limited to 'README')
-rw-r--r--README654
1 files changed, 654 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..28367fa
--- /dev/null
+++ b/README
@@ -0,0 +1,654 @@
+#
+# @(#)README 1.18 2003/12/30 Connectathon Testsuite
+#
+NFS and Connectathon are trademarks of Sun Microsystems, Inc.
+
+
+
+Introduction to the Connectathon NFS Testsuites
+---------------------------------------------
+
+These directories contain programs that can be used to test an
+implementation of the NFS Protocol. The tests run on a UNIX client and
+test server and client functions. (See READWIN.txt for information
+about running on DOS and Windows.) The tests are divided into three
+groups:
+
+ basic - basic file system operations tests
+ general - general file system tests
+ special - tests that poke certain common problem areas
+ lock - tests that exercise network locking
+
+This README is divided into five sections. The first section is the
+introduction, which you are reading now. That is followed by a
+description of what you have to do before you run the testsuites on
+your machine. Then comes a description of how the testsuites are run
+in general followed by a description of how they are used at
+Connectathon. The last section describes what each test does in
+detail.
+
+This testsuite should run on both BSD and System V based systems. The
+System V Release 3 port of the Connectathon Testsuite is provided
+courtesy of the Lachman Technology, Incorporated, 1901 N. Naper Blvd.,
+Naperville, IL. 60563.
+
+
+Preparing to run the Testsuites
+-------------------------------
+
+To prepare to run the testsuites on your machine, change directories
+to the highest level testsuite directory (it should be the same one
+that contains this README file), edit tests.init according to the
+platform you are on, and type "make" to compile the test programs. If
+you are not sure you are in the correct directory, type "ls -CF" and
+you should see the following files and directories:
+
+Makefile basic/ lock/ tests.h
+README domount.c runtests tests.init
+READWIN.txt general/ server tools/
+Testitems getopt.c special/ unixdos.h
+
+The "server" script uses "getopt". A source file of a public-domain
+version of "getopt" is included in the directory. The Makefile will
+compile it for you.
+
+The tests are configured according to parameters found in the script,
+tests.init. It contains various definitions for commands and
+parameters used by the various Makefiles and shell scripts. This file
+should be checked and then perhaps modified to correctly match your
+system. In particular, the values of "MOUNTCMD", "UMOUNTCMD", "PATH",
+"CFLAGS", and "LIBS" should be checked and set correctly. There are
+several sets of suggested values which may be used as possible starting
+places.
+
+Two special targets are included in the Makefiles: copy and dist. The
+command, "make copy DESTDIR="path"", where "path" is the absolute name
+of a directory, will cause the compiled tests to be copied to "path".
+The command, "make dist DESTDIR="path"", where "path" is the absolute
+name of a directory, will copy the test sources to "path". DESTDIR
+must be specified on the make command line when making either of these
+targets.
+
+Modifications may be required so the programs compile on your machine.
+If that is so, we would like to know what they are so that we can
+incorporate them into our distribution.
+
+When defaults are used, the test programs expect the directory,
+/server, to exist on the server. The test driver will use the
+directory /mnt/'server_name' on the client, creating it first if
+necessary (where 'server_name' is the name of the server you are
+testing against). These defaults can be overridden at run time.
+Directions for doing this are contained in the next section.
+
+
+How to run the Testsuites
+-------------------------
+
+There are two ways to run the tests: use the server shell script or
+mount, run the tests yourself, and unmount. We recommend you use the
+server script to run the tests.
+
+The server script:
+
+The server script executes one or more of the test sets depending on
+what option is given (see below). It is set up to mount, run tests
+using the runtests program, and unmount. It will attempt to unmount
+anything mounted on the mount point before attempting to mount the
+server file system. If a test fails, the run is aborted and the file
+system is left mounted to assist in troubleshooting the failure.
+
+The server script uses the domount program to mount and unmount the
+test file systems. Since mount can only be executed by root, domount
+must have root permission. The Makefile will attempt to setuid the
+domount program to root. The server script can be run as a
+nonprivileged user. Alternately, you may login as root before you run
+server.
+
+server [-a|-b|-g|-s|-l] [-f|-t] [-n] [-o mnt_options] [-p server_path] [-m mntpoint] [-N numpasses] server_name
+
+-a|-b|-g|-s|-l - will be passed on to the runtests scripts. This argument
+ is optional. The default is read from the initialization
+ file, tests.init. The variable, TEST, contains this
+ argument.
+ This argument selects which tests to run:
+ -a run basic, general, special, and lock tests
+ -b run basic tests only
+ -g run general tests only
+ -s run special tests only
+ -l run lock tests only
+-f|-t - will be passed on to the runtests scripts. This argument
+ is optional. The default is read from the initialization
+ file, tests.init. The variable, TESTARG, contains this
+ argument.
+ This argument selects how the basic tests are to be run:
+ -f a quick functionality test
+ -t extended test mode with timings
+-n - Don't perform the mkdir and rmdir operations to create
+ and destroy the test directory.
+-o mnt_options - will be passed on to the mount command. This argument is
+ optional. The default is read from the initialization
+ file, tests.init. The variable, MNTOPTIONS, contains this
+ argument.
+-p server_path - specifies a directory on the server to mount. This
+ argument is optional. The default is read from the
+ initialization file, tests.init. The variable, SERVPATH,
+ contains this argument.
+-m mntpoint - specifies a mount point on your client. This argument is
+ optional. The default is read from the initialization
+ file, tests.init. The variable, MNTPOINT, contains this
+ argument.
+-N numpasses - will be passed to the runtests script. This argument
+ is optional. It specifies the number of times to run
+ through the tests.
+server_name - the server you want to exercise. This is the only
+ required argument.
+
+The test programs create a sub-directory in the mntpoint directory with
+the name, 'hostname'.test, (where 'hostname' is the name of the machine
+on which you run the tests). This name can not be overridden if you
+use the server script although it can be if you use runtests directly.
+
+Example: (the client machine is eddie)
+
+eddie% server -o hard,intr,rw slartibartfarst
+Start tests on path /mnt.slartibartfast/eddie.test [y/n]? y
+<output from tests>
+ :
+ :
+All tests completed
+eddie%
+
+See the script for more details.
+
+
+Run tests yourself:
+
+There is a runtest script in the highest level directory (the master
+runtests) which uses tests.init to set up the test environment and then
+executes the runtest scripts in the basic, general, and/or special
+sub-directories.
+
+runtests [-a|-b|-g|-s|-l] [-f|-n|-t] [-N numpasses] [test-directory]
+
+-a - Run the basic, general, special, and lock tests. This
+ is the default.
+-b - Run the basic tests.
+-g - Run the general tests.
+-s - Run the special tests.
+-l - Run the lock tests.
+-f - Set parameters for a quick functional test. It
+ applies only to basic tests.
+-n - Suppress directory operations (mkdir and rmdir) on the
+ test-directory. See descriptions of basic tests for
+ more details.
+-t - Run full-length test with running time statistics. It
+ only applies to basic tests. This is the default mode
+ for the basic tests.
+-N numpasses - Run the tests "numpasses" times.
+test-directory - The name of test directory that the test programs
+ create on the client. runtests executes the basic
+ tests in place and they work on the test directory.
+ The general tests are copied over to the test
+ directory and executed there. When the -n flag is
+ used, the test directory is assumed to already exist.
+
+ The default test-directory is
+ /mnt.'servername'/'hostname'.test (where 'servername'
+ is the name of the server being tested, and
+ 'hostname' is the name of the machine on which you
+ are running the tests). There are three ways to
+ override the default test directory name. One it to
+ put the test_directory on the command line. Another
+ way is to set the environment variable, NFSTESTDIR,
+ equal to the directory name. The command line method
+ overrides setting the environment variable. The
+ third way can only be used for the tests in the basic
+ sub-directory. There you can set the TESTDIR
+ variable in tests.h. The command line and
+ environment variable both override this method.
+
+Running the tests without mounting your NFS server on /mnt will run the
+tests locally (if /mnt is local disk). We recommend that you do this
+once to make sure the testsuites run properly before you use them to
+test NFS.
+
+The runtests in the sub-directories, basic, general, and special, may
+be invoked with the same arguments as the master runtests if you wish
+to run each suite separately.
+
+
+How to run the Testsuites at Connectathon
+-----------------------------------------
+
+The tests should be run in the following order: basic, general, and
+special. The basic tests should be passed completely before other
+tests are attempted.
+
+The NFS Test Suite should be run in three phases:
+
+Phase 1 - Run test programs locally.
+
+Phase 2 - Run the tests against a Sun. Run them on your machine using
+ the Sun as the server and then run them on the Sun using your
+ machine as the server.
+
+Phase 3 - NxN Testing. Run the tests on your machine using every other
+ machine as a server, one at a time. After the tests are
+ successfully completed using a particular server, log that
+ with the electronic board software provided. Check the
+ electronic board to make sure that the tests run successfully
+ on every other machine that uses your machine as a server.
+
+
+Test Descriptions
+-----------------
+
+System and library calls that are used by the testsuites are included
+in parentheses. Look at the source if you are interested in how time
+statistics are recorded since that is not included in this description.
+
+- BASIC TESTS:
+
+Many of the programs listed below have optional calling parameters that
+can be used to override existing parameters. These are not used at
+this time so they are not described.
+
+test1: File and Directory Creation Test
+
+This program creates the test directory (mkdir) on the client and
+changes directories (chdir) to it, unless the -n flag is used in which
+case it simply changes directories to the test directory. Then it
+builds a directory tree N levels deep, where each directory (including
+the test directory) has M files and P directories (creat, close, chdir,
+and mkdir). For the -f option, N = 2, M = 2, and P = 2 so a total of
+six files and six directories are created. For other options, N = 5,
+M = 5, and P = 2. The files that are created are given names that
+begin with "file." and directories with names that begin with "dir.".
+
+test2: File and directory removal test
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and removes the directory tree (unlink, chdir, and rmdir) that
+was just created by test1. The number of levels, files, and
+directories, and the name prefixes, are the same as in test1.
+
+This routine will not remove a file or directory that was not created
+by test1 and will fail if it finds one. It determines this by looking
+at the prefix on the name of the object it's trying to remove.
+
+test3: Lookups across mount point
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and gets the file status of the working directory (getwd or
+getcwd and stat). For the -f option, the getwd or getcwd is done once.
+For other options, 250 getcwds or getcwds are done.
+
+test4: setattr, getattr, and lookup
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates ten files (creat). Then the permissions are changed
+(chmod) and the file status is retrieved (stat) for each file. For the
+-f option, one chmod and stat on each file is done. For other options,
+50 getcwds or getcwds and stats on each file are done.
+
+test4a: getattr, and lookup
+
+This test exists but is not called as part of the testsuite. You can
+edit runtests in the basic directory so this test is called.
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates ten files (creat). Then the file status is
+retrieved (stat) for each file. For the -f option, the stat is done
+once per file. For other options, 50 stats are done per file.
+
+test5: read and write
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and then:
+
+1) Creates a file (creat)
+2) Gets status of file (fstat)
+3) Checks size of file
+4) Writes 1048576 bytes into the file (write) in 8192 byte buffers.
+5) Closes file (close)
+6) Gets status of file (stat)
+7) Checks the size of the file
+
+For the -f option, the file is created and written once. For other
+options, file is created and written 10 times.
+
+Then the file is opened (open) and read (read) in 8192 byte buffers.
+It's contents are compared with what was written. The file is then
+closed (close).
+
+Then the file is then re-opened (open) and re-read (read) before it is
+removed (unlink). For the -f option, this sequence is done once. For
+other options, this sequence is done 10 times.
+
+test5a: write
+
+This test exists but is not called as part of the testsuite. You can
+edit runtests in the basic directory so this test is called.
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and then:
+
+1) Creates a file (creat)
+2) Gets status of file (fstat)
+3) Checks size of file
+4) Writes 1048576 bytes into the file (write) in 8192 byte buffers.
+5) Closes file (close)
+6) Gets status of file (stat)
+7) Checks the size of the file
+
+For the -f option, the file is created and written once. For other
+options, file is created and written 10 times.
+
+test5b: read
+
+This test exists but is not called as part of the testsuite. You can
+edit runtests in the basic directory so this test is called.
+
+The file created in test5a is opened (open) and read (read) in 8192 byte
+buffers. It's contents are compared with what was written. The file is
+then closed (close) and removed (unlink).
+
+For the -f option, the file is opened and read once. For other
+options, file is created and written 10 times.
+
+test6: readdir
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates 200 files (creat). The current directory is opened
+(opendir), the beginning is found (rewinddir), and the directory is
+read (readdir) in a loop until the end is found. Errors flagged are:
+
+1) No entry for "."
+2) No entry for ".."
+3) Duplicate entry
+4) Filename that doesn't begin with "file."
+5) The suffix of the filename is out of range
+6) An entry is returned for an unlinked file. (This error can only be
+ found when the test is run with an option other than -f. For other
+ options the rewinddir/readdir loop is done 200 times and a file is
+ unlinked each time).
+
+The directory is then closed (closedir) and the files that were created
+are removed (unlink).
+
+test7: link and rename
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates ten files. For each of these files, the file is
+renamed (rename) and file statistics are retrieved (stat) for both the
+new and old names. Errors that are flagged are:
+
+1) Old file still exists
+2) New file doesn't exist (can't stat)
+3) The new file's number of links doesn't equal one
+
+Then an attempt is made to link the new file to it's old name (link)
+and file stats are again retrieved (stat). An error is flagged if:
+
+1) Can't link
+2) Stats on new file can't be retrieved after link
+3) The new file's number of links doesn't equal two
+4) Stats on old file can't be retrieved after link
+5) The old file's number of links doesn't equal two
+
+Then the new file is removed (unlink) and file stats are retrieved for
+the old file (stat). An error is flagged if:
+
+1) Stats on old file can't be retrieved after unlink
+2) The old file's number of links doesn't equal one
+
+For the -f option, the rename/link/unlink loop is done once for each
+file. For other options, the rename/link/unlink loop is done 10 times
+for each file.
+
+Any files that remain at the end of the test are removed (unlink).
+
+test7a: rename
+
+This test exists but is not called as part of the testsuite. You can
+edit runtests in the basic directory so this test is called.
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates ten files. For each of these files, the file is
+renamed (rename) and file statistics are retrieved (stat) for both the
+new and old names. Errors that are flagged are:
+
+1) Old file still exists
+2) New file doesn't exist (can't stat)
+3) The new file's number of links doesn't equal one
+
+The file is then renamed back to its original name and the same tests
+are applied.
+
+For the -f option, the rename/rename loop is done once for each file.
+For other options, the rename/rename loop is done 10 times for each
+file.
+
+Any files that remain at the end of the test are removed (unlink).
+
+test7b: link
+
+This test exists but is not called as part of the testsuite. You can
+edit runtests in the basic directory so this test is called.
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and creates ten files. A link (link) is done for each of these
+files and file stats are retrieved for the old and new files (stat).
+An error is flagged if:
+
+1) Can't link
+2) Stats on either file can't be retrieved after link
+3) The either file's number of links doesn't equal two
+
+This is followed by an unlink (unlink) of the new file. An error is
+flagged if:
+
+1) Stats on the old file can't be retrieved after unlink
+2) The old file's number of links doesn't equal one
+
+For the -f option, the link/unlink loop is done once for each file.
+For other options, the link/unlink loop is done 10 times for each file.
+
+Any files that remain at the end of the test are removed (unlink).
+
+test8: symlink and readlink
+
+NOTE: Not all operating systems support symlink and readlink. If the
+ errno, EOPNOTSUPP, is returned during test8, the test will be
+ counted as passing. For clients not supporting S_IFLNK, the
+ test will not be attempted.
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and makes 10 symlinks (symlink). It reads (readlink), and gets
+statistics for (lstat) each, and then removes them (unlink). Errors
+flagged are:
+
+1) Unsupported function
+2) Can't get statistics (lstat failed)
+3) The mode in the stats is not symlink
+4) The value of the symlink is incorrect (returned from readlink)
+5) The linkname is wrong
+6) The unlink failed
+
+For the -f option, the symlink/readlink/unlink loop is done for each
+symlink. For other options, the symlink/readlink/unlink loop is done
+20 times for each symlink.
+
+test9: statfs
+
+This program changes directory to the test directory (chdir and/or
+mkdir) and gets the file system status on the current directory
+(statfs). For the -f option, the statfs is done once. For other
+options, the statfs is done 1500 times.
+
+
+- GENERAL: General tests to look at server loading.
+
+Runs a small compile, tbl, nroff, a large compile, four simultaneous
+large compiles, and make.
+
+
+- SPECIAL: Information specific to the special tests
+
+The special directory is set up to test special problems that have come
+up in the past. These tests are meant to be advisory, things to watch
+out for. It is not required that you "pass" these tests but we
+strongly suggest that you do.
+
+The tests try to:
+
+ check for proper open/unlink operation
+ check for proper open/rename operation
+ check for proper open/chmod 0 operation
+ check for lost reply on non-idempotent requests
+ test exclusive create
+ test negative seek
+ test rename
+
+
+- LOCK:
+
+The lock directory contains a test program which can be used to test
+the kernel file and record locking facilities. This is done to test
+the network lock manager.
+
+The test program contains 13 sets of locking tests. They test basic
+locking functionality.
+
+By default, mandatory locking is not tested. Mandatory locking is
+generally *not* supported on NFS files.
+
+
+- MISC:
+
+'Testitems' is a list of NFS functionality that can be used for
+reference.
+
+Programs in 'tools' are provided for your use as you see fit. Please
+feel free to add to this (or any other) directory! If you do, please
+make sure that Mike Kupfer <mike.kupfer@sun.com> gets a copy so we can
+add it to the master test distribution.
+
+The code in this tree was checked August 1998 for Y2000 problems.
+None were found.
+
+See READWIN.txt for information about running the tests under DOS or
+Windows.
+
+
+Changes for 2004 include the following:
+
+1. Fix lock/tlock.c to be consistent about when to use stdarg and when
+ to use varargs; reported by Samuel Sha <sam@austin.ibm.com>.
+
+2. Change "make all" so that the various "runtests" scripts have the
+ execute bit set; reported by Erik Deumens <deumens@qtp.ufl.edu>.
+
+3. Removed some lint; from James Peach <jpeach@sgi.com>.
+
+4. Irix 6.5.19 support from James Peach <jpeach@sgi.com>.
+
+5. The "server" script now exports MNTOPTIONS, so that options that
+ are added to "server" can be detected by the rest of the suite.
+ From Chuck Lever <Charles.Lever@netapp.com>.
+
+6. The tests now correctly check for errors returns from mmap(). From
+ David Robinson <david.robinson@sun.com>.
+
+7. MacOS X support from Mike Mackovitch <macko@apple.com>.
+
+8. tests.init now includes a CC= line for Linux, in case your
+ distribution doesn't include "cc". Reported by Rodney Brown
+ <rodney@lehman.com>.
+
+9. Changes for AIX, from Erik Deumens <deumens@qtp.ufl.edu>.
+
+10. Changes for the latest Tru64 Unix, from Eric Werme
+ <werme@hp.com>.
+
+11. The general tests should be more robust in the face of errors from
+ make(1). Based on comments from Chuck Lever
+ <Charles.Lever@netapp.com> and a patch from Mike Mackovitch
+ <macko@apple.com>.
+
+12. The "make lint" target for the basic tests now includes subr.c.
+
+13. Improvements to special/bigfile2:
+ - error messages now print the complete low-order word (from Mike
+ Mackovitch <macko@apple.com>.
+ - the test file is opened with O_SYNC, so that problems are
+ detected right away.
+
+14. Fix to special/op_chmod so that it uses CHMOD_NONE instead
+ of 0. From Pascal Schmidt <der.eremit@email.de>.
+
+
+Changes for 2003 include the following:
+
+1. HPUX fixes from Brian Love <blove@rlmsoftware.com> and Brian
+ McEntire <brianm@fsg1.nws.noaa.gov>.
+
+2. AIX support, based on patches from <saul@exanet.com>.
+
+3. gcc command-line options for building 64-bit binaries, from
+ Sergey Klyushin <sergey.klyushin@hummingbird.com>.
+
+4. The messages from the server script are now a little clearer about
+ leaving the server mounted after a test failure. Thanks to Vincent
+ McIntyre <Vince.McIntyre@atnf.csiro.au> for the suggestion.
+
+5. The locking tests should now work with NFS Version 4 and servers
+ that enforce mandatory locking. Thanks to Bill Baker
+ <bill.baker@sun.com> for the test12 fix.
+
+6. The general tests have been fixed to use the "stat" program that
+ comes with the tests, instead of any system "stat" program.
+
+
+Changes for 2002 include the following:
+
+1. The special tests do a better job of recognizing when NFS version 2
+ was specified (based on a patch from Jay Weber
+ <jweber@mail.thatnet.net>).
+
+2. Compilation and runtime fixes for *BSD systems, based on patches
+ from Marty Johnson <martyj@traakan.com>.
+
+3. The default local mount point was changed from /mnt.'server_name'
+ to /mnt/'server_name'. This is so that if the server dies or
+ hangs, it is less likely to cause operational problems on the
+ client.
+
+4. The "server" script will try to use "mkdir -p" if it's available.
+
+5. The general and special tests do a better job of checking for
+ errors during initialization.
+
+6. The bigfile tests have been moved to the end of the special tests
+ because they can take so long to run.
+
+7. Fixed the definition of signal handlers for Tru64 UNIX.
+
+8. Updated Linux configuration information from Jay Weber
+ <jweber@mail.thatnet.net>.
+
+
+Changes for 2001 include the following:
+
+1. Added a "-N numpasses" option to the top-level "server" and
+"runtests" script.
+
+2. Updated HPUX compilation flags for the benefit of the
+special/bigfile2 test (from Anand Paladugu <paladugu_anand@emc.com>).
+
+3. Minor portability fixes to special/bigfile2.c.
+
+4. The basic tests no longer assume that "." is in $PATH.
+
+5. The basic and special tests should be easier to build under Windows
+(from Rick Hopkins <rhopkins@ssc-corp.com>).