Annotation of 43BSDReno/sys/nfs/TEST/unix-tests/README, revision 1.1

1.1     ! root        1: #
        !             2: #      @(#)README      1.11 90/01/03 NFS Rev 2 Testsuite
        !             3: #
        !             4: NFS and Connectathon are trademarks of Sun Microsystems, Inc.
        !             5: 
        !             6: 
        !             7: 
        !             8: Introduction to the NFS Revision 2 Testsuites
        !             9: ---------------------------------------------
        !            10: 
        !            11: These directories contain programs that can be used to test an implementation
        !            12:  of Revision 2 of the NFS Protocol.  The tests run on a UNIX client and test 
        !            13: server and client functions.  They are divided into three groups:
        !            14: 
        !            15:        basic   - basic NFS operations tests 
        !            16:        general - general file system tests
        !            17:        special - tests that poke certain common problem areas
        !            18: 
        !            19: This README is divided into six sections.  The first section is the introd-
        !            20: uction,  which you are reading now.  That is followed by a description of 
        !            21: what you have to do before you run the testsuites on your machine.  Then 
        !            22: comes a description of how the testsuites are run in general followed by a 
        !            23: description of how they are used at Connectathon.  The last sections describes 
        !            24: what each test does in detail.
        !            25: 
        !            26: This testsuite should run on both BSD and System V based systems.
        !            27: The System V port of the Connectathon Testsuite is provided courtesy
        !            28: of the Software Technologies Group, INTERACTIVE Systems Corporation,
        !            29: 1901 N. Naper Blvd., Naperville, IL. 60563
        !            30: 
        !            31: 
        !            32: Preparing to run the Testsuites
        !            33: -------------------------------
        !            34: 
        !            35: To prepare to run the testsuites on your machine,  change directories to the 
        !            36: highest level testsuite directory (it should be the same one that contains 
        !            37: this README file),  and type "make" to compile the test programs.  If you are 
        !            38: not sure your are in the correct directory,  type "ls -F" and you should see 
        !            39: the following files and directories:
        !            40: 
        !            41: Makefile    Testitems   domount.c   getopt.c    server*     tests.init
        !            42: README      basic/      general/    runtests*   special/    tools/
        !            43: 
        !            44: The "server" script uses "getopt" and a source file of a public-domain 
        !            45: version is included in the directory.  The makefile will compile it for you.
        !            46: 
        !            47: Changes may be required to the Makefile depending on the type of system
        !            48: you are testing on and what version of NFS you are testing.  Change the 
        !            49: COMPAT variable if you are running NFS3.2 to:
        !            50: 
        !            51:        COMPAT = -DNFS3_2
        !            52: 
        !            53: If you are running on a System V based system (SVR3) you will need to change:
        !            54: 
        !            55:        SYSTYPE=-DSVR3
        !            56:        LIBS=-lrpc
        !            57: 
        !            58: If you are running Lachman NFS for System V Release 3, you should set the 
        !            59: compatability variable to:
        !            60: 
        !            61:        COMPAT =  -DSVR3
        !            62: 
        !            63: Lachman NFS is based on NFS3.2, but you should not set NFS3_2.  That symbol 
        !            64: is used only for vnode-based systems, not FSS-based systems.
        !            65: 
        !            66: If you are testing on a BSD based system SYSTYPE and LIBS should not be
        !            67: set to anything.  Be sure and check the COMPAT variable if running 
        !            68: release 3.2 of NFS. 
        !            69: 
        !            70: Two special targets are included in the Makefiles: copy and dist. The command 
        !            71: "make copy DESTDIR="path"",  where "path" is the name of a directory, will 
        !            72: cause the compiled tests to be copied to "path".  "make dist DESTDIR="path"", 
        !            73: where "path" is the name of a directory,  will copy the test sources to 
        !            74: "path".  DESTDIR must be specified on the make command line when making 
        !            75: either of these targets.
        !            76: 
        !            77: Modifications may be required so the programs compile on your machine.  If 
        !            78: that is so,  we would like to know what they are so that we can incorporate 
        !            79: them into our distribution.  
        !            80: 
        !            81: When defaults are used,  the test programs expect /mnt to exist on the client 
        !            82: and /server to exist on the server.    These defaults can be overridden at 
        !            83: run time.  Read about how to run the testsuites for a description of how this 
        !            84: is done.
        !            85: 
        !            86: NOTE:  When running any of the tests, you should save stdout and stderr
        !            87:        output in a file for future reference.
        !            88: 
        !            89: 
        !            90: 
        !            91: 
        !            92: How to run the Testsuites
        !            93: -------------------------
        !            94: 
        !            95: There are two ways to run the tests: (1) use the server shell script or 
        !            96: (2) mount, run the tests yourself,  and unmount.  We recommend you use the 
        !            97: server script to run the tests.
        !            98: 
        !            99: 
        !           100: 
        !           101: The server script:
        !           102: 
        !           103: The server script executes the basic and general tests. (It runs the 
        !           104: special tests only if use the -s option.)  It is set up to mount, 
        !           105: run tests using the runtests program, and unmount.  It will attempt to unmount 
        !           106: anything mounted on the mount point before attempting to mount the server file 
        !           107: system. 
        !           108: 
        !           109: server uses the domount program to mount and unmount the test file systems.  
        !           110: Since mount can only be executed by root,  domount must have root permission.  
        !           111: The Makefile will attempt to setuid the domount program to root.  The server 
        !           112: script can be run as a nonprivileged user. Alternately, you may login as root 
        !           113: before you run server.
        !           114: 
        !           115: 
        !           116: 
        !           117: server [-a|-b|-g|-s] [-|-f|-t|-n] [-o mnt_options] [-p server_path] [-m mntpoint] server_name
        !           118: 
        !           119: 
        !           120: -a|-b|-g|-s - will be passed on to the runtests scripts.  This argument is
        !           121:              optional.  The default is read from the initialization file,
        !           122:              tests.init.
        !           123:              This argument selects which tests to run:
        !           124:                -a      run basic and general tests
        !           125:                -b      run basic tests only
        !           126:                -g      run general tests only
        !           127:                -s      run special tests only
        !           128: -f|-t|-n    - will be passed on to the runtests scripts.  This argument is
        !           129:              optional.  The default is read from the initialization file,
        !           130:              tests.init.
        !           131: mnt_options - will be passed on to the mount command. This argument is
        !           132:              optional.  The default is read from the initialization file,
        !           133:              tests.init.
        !           134: server_path - specifies a directory on the server to mount.  This argument
        !           135:              is optional.  The default is read from the initialization file,
        !           136:              tests.init.
        !           137: mntpoint    - specifies a mount point on your client. This argument is
        !           138:              optional.  The default is read from the initialization file,
        !           139:              tests.init.
        !           140: server_name - the server you want to exercise.  This is the only required 
        !           141:              argument. 
        !           142: 
        !           143: The test programs create a sub-directory in the mntpoint directory with the 
        !           144: name 'hostname'.test (where 'hostname' is the name of the machine on which 
        !           145: you run the tests).  This name can not be overridden if you use the server 
        !           146: script although it can be if you use runtests directly.  
        !           147: 
        !           148: Example:  (the client machine is eddie)
        !           149: 
        !           150: eddie% server -o hard,intr,rw slartibartfarst
        !           151: Start tests on path /mnt/eddie.test [y/n]? y
        !           152: <output from tests>
        !           153:          :
        !           154:          :
        !           155: All tests completed
        !           156: eddie%
        !           157: 
        !           158: See the script for more details.
        !           159: 
        !           160:  
        !           161: 
        !           162: Run tests yourself:
        !           163: 
        !           164: There is a runtest script in the highest level directory (the master runtests) 
        !           165: which uses tests.init to set up the test environment and then executes runtest 
        !           166: scripts in the basic, general,  and/or special sub-directories. 
        !           167: 
        !           168: 
        !           169:  runtests [-a|-b|-g|-s] [-f|-n|-t] [test-directory]
        !           170: 
        !           171: 
        !           172: -a            - Run the basic and general tests.  This is the default.
        !           173: -b            - Run the basic tests.
        !           174: -g            - Run the general tests. 
        !           175: -s            - Run the special tests.
        !           176: -f            - Set parameters for a quick functional test. This is the 
        !           177:                 default.  It applies only to basic tests.
        !           178: -n             - Suppress directory operations (mkdir and rmdir) on the 
        !           179:                 test-directory.  See descriptions of basic tests for more
        !           180:                 details.  
        !           181: -t            - Run full-length test with running time statistics. It only 
        !           182:                 applies to basic tests. You will want to rerun with "-t" after 
        !           183:                 all the "-f" (default option) tests run successfully.
        !           184: 
        !           185: 
        !           186: test-directory - The name of test directory that the test programs create 
        !           187:                 on the client.   runtests executes the basic tests in place 
        !           188:                 and they work on the test directory.  The general tests are 
        !           189:                 copied over to the test directory and executed there.  When 
        !           190:                 the -n flag is used, the test directory is assumed to already 
        !           191:                 exist.
        !           192: 
        !           193:                 The default test-directory is /mnt/'hostname'.test (where 
        !           194:                 'hostname' is the name of the machine on which you are 
        !           195:                 running the tests). There are three ways to override the 
        !           196:                 default test directory name.  One it to put the 
        !           197:                 test_directory on the command line.  Another way is to set 
        !           198:                 the environment variable NFSTESTDIR equal to the directory 
        !           199:                 name.  The command line method overrides setting the 
        !           200:                 environment variable.  The third way can only be used
        !           201:                 for the tests in the basic sub-directory.  There you
        !           202:                 can set the TESTDIR variable in tests.h.  The command
        !           203:                 line and environment variable both override this
        !           204:                 method.
        !           205: 
        !           206: Running the tests without mounting your NFS server on /mnt will run the tests 
        !           207: locally (if /mnt is local disk).  We recommend that you do this once to make 
        !           208: sure the testsuites run properly before you use them to test NFS.
        !           209: 
        !           210: The runtests in sub-directories: basic, general, and special,  may be invoked 
        !           211: with the same arguments as the master runtests if you wish to run each suite 
        !           212: separately.
        !           213: 
        !           214: 
        !           215: 
        !           216: 
        !           217: How to run the Testsuites at Connectathon
        !           218: -----------------------------------------
        !           219: 
        !           220: 
        !           221: The tests should be run in the following order:  basic,  general, and special.
        !           222: The basic tests should be passed completely before other tests are attempted.
        !           223: 
        !           224: The NFS Test Suite should be run in three phases:
        !           225: 
        !           226: Phase 1 - Run test programs locally.
        !           227: 
        !           228: Phase 2 - Run the tests against a Sun.  Run them on your machine using the
        !           229:           Sun as the server and then run them on the Sun using your machine
        !           230:           as the server.
        !           231: 
        !           232: Phase 3 - NxN Testing.  Run the tests on your machine using every other
        !           233:          machine as a server,  one at a time.  After the tests are 
        !           234:          successfully completed using a particular server,  log that
        !           235:          with the electronic board software provided. Check the electronic
        !           236:          board to make sure that the tests run successfully on 
        !           237:          every other machine that uses your machine as a server.
        !           238: 
        !           239: 
        !           240: Test Descriptions
        !           241: -----------------
        !           242: 
        !           243: System and library calls that are used by the testsuites are included in paren-
        !           244: theses.  Look at the source if you are interested in how time statistics are 
        !           245: recorded since that is not included in this description.
        !           246: 
        !           247: 
        !           248: 
        !           249: 
        !           250: - BASIC TESTS:   
        !           251: 
        !           252: Many of the programs listed below have optional calling parameters that can be 
        !           253: used to override existing parameters.  These are not used at this time so they 
        !           254: are not described.  
        !           255: 
        !           256: 
        !           257: test1: File and Directory Creation Test
        !           258: 
        !           259: This program creates the test directory (mkdir)  on the client and changes 
        !           260: directories (chdir) to it,  unless the -n flag is used in which case it simply 
        !           261: changes directories to the test directory.  Then it builds a directory tree  
        !           262: N levels deep, where each directory (including the test directory) has M 
        !           263: files and P directories (creat, close, chdir, and mkdir).  For the -f 
        !           264: option N = 2, M = 2,  and P = 2 so a total of six files and six directories 
        !           265: are created.  For other options N = 5, M = 5, and P = 2.  The files that are 
        !           266: created are given names that begin with "file." and directories with names 
        !           267: that begin with "dir.".
        !           268: 
        !           269: 
        !           270: 
        !           271: test2: File and directory removal test
        !           272: 
        !           273: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           274: removes the directory tree (unlink, chdir,  and rmdir) that was just created 
        !           275: by test1.  The number of levels, files, and directories,  and the name pre-
        !           276: fixes, are the same as in test1.
        !           277: 
        !           278: This routine will not remove a file or directory that was not created by test1 
        !           279: and will fail if it finds one.  It determines this by looking at the prefix on 
        !           280: the name of the object it's trying to remove.
        !           281: 
        !           282: 
        !           283: 
        !           284: test3: Lookups across mount point
        !           285: 
        !           286: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           287: gets the file status of the working directory (getwd and stat).    
        !           288: 
        !           289: 
        !           290: test4: setattr, getattr, and lookup
        !           291: 
        !           292: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           293: creates ten files (creat).    Then the permissions are changed (chmod) and the 
        !           294: file status is retrieved (stat) twice for each file. 
        !           295: 
        !           296: 
        !           297: test4a:  getattr, and lookup
        !           298: 
        !           299: This test exists but is not called as part of the testsuite.  You can edit
        !           300: runtests in the basic directory so this test is called.
        !           301: 
        !           302: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           303: creates ten files (creat).    Then the file status is retrieved (stat) for 
        !           304: each file. 
        !           305: 
        !           306: 
        !           307: 
        !           308: test5: read and write
        !           309:                 
        !           310: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           311: then: 
        !           312: 
        !           313: 1) Creates a file (creat) 
        !           314: 2) Gets status of file (fstat)
        !           315: 3) Checks size of file
        !           316: 4) Writes 1048576 bytes into the file (write) in 8192 byte buffers.  
        !           317: 5) Closes file (close)
        !           318: 6) Gets status of file (stat)
        !           319: 7) Checks the size of the file
        !           320: 
        !           321: Then the file is opened (open) and read (read) in 8192 byte buffers.  It's 
        !           322: contents are compared with what was written.  The file is then closed (close).
        !           323: 
        !           324: Then the file is then re-opened (open) and re-read (read) before it is removed 
        !           325: (unlink).
        !           326: 
        !           327: test5a: write
        !           328: 
        !           329: This test exists but is not called as part of the testsuite.  You can edit
        !           330: runtests in the basic directory so this test is called.
        !           331: 
        !           332: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           333: then: 
        !           334: 
        !           335: 1) Creates a file (creat) 
        !           336: 2) Gets status of file (fstat)
        !           337: 3) Checks size of file
        !           338: 4) Writes 1048576 bytes into the file (write) in 8192 byte buffers.  
        !           339: 5) Closes file (close)
        !           340: 6) Gets status of file (stat)
        !           341: 7) Checks the size of the file
        !           342: 
        !           343: 
        !           344: test5b: read
        !           345: 
        !           346: This test exists but is not called as part of the testsuite.  You can edit
        !           347: runtests in the basic directory so this test is called.
        !           348: 
        !           349: The file created in test5a is opened (open) and read (read) in 8192 byte 
        !           350: buffers.  It's contents are compared with what was written.  The file is 
        !           351: then closed (close) and removed (unlink).
        !           352: 
        !           353: 
        !           354: 
        !           355: test6: readdir
        !           356: 
        !           357: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           358: creates 200 files (creat).  The current directory is opened (opendir), the 
        !           359: beginning is found (rewinddir), and the directory is read (readdir) in a loop 
        !           360: until the end is found.  Errors flagged are:
        !           361: 
        !           362: 1) No entry for "."
        !           363: 2) No entry for ".."
        !           364: 3) Duplicate entry
        !           365: 4) Filename that doesn't begin with "file."
        !           366: 5) The suffix of the filename is out of range
        !           367: 6) An entry is returned for an unlinked file. (This error can only be
        !           368:    found when the test is run with an option other than -f.   For other
        !           369:    options the readdir loop is done multiple times and a file is unlinked
        !           370:    each time).  
        !           371: 
        !           372: The directory is then closed (closedir) and the files that were created are 
        !           373: removed (unlink). 
        !           374: 
        !           375: 
        !           376: 
        !           377: test7: link and rename
        !           378: 
        !           379: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           380: creates ten files.  For each of these files, the file is renamed (rename) and 
        !           381: file statistics are retrieved (stat) for both the new and old names.  Errors 
        !           382: that are flagged are:
        !           383: 
        !           384: 1) Old file still exists
        !           385: 2) New file doesn't exist (can't stat)
        !           386: 3) The new file's number of links doesn't equal one
        !           387: 
        !           388: Then an attempt is made to link the new file to it's old name (link) and file 
        !           389: stats are again retrieved (stat).  An error is flagged if:
        !           390: 
        !           391: 1) Can't link
        !           392: 2) Stats on new file can't be retrieved after link  
        !           393: 3) The new file's number of links doesn't equal two
        !           394: 4) Stats on old file can't be retrieved after link  
        !           395: 5) The old file's number of links doesn't equal two
        !           396:  
        !           397: Then the new file is removed (unlink) and file stats are retrieved for the old 
        !           398: file (stat).  An error is flagged if:
        !           399: 
        !           400: 1) Stats on old file can't be retrieved after unlink
        !           401: 2) The old file's number of links doesn't equal one
        !           402: 
        !           403: Any files that remain at the end of the test are removed (unlink).
        !           404: 
        !           405: test7a: rename
        !           406: 
        !           407: This test exists but is not called as part of the testsuite.  You can edit
        !           408: runtests in the basic directory so this test is called.
        !           409: 
        !           410: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           411: creates ten files.  For each of these files, the file is renamed (rename) and 
        !           412: file statistics are retrieved (stat) for both the new and old names.  Errors 
        !           413: that are flagged are:
        !           414: 
        !           415: 1) Old file still exists
        !           416: 2) New file doesn't exist (can't stat)
        !           417: 3) The new file's number of links doesn't equal one
        !           418: 
        !           419: Any files that remain at the end of the test are removed (unlink).
        !           420: 
        !           421: test7b: link
        !           422: 
        !           423: This test exists but is not called as part of the testsuite.  You can edit
        !           424: runtests in the basic directory so this test is called.
        !           425: 
        !           426: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           427: creates ten files.  A link (link) is done for each of these files, and file 
        !           428: stats are retrieved for the old and new files (stat).  An error is flagged 
        !           429: if:
        !           430: 
        !           431: 1) Can't link
        !           432: 2) Stats on either file can't be retrieved after link
        !           433: 3) The either file's number of links doesn't equal two
        !           434: 
        !           435: This is followed by an unlink (unlink) of the new file.  An error is 
        !           436: flagged if:
        !           437: 
        !           438: 1) Stats on the old file can't be retrieved after unlink
        !           439: 2) The old file's number of links doesn't equal one
        !           440: 
        !           441: Any files that remain at the end of the test are removed (unlink).
        !           442: 
        !           443: 
        !           444: 
        !           445: test8: symlink and readlink
        !           446: 
        !           447: NOTE:   Not all operating systems support symlink and readlink.  If the
        !           448:        errno EOPNOTSUPP is returned during test8, the test will be
        !           449:        counted as passing.  For clients not supporting S_IFLNK, the
        !           450:        test will not be attempted.
        !           451: 
        !           452: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           453: makes 10 symlinks (symlink).  It reads (readlink), and gets statistics for 
        !           454: (lstat), each, and then removes them (unlink).  Errors flagged are:
        !           455: 
        !           456: 1) Unsupported function
        !           457: 2) Can't get statistics (lstat failed)
        !           458: 3) The mode in the stats is not symlink
        !           459: 4) The value of the symlink is incorrect (returned from readlink)
        !           460: 5) The linkname is wrong
        !           461: 6) The unlink failed
        !           462: 
        !           463: 
        !           464: 
        !           465: test9: statfs
        !           466: 
        !           467: This program changes directory to the test directory (chdir and/or mkdir) and 
        !           468: gets the file system status on the current directory (statfs).
        !           469: 
        !           470: 
        !           471: 
        !           472: 
        !           473: - GENERAL:  General tests to look at server loading.
        !           474: 
        !           475: Runs a small compile, Tbl, Nroff and a Large Compile. Four simultaneous
        !           476: large compiles are also run.
        !           477: 
        !           478: 
        !           479: 
        !           480: 
        !           481: - SPECIAL:  Information specific to the special tests
        !           482: 
        !           483: The special directory is set up to test special problems that have
        !           484: come up in the past.  These tests are meant to be advisory, ...
        !           485: things to watch out for.  It is not required that you "pass" these
        !           486: tests but we suggest you give them a try.
        !           487: 
        !           488: The tests try to:
        !           489: 
        !           490:       check for proper open/unlink operation
        !           491:       check for proper open/chmod 0 operation
        !           492:       check for lost reply on non-idempotent requests
        !           493:       test exclusive create
        !           494:       test negative seek
        !           495:       test rename
        !           496: 
        !           497: 
        !           498: 
        !           499: 
        !           500: - MISC:
        !           501: 
        !           502: 'Testitems' is a list of NFS functionality that can be used for reference.
        !           503: 
        !           504: Programs in 'tools' are provided for your use as you see fit.  Please
        !           505: feel free to add to this (or any other) directory!  If you do, please
        !           506: make sure that Cathe Ray (sun!cathe or [email protected]) at Sun gets a copy 
        !           507: so we can add it to the master test distribution.
        !           508: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.