======================================== TESTING FOR REQUIREMENTS IN TEST SCRIPTS ======================================== Test scripts need to indicate to the infrastructure what sorts of requirements they have. This is done with _require_ macros, which may take parameters. (1) General requirements. _require_command "$" _require_test _require_test_program _require_xfs_io_command [] (2) Filesystem capability requirements. _require_chattr _require_exportfs (3) System call requirements. _require_statx (4) Device mapper requirement. _require_dm_target _require_log_writes ==================== GENERAL REQUIREMENTS ==================== _require_command "$NAME_PROG" name The test requires an external command, called 'name' be present on the system and that '$VAR' should be set with the path to that command. $VAR should then be used to refer to the command when executing it. For example: _require_command "KILLALL_PROG" killall to locate the killall command and then: $KILLALL_PROG -q $FSSTRESS_PROG to make use of it. _require_test The test requires that the block device specified by $TEST_DEV be mounted on $TEST_DIR. _require_test_program The test requires a program by the name of 'name' be present and built in the src/ directory. For example: _require_test_program "stat_test" requires that src/stat_test be built. _require_xfs_io_command [] The test requires that the xfs_io command be available, that it supports command and, optionally, that that command supports the specified switch. For example: _require_xfs_io_command "falloc" _require_xfs_io_command "chattr" "+/-x" The first requires that xfs_io support the falloc command and the second that it supports the chattr command and that the chattr command supports the +x and -x arguments (DAX attribute). ================================== FILESYSTEM CAPABILITY REQUIREMENTS ================================== _require_chattr The test requires that the filesystem attribute set by the chattr command with + as an argument be available and supported by the $TEST_DEV filesystem. No check is made of the scratch filesystem. For example: _require_chattr ai tests to see if setting the append-only and immutable attributes on a file (chattr +a +i) is supported. _require_exportfs The test requires that the $TEST_DEV filesystem supports NFS export. The test also requires the use of the open_by_handle_at() system call and will be skipped if it isn't available in the kernel. ======================== SYSTEM CALL REQUIREMENTS ======================== _require_statx The test requires the use of the statx() system call and will be skipped if it isn't available in the kernel. ========================== DEVICE MAPPER REQUIREMENTS ========================== _require_dm_target The test requires the use of the device mapper target and will be skipped if it isn't available in the kernel. _require_log_writes The test requires the use of the device mapper target log-writes. The test also requires the test program log-writes/replay-log is built and will be skipped if either isn't available. ====================== PERF TEST REQUIREMENTS ====================== _require_fio_results This test requires the supporting tools for saving and comparing fio based perf test results.