OCFS2 Test List
This is a list of tests that are available under ocfs2-test project. Some are work in progress but have partial functionality available. Note that to run build and run ocfs2-test, one needs to have LAM/MPI installed and configured on all nodes of the test cluster.
Name |
Script / Program |
Description |
Technology |
#nodes |
Useful? |
What is tested |
aio-stress |
Will open or create each file on the command line, and start a series of aio to it. Aio is done in a rotating loop. First file1 gets 8 requests, then file2, then file3 etc. As each file finishes writing, it is switched to reads. |
C |
1* |
Yes |
Asynchronous I/O |
|
build-kernel |
This script will run on each node and will control the build process. |
Python |
1* |
Yes |
Concurrent I/O, lock migration, dlm transaction, heartbeat and almost all types of operations one can do in a filesystem. |
|
Will open or create each file on the command line, and start a series of aio to it. Aio is done in a rotating loop. First file1 gets 8 requests, then file2, then file3 etc. As each file finishes writing, it is switched to reads. |
Python and LAM/MPI |
64** |
Yes |
|||
file-size-limits |
Will quickly check if file size limits are within partition limits. |
C |
1* |
Yes |
Check basic FS functionality |
|
cross-delete |
This program uses Python and LAM/MPI to start and synchronize processes in the nodes. It will first create many levels of directories for each one of the nodes and when completed, the nodes will start removing the files created by the node immediately before. |
Python and LAM/MPI |
64** |
Yes |
Concurrent I/O, lock migration, dlm transaction, heartbeat. It does stress file creation by a node e removal by another. it works in pairs or nodes and ignore one node if an odd number is specified. |
|
This script will remove the files created by the other node. |
Python |
1* |
||||
This script will create the files, using tar extraction, of the files that will be removed by the other node. |
Python |
1* |
Yes |
|||
create-and-open |
Will open or create each file on the command line, and start a series of aio to it. Aio is done in a rotating loop. First file1 gets 8 requests, then file2, then file3 etc. As each file finishes writing, it is switched to reads. |
C |
1* |
No |
Asynchronous I/O |
|
create-racer |
Wrapper script to allow create_racer to run in multiple nodes using LAM/MPI to coordinate the execution. |
Python and LAM/MPI |
64** |
Yes |
Race conditions between file creation and file access by multiple nodes. |
|
Will rotate through all processes, up to <iterations> times. In each pass, one node will create a file in the directory which <path> specifies, and the others will attempt to access the new file. |
C and LAM/MPI |
1* |
Yes |
|||
dlm-stress |
Will run with 2 nodes performing a specified number of loops that will issue a find, umount and mount on both nodes and in sequence.. |
Shell script |
64** |
Yes |
DLM test. |
|
enospc-test |
Will test how the FS will react when its capacity reach the maximum and file creation is being attempted. |
C |
1* |
Yes |
Make sure the filesystem is handling correctly when the available space is exhausted. |
|
Wrapper script to test enospc_test program. |
Shell Script |
1* |
Yes |
|||
extend-and-write |
~Wrapper script to run extend_and_write on multiple nodes using LAM/MPI.-~ |
Python and LAM/MPI |
64** |
Yes |
Test file write and extension. |
|
Will fork a child process. The parent will create a file and write while the child will extend the file. |
C |
1* |
Yes |
|||
extendo |
Will extend an existing file (or create one if it does not exist) N times by YY Kbytes, waiting XX milliseconds between each extension. |
C |
1* |
Yes |
File extension, file creation. Very used to test races conditions involving file creation mixed with file extension. |
|
fill-verify-holes |
This is the script that will drive the test. |
Shell Script |
1* |
Yes |
Test sparse file and unwritten extends. Also test the btree. |
|
This program will create files with holes (sparse file) or unwritten extends. It will also be able to use mmap. |
C |
1* |
||||
This program will make holes in an existing file. |
C |
1* |
Yes |
|||
Read the logfile created by fill_holes or puch_holes and check if the file is consistent with the information logged. |
C |
1* |
Yes |
|||
fork-writer |
This script drive the forkwriter test and will use LAM/MPI to run it on specified nodes. |
Python and LAM/MPI |
64** |
Yes |
Concurrent I/O, lock migration, dlm transaction, heartbeat and almost all types of operations one can do in a filesystem. |
|
This test launches forks P processes each of which create a file with the same name and issue few writes of few bytes each before closing the file and exiting. The parent process meanwhile waits for the childs to all die before launching the next set of P processes. The parent process loops L times. This test really has no cluster relevance if running in stand-alone mode. Needs a script to coordinate cluster test. |
C |
1* |
Yes |
|||
fsck-test |
Will test all conditions that fsck.ocfs2 is supposed to recover. |
C |
1* |
Yes |
Test fsck.ocfs2. |
|
log-writer |
Will write a message to a file with a xxx milliseconds interval. |
C |
1* |
Yes |
File write. |
|
lock-grab |
Will basically get some locks and hold them. Usually started on multiple nodes in parallel. |
C |
1* |
Yes |
DLM stress. |
|
lvb-torture |
Will test LVB updates via dlmfs. It will avoid using the filesystem. |
C |
1* |
Yes |
LVB Updates. |
|
This is a wrapper script to run lvb_torture in multiple nodes. It uses LAM/MPI to control the execution. |
Python and LAM/MPI |
1* |
Yes |
|||
mkfs-test |
Will check if mkfs.ocfs2 is working as designed. |
C |
1* |
Yes |
Test mkfs.ocfs2. |
|
mmap-test |
This is a simple test to see if mmap behaves correctly at the end of the file's size. It first writes up to the existing end of the file. This should work. Then it writes just past the end of the file. This should error. This test really has no cluster relevance. |
C and LAM/MPI |
1* |
Yes |
Check if mmap works properly. |
|
mmap-truncate |
Stress file system stability by testing end of file boundary conditions with mmap by racing truncates and writes to a shared writeable region. |
C |
1* |
Yes |
Test file boundaries with mmap. |
|
multi-node-mmap |
Will test to see if mmap behaves correctly in a multi node configuration. Requires at least two processes. The rank zero process preps a file by opening it O_CREAT|O_TRUNC and filling the file with a pattern. All nodes then open the file and mmap(MAP_SHARED|PROT_READ|PROT_WRITE) it's entire length. In a round robin fashion, a node is picked to write a pattern into their pre-determined block and the other nodes read the whole file to verify the expected pattern. |
C and LAM/MPI |
1* |
Yes |
Multi node mmap. |
|
network-failure |
Will randomly disable the network interface used by ocfs2 to simulate a network failure. It will start a buildkernel test to add load conditions and then elect a node to have the network failed. |
Python and LAM/MPI |
64** |
Yes |
Network failure recovery. |
|
This script will identify and disable the NIC on the elected node. |
Python |
1* |
Yes |
|||
tools-truncate |
Test the ocfs2_truncate function in ocfs2-tools. |
C |
1* |
Yes |
Test ocfs2_truncate function in ocfs2-tools. |
|
open-delete |
Wrapper to run open_delete in multiple nodes. Will take all the arguments, validate and properly configure LAM/MPI to run on the specified nodes. |
Python and LAM/MPI |
64** |
Yes |
Test file removal while other processes have it open. |
|
Requires at least two processes. The rank zero process preps a file by O_CREAT|O_TRUNC and keep opening it. All nodes then delete this file. |
C and LAM/MPI |
64** |
Yes |
|||
remove-slot |
Script to test the remove slot feature. |
Shell Script |
1* |
Yes |
Test the remove slot feature in tunefs.ocfs2. |
|
This program used to create some boudary situation to test whether tunefs.ocfs2 can work OK with removing slots. When we have orphan files or have some blocks allocated in truncate log or local alloc, we can't remove the slots, so the option CREATE_ORPHAN_FILE, CREATE_TRUNCATE_LOG and CREATE_LOCAL_ALLOC are used to check it. |
C |
1* |
Yes |
|||
rename-write-race |
This test launches logwriter that extends the file in a loop while this script keeps renaming the filename. This test was useful in fixing a race in ocfs2 in which rename was flushing stale inode->i_size to disk. |
Shell Script |
1* |
Yes |
Test basic functionality |
|
reserve-space |
reserve_space uses the space reservation/deallocation ioctls based on user request. |
C |
1* |
Yes |
Test basic functionality |
|
sendfile-test |
sendfiletest is used to send a file to another node using the network (port 8001) |
C |
1* |
Yes |
Test basic functionality |
|
splice-test |
Script to test the remove slot feature. |
C |
1* |
Yes |
Test splice. |
|
This program used to create some boudary situation to test whether tunefs.ocfs2 can work OK with removing slots. When we have orphan files or have some blocks allocated in truncate log or local alloc, we can't remove the slots, so the option CREATE_ORPHAN_FILE, CREATE_TRUNCATE_LOG and CREATE_LOCAL_ALLOC are used to check it. |
C |
1* |
Yes |
- 1 node imply into a non clustered script/program.
** 64 nodes is a theoretical limit. I believe it will depend much on the architecture and LAM/MPI.