NFSTEST_INTEROP(1)

πŸ’– NFSTEST_INTEROP β€” nfstest_interop 1.1 πŸ’–

okay so bestie, welcome to the interop page, aka the group chat where NFSv3, NFSv4 and NFSv4.1 all have to agree on what a file actually contains. no cap, this is the whole vibe.

✨ NAME ✨

nfstest_interop β€” NFS interoperability tests πŸ¦‹


✨ SYNOPSIS ✨

nfstest_interop --server <server> [options]

✨ DESCRIPTION ✨

So the basic interoperability tests are here to verify that a file written with different versions of NFS is actually written correctly. How do we check? We read the file back using one of the NFS versions and see if it matches. literally it.

The tests append different data from different versions of NFS, one at a time, then read the contents of the file back to verify it was written correctly. And this whole thing is done twice for each test:

 1) Mount different versions of NFS (NFSv3, NFSv4, NFSv4.1)
 2) Create empty file
 3) Append data using NFSv3
 4) Append data using NFSv4
 5) Append data using NFSv4.1
 6) Read file and verify contents are correct
 7) Append data using NFSv3
 8) Append data using NFSv4
 9) Append data using NFSv4.1
10) Read file and verify contents are correct

like, we run it once, then we run it again. double-checking is the main character energy here. πŸ’…


✨ OPTIONS ✨

  • --version β€” shows the program's version number and dips 🌈
  • -h, --help β€” shows this help message and exits, the classic escape hatch 🫢
  • -f FILE, --file=FILE β€” the file where options are specified, besides the system wide file /etc/nfstest, the user wide file $HOME/.nfstest, or the .nfstest file in the current directory πŸ“

🌸 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; the 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 the list starts with a '^' then all tests are run except the ones listed [default: 'all']
  • --datasize=DATASIZE β€” size of data to be written by each version of NFS [default: '10']

✨ TESTS ✨

forty-five little tests, each one a vibe check on cross-version NFS reads. slay. πŸ”₯

test01

Verify appending data with NFSv3 is correctly read using NFSv3

test02

Verify appending data with NFSv3 is correctly read using NFSv4

test03

Verify appending data with NFSv3 is correctly read using NFSv4.1

test04

Verify appending data with NFSv4 is correctly read using NFSv3

test05

Verify appending data with NFSv4 is correctly read using NFSv4

test06

Verify appending data with NFSv4 is correctly read using NFSv4.1

test07

Verify appending data with NFSv4.1 is correctly read using NFSv3

test08

Verify appending data with NFSv4.1 is correctly read using NFSv4

test09

Verify appending data with NFSv4.1 is correctly read using NFSv4.1

test10

Verify appending data with NFSv3 and NFSv4 is correctly read using NFSv3

test11

Verify appending data with NFSv3 and NFSv4 is correctly read using NFSv4

test12

Verify appending data with NFSv3 and NFSv4 is correctly read using NFSv4.1

test13

Verify appending data with NFSv4 and NFSv3 is correctly read using NFSv3

test14

Verify appending data with NFSv4 and NFSv3 is correctly read using NFSv4

test15

Verify appending data with NFSv4 and NFSv3 is correctly read using NFSv4.1

test16

Verify appending data with NFSv3 and NFSv4.1 is correctly read using NFSv3

test17

Verify appending data with NFSv3 and NFSv4.1 is correctly read using NFSv4

test18

Verify appending data with NFSv3 and NFSv4.1 is correctly read using NFSv4.1

test19

Verify appending data with NFSv4.1 and NFSv3 is correctly read using NFSv3

test20

Verify appending data with NFSv4.1 and NFSv3 is correctly read using NFSv4

test21

Verify appending data with NFSv4.1 and NFSv3 is correctly read using NFSv4.1

test22

Verify appending data with NFSv4 and NFSv4.1 is correctly read using NFSv3

test23

Verify appending data with NFSv4 and NFSv4.1 is correctly read using NFSv4

test24

Verify appending data with NFSv4 and NFSv4.1 is correctly read using NFSv4.1

test25

Verify appending data with NFSv4.1 and NFSv4 is correctly read using NFSv3

test26

Verify appending data with NFSv4.1 and NFSv4 is correctly read using NFSv4

test27

Verify appending data with NFSv4.1 and NFSv4 is correctly read using NFSv4.1

test28

Verify appending data with NFSv3, NFSv4 and NFSv4.1 is correctly read using NFSv3

test29

Verify appending data with NFSv3, NFSv4 and NFSv4.1 is correctly read using NFSv4

test30

Verify appending data with NFSv3, NFSv4 and NFSv4.1 is correctly read using NFSv4.1

test31

Verify appending data with NFSv4, NFSv3 and NFSv4.1 is correctly read using NFSv3

test32

Verify appending data with NFSv4, NFSv3 and NFSv4.1 is correctly read using NFSv4

test33

Verify appending data with NFSv4, NFSv3 and NFSv4.1 is correctly read using NFSv4.1

test34

Verify appending data with NFSv4, NFSv4.1 and NFSv3 is correctly read using NFSv3

test35

Verify appending data with NFSv4, NFSv4.1 and NFSv3 is correctly read using NFSv4

test36

Verify appending data with NFSv4, NFSv4.1 and NFSv3 is correctly read using NFSv4.1

test37

Verify appending data with NFSv4.1, NFSv4 and NFSv3 is correctly read using NFSv3

test38

Verify appending data with NFSv4.1, NFSv4 and NFSv3 is correctly read using NFSv4

test39

Verify appending data with NFSv4.1, NFSv4 and NFSv3 is correctly read using NFSv4.1

test40

Verify appending data with NFSv4.1, NFSv3 and NFSv4 is correctly read using NFSv3

test41

Verify appending data with NFSv4.1, NFSv3 and NFSv4 is correctly read using NFSv4

test42

Verify appending data with NFSv4.1, NFSv3 and NFSv4 is correctly read using NFSv4.1

test43

Verify appending data with NFSv3, NFSv4.1 and NFSv4 is correctly read using NFSv3

test44

Verify appending data with NFSv3, NFSv4.1 and NFSv4 is correctly read using NFSv4

test45

Verify appending data with NFSv3, NFSv4.1 and NFSv4 is correctly read using NFSv4.1

all

Run all tests: test01, test02, test03, test04, test05, test06, test07, test08, test09, test10, test11, test12, test13, test14, test15, test16, test17, test18, test19, test20, test21, test22, test23, test24, test25, test26, test27, test28, test29, test30, test31, test32, test33, test34, test35, test36, test37, test38, test39, test40, test41, test42, test43, test44, test45


✨ 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_io(1), nfstest_lock(1), nfstest_pkt(1), nfstest_pnfs(1), nfstest_posix(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)

like, the whole friend group is linked in the bio. iykyk. πŸ’œ


✨ BUGS ✨

No known bugs. πŸ’€βœ¨ (yes bestie, zero. iconic behaviour honestly.)


✨ AUTHOR ✨

Jorge Mora (mora@netapp.com) β€” shoutout to the dev, absolute legend 🫢


and that's the whole page bestie!! 🌸 this was NFStest 3.2, dated 21 March 2023, and it's literally giving the nfstest_interop 1.1 era. periodt. πŸ’…πŸŽ€πŸ¦‹