[OracleOSS] [TitleIndex] [WordIndex]

OCFS2/DiscontigBgTest

OCFS2 Discontig-bg Test

Introduction

This document aims at scheduling the testing plan against discontiguous block group which we're currently implementing on Ocfs2, and it would also be the place where we record the testing result to trace the status for each drop as well as keeping track of all bugs exposed for discontig-bg . In an addition, we also explain in a elaborate way of how all of the testcases will be organized and what's the workflow of their corresponding testing tool. The test aims to attack both fs and tools, in different series however. The goal here is to thoroughly test the discontigous-bg by covering as many as possible codes which have relationship with discontigous-bg, and guarantee tools and fs's sanity and stability before formal release.

Refer to Design-Doc for more designing details and specifications.

Test Limitation

The limitation defined by desgin roadmap during discontig-bg implementation on ocfs2 should be claimed here to make a clear understanding of how can we expect our testing tool most.

OCFS2_MAX_SLOTS                                  255
OCFS2_MAX_BG_BITMAP_SIZE                         256
OCFS2_MAX_BLOCKSIZE                              4k
OCFS2_MAX_CLUSTERSIZE                            1M
REGION_SIZE_FOR_ONE_BLOCK_GROUP_512_BS           1M
REGION_SIZE_FOR_ONE_BLOCK_GROUP_1K_BS            2M
REGION_SIZE_FOR_ONE_BLOCK_GROUP_2K_BS            4M
REGION_SIZE_FOR_ONE_BLOCK_GROUP_4K_BS            4M

Warming-Up

There is one same prerequisite to do all discontiguous-bg related tests: fill up the volume as fragmented as no more 4M contigous would be able to be found(maybe 2M for 1k blocksize, and 1M for 512). that's the very warming-up stuff we need to do beforehand to activate discontiguous block group. I'm going to use Joel's script by changing a little bit on-demand.

Testcases For FS/Tools

Testcases for fs consists of single-node,multi-nodes, each one has basic, stress and boundary subtests. while testcases for tools is simple and plain by now.

1. Single-node Tests

1. Basic functional test.

   Goal is here is to cover as many discontiguous codes as possible, we'go going to test all metadata's allocatioin/freeing and reading/updating, includes inode, xattr, dxdir, refcount and data extent/(am I missing anything else?), of course with all bs and cs combinations being tried.

    Fortunately enough, we've already got rigorous testcases for different metadata(xattr, dxdir, refcount), they're all get well-prepared to do the above job for performing operations on discontigous block group.

2. Random tests:

   Testing alloc/free, read/update suballoc_bits randomly.

3. Concurrent tests, tests with a fixed number of processes to concurrently manipulate on one discontiguous block group:

   1) 1/4 child processes do allocations.
   2) 1/4 child processes do freeings.
   3) 1/4 child processes do reading/stating.
   4) 1/4 child processes do updating.

   Can be convenient to be checked by inode/xattr block.

4. Boundary test:
   
   1) Using one extent record(Like contiguous one)
   2) Fill up all extent_rec slots in group desc for all blocksize.
   3) Using up all suballoc_bits in one discontiguous bg.

5. Stress & Destructive tests:

   1) Filling up the volume until ENOSPC by inlined files.
   2) Testing the allocation/freeing, reading/updating intensively by increasing the workload of volumesize, discontiguous bg num, concurrent children etc.
   3) Using the existing inode_allocation/xattr/dxdir/refcount stress testcases to perform a auxiliarily test.
   4) Crash the testing node when allocating/freeing being performed against discontiguous bg, see how fsck.ocfs2 handles it?
   5) Running out of extents(in a severely fragmented fs).

6. Data&Metadata integrity test:
 
 

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. Test lock contentions on global bitmap when doing discontiguous bg allocation/disclaim from multiple nodes, even from different metadata type.

2. Test race from multiples node to read/write discontiguous sub allocator.

3. Testcases For Tools

1. Debugfs.ocfs2 Tests

   Manually issue command to check the dump for discontiguous bg.

2. Fsck.ocfs2 Tests

   Verify if the corruptions made by fswreck can be properly fixed, and also check if user's date get hurt after a massive discontiguous operation, and how fsck.ocfs2 behave after a crash.

3. Libocfs2 Tests

   To be filled...

4. Backward&forward compatibility Tests

   Look how older tools work with newer fs.

Testing Status

Kernel/Patches

Arch/Nodes

Ocfs2 Options

Testing Report

Ocfs2-Tools

Testing Tool

Date

Coverage

Testing Tools

Name

Script / Program

Description

Technology

#nodes

Useful?

What is tested


2011-12-23 01:01