[OracleOSS] [TitleIndex] [WordIndex]

OCFS2/Ocfs2TestList

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

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

buildkernel.py

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.

run_buildkernel.py

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

check_file_size_limits.c

Will quickly check if file size limits are within partition limits.

C

1*

Yes

Check basic FS functionality

cross-delete

cross_delete.py

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.

crdel_del_file.py

This script will remove the files created by the other node.

Python

1*

crdel_gen_file.py

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

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

run_create_racer.py

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.

create_racer.c

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

dlmstress1.sh

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

enospc_test.c

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.

enospc.sh

Wrapper script to test enospc_test program.

Shell Script

1*

Yes

extend-and-write

run_extend_and_write.py

~Wrapper script to run extend_and_write on multiple nodes using LAM/MPI.-~

Python and LAM/MPI

64**

Yes

Test file write and extension.

extend_and_write

Will fork a child process. The parent will create a file and write while the child will extend the file.

C

1*

Yes

extendo

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

burn-in.sh

This is the script that will drive the test.

Shell Script

1*

Yes

Test sparse file and unwritten extends. Also test the btree.

fill_holes.c

This program will create files with holes (sparse file) or unwritten extends. It will also be able to use mmap.

C

1*

punch_holes.c

This program will make holes in an existing file.

C

1*

Yes

verify_holes.c

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

run_forkwriter.py

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.

forkwriter.c

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

fsck-test.sh

Will test all conditions that fsck.ocfs2 is supposed to recover.

C

1*

Yes

Test fsck.ocfs2.

log-writer

logwriter

Will write a message to a file with a xxx milliseconds interval.

C

1*

Yes

File write.

lock-grab

lock_grab.c

Will basically get some locks and hold them. Usually started on multiple nodes in parallel.

C

1*

Yes

DLM stress.

lvb-torture

lvb_torture

Will test LVB updates via dlmfs. It will avoid using the filesystem.

C

1*

Yes

LVB Updates.

run_lvb_torture.py

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

mkfs-test.sh

Will check if mkfs.ocfs2 is working as designed.

C

1*

Yes

Test mkfs.ocfs2.

mmap-test

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

mmap_truncate.c

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

multi_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

test_netfail.py

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.

ocfs2_nicdown.py

This script will identify and disable the NIC on the elected node.

Python

1*

Yes

tools-truncate

ocfs2_truncate.sh

Test the ocfs2_truncate function in ocfs2-tools.

C

1*

Yes

Test ocfs2_truncate function in ocfs2-tools.

open-delete

open_delete.py

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.

open_delete.c

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

remove_slot.sh

Script to test the remove slot feature.

Shell Script

1*

Yes

Test the remove slot feature in tunefs.ocfs2.

remove_slot.c

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

rename_write_race.sh

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.c

reserve_space uses the space reservation/deallocation ioctls based on user request.

C

1*

Yes

Test basic functionality

sendfile-test

sendfiletest.c

sendfiletest is used to send a file to another node using the network (port 8001)

C

1*

Yes

Test basic functionality

splice-test

splice_read.c

Script to test the remove slot feature.

C

1*

Yes

Test splice.

splice_write.c

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


** 64 nodes is a theoretical limit. I believe it will depend much on the architecture and LAM/MPI.


2012-11-08 13:01