nfstest_posix - Man Page
POSIX file system level access tests
Synopsis
nfstest_posix --server <server> [options]
Description
Verify POSIX file system level access over the specified path using positive and negative testing.
Valid for any version of NFS.
Options
- --version
 show program's version number and exit
- -h, ā--help
 show this help message and exit
- -f FILE, --file=FILE
 File where options are specified besides the system wide file /etc/nfstest, user wide file $HOME/.nfstest or in the current directory .nfstest file
NFS specific options
- -s SERVER, --server=SERVER
 Server name or IP address
- -e EXPORT, --export=EXPORT
 Exported file system to mount [default: '/']
- --nfsversion=NFSVERSION
 NFS version, e.g., 3, 4, 4.1, etc. [default: 4.1]
- -m MTPOINT, --mtpoint=MTPOINT
 Mount point [default: '/mnt/t']
- -p PORT, --port=PORT
 NFS server port [default: 2049]
- --proto=PROTO
 NFS protocol name [default: 'tcp']
- --sec=SEC
 Security flavor [default: 'sys']
- --nconnect=NCONNECT
 Multiple TCP connections option [default: '1']
- -o MTOPTS, --mtopts=MTOPTS
 Mount options [default: 'hard,rsize=4096,wsize=4096']
- --datadir=DATADIR
 Data directory where files are created, directory is created on the mount point [default: '']
Logging options
- -v VERBOSE, --verbose=VERBOSE
 Verbose level for debug messages [default: 'opts|info|dbg1|dbg2|dbg3']
- --tverbose=TVERBOSE
 Verbose level for test messages [default: '1']
- --createlog
 Create log file
- --rexeclog
 Create rexec log files
- --warnings
 Display warnings
- --tag=TAG
 Informational tag, it is displayed as an INFO message [default: '']
- --notty
 Do not use terminal colors on output
- --isatty
 Use terminal colors on output -- useful when running with nohup
Packet trace options
- --createtraces
 Create a packet trace for each test
- --tbsize=TBSIZE
 Capture buffer size for tcpdump [default: 192k]
- --trcdelay=TRCDELAY
 Seconds to delay before stopping packet trace [default: 2.0]
- --keeptraces
 Do not remove any trace files [default: remove trace files if no errors]
- --rmtraces
 Remove trace files [default: remove trace files if no errors]
- -i INTERFACE, --interface=INTERFACE
 Device interface [default: automatically selected]
File options
- --nfiles=NFILES
 Number of files to create [default: 2]
- --filesize=FILESIZE
 File size to use for test files [default: 64k]
- --rsize=RSIZE
 Read size to use when reading files [default: 4k]
- --wsize=WSIZE
 Write size to use when writing files [default: 4k]
- --iodelay=IODELAY
 Seconds to delay I/O operations [default: 0.1]
- --offset-delta=OFFSET_DELTA
 Read/Write offset delta [default: 4k]
Path options
- --sudo=SUDO
 Full path of binary for sudo [default: '/usr/bin/sudo']
- --kill=KILL
 Full path of binary for kill [default: '/usr/bin/kill']
- --nfsstat=NFSSTAT
 Full path of binary for nfsstat [default: '/usr/sbin/nfsstat']
- --tcpdump=TCPDUMP
 Full path of binary for tcpdump [default: '/usr/sbin/tcpdump']
- --iptables=IPTABLES
 Full path of binary for iptables [default: '/usr/sbin/iptables']
- --messages=MESSAGES
 Full path of log messages file [default: '/var/log/messages']
- --trcevents=TRCEVENTS
 Full path of tracing events directory [default: '/sys/kernel/debug/tracing/events']
- --trcpipe=TRCPIPE
 Full path of trace pipe file [default: '/sys/kernel/debug/tracing/trace_pipe']
- --tmpdir=TMPDIR
 Temporary directory [default: '/tmp']
Debug options
- --nocleanup
 Do not cleanup created files
- --notimestamps
 Do not display timestamps in debug messages
- --bugmsgs=BUGMSGS
 File containing test messages to mark as bugs if they failed
- --nomount
 Do not mount server and run the tests on local disk space
- --basename=BASENAME
 Base name for all files and logs [default: automatically generated]
- --nfsdebug=NFSDEBUG
 Set NFS kernel debug flags and save log messages [default: '']
- --rpcdebug=RPCDEBUG
 Set RPC kernel debug flags and save log messages [default: '']
- --tracepoints=TRACEPOINTS
 List of trace points modules to enable [default: '']
- --nfsstats
 Get NFS stats [default: 'False']
- --pktdisp
 Display main packets related to the given test
- --nfserrors
 Fail every NFS error found in the packet trace
- --client-ipaddr=CLIENT_IPADDR
 IP address of localhost
Reporting options
- --xunit-report
 Generate xUnit compatible test report
- --xunit-report-file=XUNIT_REPORT_FILE
 Path to xout report file
Test options
- --runtest=RUNTEST
 Comma separated list of tests to run, if list starts with a '^' then all tests are run except the ones listed [default: 'all']
Tests
access
Verify POSIX API access() on files with different modes.
chdir
Verify POSIX API chdir() by changing to a newly created directory and then by changing back to the original directory.
close
Verify POSIX API close() works and that writing to a closed file descriptor returns an error.
closedir
Verify POSIX API closedir() works
creat
Verify POSIX API creat(path, mode) is equivalent to open(path, O_WRONLY|O_CREAT|O_TRUNC, mode). First test with a path that does not exist to verify the file was created and then test with a path that does exist to verify that the file is truncated.
fcntl
Verify the POSIX API fcntl() commands F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, and FD_CLOEXEC. The F_DUPFD command is tested by performing operations on the original and dupped file descriptor to ensure they behave correctly. The F_GETFD and F_SETFD commands are tested by setting the FD_CLOEXEC flag and making sure it gets set. The F_GETFL and F_SETFL commands are tested by setting the O_APPEND flag and making sure it gets set. Run the test for both 'read' and 'write'.
fdatasync
Verify POSIX API fdatasync().
fstat
Verify POSIX API fstat() by checking the mode on a file and that it returns the expected structure members. Create a symlink and verify that fstat returns information about the link.
fstatvfs
Verify POSIX API fstatvfs() by making sure all the members of the structure are returned.
fsync
Verify POSIX API fsync().
link
Verify POSIX API link(src, dst) creates a link and updates st_ctime field for the file. Verify that link updates the st_ctime and st_mtime for the directory. Verify st_link count incremented by 1 for the file.
lseek
Verify POSIX API lseek() with different offsets and whence values including seeking past the end of the file.
lstat
Verify POSIX API lstat() by checking the mode on a file and that it returns the expected structure members. Create a symlink and verify that lstat returns information about the link.
mkdir
Verify POSIX API mkdir(). Verify that mkdir with a path of a symbolic link fails. Verify that the st_ctime and st_mtime fields of the parent directory are updated.
mmap
Verify POSIX API mmap() by mapping a file and verifying I/O operations. Verify mmap followed by memory read of existing file works. Verify mmap followed by memory write to file works.
munmap
Verify POSIX API munmap() by mapping a file and then unmapping the file.
opendir
Verify POSIX API opendir() on a directory.
read
Verify POSIX API read() by reading data from a file. Verify that the st_atime of the file is updated after the read. Verify a read of 0 bytes returns 0.
readdir
Verify POSIX API readdir() on a directory.
readlink
Verify Test POSIX API readlink() by reading a symbolic link.
rename
Verify POSIX API rename() by renaming a file, directory, and a symbolic link. Verify that a rename from a file to a symbolic link will cause the symbolic link to be removed.
rewinddir
Verify POSIX API rewinddir() on a directory.
rmdir
Verify POSIX API rmdir() by removing a directory. Verify that the parent's st_ctime and st_mtime are updated.
seekdir
Verify POSIX API seekdir() on a directory.
stat
Verify POSIX API stat() by checking the mode on a file and that it returns the expected structure members. Create a symlink and verify that stat returns information about the file.
statvfs
Verify POSIX API statvfs() by making sure all the members of the structure are returned.
symlink
Verify POSIX API symlink() by creating a symbolic link and verify that the file type is slnk.
sync
Verify POSIX API sync().
telldir
Verify POSIX API telldir() on a directory.
unlink
Verify POSIX API unlink() by unlinking a file and verify that it was removed. Verify that the st_ctime and st_mtime fields of the parent directory were updated. Then unlink a symbolic link and verify that the symbolic link was removed but not the referenced file. Then remove an opened file and verify that I/O still occurs to the file after the unlink and that the file gets removed when the file is closed. Create a file and then hard link to it so the link count is greater than 1. Unlink the hard file and verify that st_ctime field is updated.
write
Verify POSIX API write() by writing 0 bytes and verifying 0 is returned. Write a pattern the file, seek +N, write another pattern, and close the file. Open the file and read in both written patterns and verify that it is the correct pattern. Read in the data from the hole in the file and verify that it is 0.
open
Verify POSIX API open() on a file. Verify file creation using the O_CREAT flag and verifying the file mode is set to the specified value. Verify the st_ctime and st_mtime are updated on the parent directory after the file was created. Verify open on existing file fails with the O_EXCL flag set. Verify write succeeds and read fails if file was open with O_WRONLY. Verify read succeeds and write fails if file was open with O_RDONLY. Verify that all writes with O_APPEND set are to the end of the file. Use O_DSYNC, O_RSYNC, and O_SYNC flags in open calls. Verify file open with O_CREAT and O_TRUNC set will truncate an existing file. Verify that it updates the file st_ctime and st_mtime.
chmod
Verify POSIX API chmod() on a file and directory by trying all valid combinations of modes. Verify that the st_ctime files is updated for both the file and directory.
all
Run all tests: access, chdir, close, closedir, creat, fcntl, fdatasync, fstat, fstatvfs, fsync, link, lseek, lstat, mkdir, mmap, munmap, opendir, read, readdir, readlink, rename, rewinddir, rmdir, seekdir, stat, statvfs, symlink, sync, telldir, unlink, write, open, chmod
Examples
The only required option is --server
$ nfstest_posix --server 192.168.0.11
Notes
The user id in the local host must have access to run commands as root using the 'sudo' command without the need for a password.
See Also
nfstest.test_util(3), nfstest_alloc(1), nfstest_cache(1), nfstest_delegation(1), nfstest_dio(1), nfstest_fcmp(1), nfstest_file(1), nfstest_interop(1), nfstest_io(1), nfstest_lock(1), nfstest_pkt(1), nfstest_pnfs(1), nfstest_rdma(1), nfstest_sparse(1), nfstest_ssc(1), nfstest_xattr(1), nfstest_xid(1), packet.nfs.nfs3_const(3), packet.nfs.nfs4_const(3)
Bugs
No known bugs.
Author
Jorge Mora (mora@netapp.com)
Referenced By
nfstest(1), nfstest_alloc(1), nfstest_cache(1), nfstest_delegation(1), nfstest_dio(1), nfstest_fcmp(1), nfstest_file(1), nfstest_interop(1), nfstest_io(1), nfstest_lock(1), nfstest_pkt(1), nfstest_pnfs(1), nfstest_rdma(1), nfstest_sparse(1), nfstest_ssc(1), nfstest_xattr(1), nfstest_xid(1).