[Lustre-discuss] Metadata storage in test script files

Chris chris at whamcloud.com
Mon Apr 30 09:50:34 PDT 2012


Hi,

Further to previous discussions titled "your opinion about testing" I'd 
like to propose a meta data format for the test script files and would 
obviously welcome peoples input;

Effectively each test in the scripts is represented by a function and a 
call to run_test, so we have

test_function() {
     ...code
}

run_test function "Description of the function"

I'd like to propose that above every function a here document is placed 
that contains yaml v1.2 encoded data (yaml.org) with 2 characters for 
the indent. The block will start with << TEST_METADATA and be terminated 
with TEST_METADATA. We might want to place it in a comment block but 
this is not really required. The block will also be wrapped at 80 
characters for readability.

The compulsory elements to the data will be
Name:                Name of the function, this ensures pairing between 
function and comments is not just file relative.
Summary:          Will often be the description after the run_test but 
not always as the tense will change
Description:       A full description of the function, the more 
information here the better.
Components:      This is the component described in the commit message 
(http://wiki.whamcloud.com/display/PUB/Commit+Comments) to make this 
useful we will need to come up a with a defined set of components that 
will need to be enforced in the commit message. The format of this entry 
will be a yaml array.
Prerequisites:    Pre-requisite tests that must be run before this test 
can be run. This is again an array which presumes a test may have 
multiple pre-requisites, but the data should not contain a chain of 
prerequisites, i.e. if A requires B and B requires C, the pre-requisites 
of A is B not B & C.
TicketIDs:             This is an array of ticket numbers that this test 
explicitly tests. In theory we should aim for the state where every 
ticket has a test associated with it, and in future we should be able to 
carry out a gap analysis.

As time goes on we may well expand this compulsory list, but this is I 
believe a sensible starting place.

Being part of the source this data will be subject to the same review 
process as any other change and so we cannot store dynamic data here, 
such as pass rates etc.

Do people think that additional data fields should be permitted on an 
adhoc basis or should a control list of permitted data elements be kept. 
I'm tempted to say that adhoc additional fields should be allowed, 
although this could lead to name clashes if people are not careful.

Below is an simple example.

=======================================================================
<<TEST_METADATA
Name:
   before_upgrade_create_data
Summary:
   Copies lustre source into a node specific directory and then creates 
a tarball using that directory
Description:
   This should be called prior to upgrading Lustre and creates a set of 
data on the Lustre partition
   which be accessed and checked after the upgrade has taken place. 
Several methods are using
   including tar'ing directories so the can later be untar'ed and 
compared, along with create sha1's
   of stored data.
Component:
   - lnet
   - recovery
Prerequisites:
   - before_upgrade_clear_filesystem
TicketIDs:
   - LU-123
   - LU-432
TEST_METADATA

test_before_upgrade_create_data() {
    ...
}

run_test before_upgrade_create_data "Copying lustre source into a 
directory $IOP_DIR1, creating and then using source to create a tarball"
=======================================================================

As I said comments, inputs and thoughts much appreciated

Thanks

Chris




More information about the lustre-discuss mailing list