OCFS2 Indexed Dir Test
Contents
Introduction
This document aims at scheduling the testing plan against dx-dirs which we're currently implementing on Ocfs2,and also capture/record the testing result to trace the status during test where we can easily position a bug. In an addition,we also explain how all of the testcases will be organized and the workflow of their corresponding testing tool.
Test Limitation
The limitation defined by desgin roadmap during dxdirs implementation on ocfs2 should be claimed here to make a clear understanding of how can we expect our testing tool most.
OCFS2_MAX_FILENAME_LEN 255
OCFS2_MAX_SLOTS 255
VFS_PATH_MAX 65536
OCFS2_MAX_BLOCKSIZE 4k
Testcases
we concentrated on feature,stress and boundary test for kernel fs both in single and multiple nodes,and then formalize these into a testing tool package.currently,we'll only focused on dx-dirs testing without INLINE-DATA enabled to avoid a confusion here.
1.Single-node Tests
All testcases scheduled in index_dir_run.sh,basically these testing scenarios were provided by index_dir.c while some other cases built by shell.
1. Basic Feature test,consists of a set of dirs operations for dx-dirs,it includes dirents creation,unlink,traverse,lookup etc under a series of block and cluster size(-b 512/1k/2k/4k,-C 4k/8k/16k/../1M) 2. Random tests,run tests with a random directory dirent length,dirent numbers or directory depth, also perform dirent deletion/rename from a random logical offset. also fill up empty dirent blocks randomly. 3. Concurrent tests, tests with a fixed number of processes to concurrently manipulate the dirents under a same directory. 4. Multiple process tests, tests with a fixed number of processes to respectively perform dirents manipulation under different dirs. 5. Boundary tests, 1) Test to right extend a inlined directory into indexed one, 2) Test to right extend a inlined index record block to extent. 6. Growing tests, grow the target volume by filling it up with indexed dirs 7. Stress tests, create more than 40000 dirents under a dir. 8. Destructive test, tests with a enormous dir depth and dirent number to let directory tree grow dramatically. *Do verifications after each test to see if dirents we're manipulating are missing/duplicated or not.
2.Multi-nodes Tests
NOTE:To launch the multi-nodes test,need to install openmpi first,and a configuration of ssh/rsh passwordless access also needed in advance. 1. Concurrent growing test.
2. Concurrent rename test.
3. Concurrent Read test
4. Concurrent unlink test
5. Concurrent dirent fillup test
6. Stress test
2.Performance Comparison Test
We borrow the testcases from inode_alloc_perf_test to perform a information comparison test between indexed-dirs and unindexed-dirs.
Testing Status
Kernel/Patches |
Arch/Nodes |
Ocfs2 Options |
Testing Report |
Ocfs2-Tools |
Testing Tool |
Date |
Coverage |
Mark's git tree(git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git dx_dirs |
i686/2 Nodes |
/dev/sdo1 |
Single Node Testing:Bug 1073 |
ocfs2-tools.git dx-dirs branch |
10/02/2009 |
||
Mark's git tree(git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git dx_dirs |
i686/2 Nodes |
/dev/sdo1 |
Single Node Testing Tool Dev: Completed |
ocfs2-tools.git dx-dirs branch |
18/02/2009 |
||
Mark's git tree(git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git dx_dirs |
i686/2 Nodes |
/dev/sdo1 |
Single Node Testing:Verified bug 1073 |
ocfs2-tools.git dx-dirs branch |
20/02/2009 |
||
Mark's git tree(git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git dx_dirs |
i686/2 Nodes |
/dev/sdo1 |
Single Node Testing:All tests get passed |
ocfs2-tools.git dx-dirs branch |
25/02/2009 |
Testing Tools
Name |
Script / Program |
Description |
Technology |
#nodes |
Useful? |
What is tested |
inline_data_test |
index_dir.c |
These script and c program together help to coordinate indexed-dirs test on single node,including feature,boundary and stress test. |
Shell,C |
1 |
Yes |
Check basic indexed-dirs functionality on ocfs2 on single node,and stress the the test by tuning workload,also emulate a race to perform concurrent operations on dx-dirs between multi-nodes. |
multi_index_dir.c |
propagate processes on multiple nodes to take a race for dirents operations on one indexed dir to test if dx-dirs support on ocfs2 behave well on concurrent events |
C,Shell,Openmpi |
2 |
Yes |