All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Gearing <chris@whamcloud.com>
To: lustre-devel@lists.lustre.org
Subject: [Lustre-devel] your opinion about testing improvements (was Lustre-devel Digest, Vol 72, Issue 17)
Date: Tue, 03 Apr 2012 15:21:36 +0100	[thread overview]
Message-ID: <4F7B0770.8050308@whamcloud.com> (raw)
In-Reply-To: <4F7A9384.80707@xyratex.com>

On 03/04/2012 07:07, Roman Grigoryev wrote:
> Hi Chris,
> Thank you for answer ( I have cut part of my original message):
>> When we run interop tests the test system runs test scripts belonging to
>> the server version against those belonging to the client version. So we
>> might use 1.8.7 client scripts against 2.2 server scripts. These scripts
>> need to inter-operate in exactly the same way that the Lustre source
>> code itself needs to interoperate.
> Yes, it is. But I don't see why we should use old test base for
> interoperability testing? Between 1.8.7 and 2.x tests was fixed and also
> as test framework was changed. For getting same test coverage for old
> features we should backport new fixes in test to old (maybe already
> frozen) code.
> Also, as results, we have different tests sets for compatibility
> testing. For 1.8.7 it will one, for 2.1 - other. Only a part of
> differences shows difference between code base for one feature set.
> (F.e. we see on special 1.8.7 branch failures which already fixed in 2.x
> code.)
>
We don't have a single script because the tests are at times very 
tightly coupled to the Lustre version. There were a lot of changes 
between 1.8.x and 2.x and a lot of corresponding changes to the test 
scripts. Where the tests are the same and bugs were found in the 2.x 
test scripts these should have been backported to the 1.8.x test scripts 
if this was not done then we should do it for inclusion into the 1.8.8 
release.

The notion of making 'master' scripts work with with all versions is 
obviously possible but it is a very significant task and given that the 
scripts themselves are written in a language (sic) that does not provide 
structure a single script strategy is likely to create many more 
'interoperability issues' than it fixes.

Also it's worth considering that we have best part of a 1000 discrete 
changes, whenever a test is re-engineered the test itself must be proven 
to detect failure as well as success. i.e. If someone produced a version 
independent test set that passed all versions we would not know that the 
process was a success, we would need to check that each re-engineered 
test 'failed' appropriately for each Lustre version, this is a big task 
that I doubt can be properly achieved in bash.

So in summary the best solution given what we have today is to back port 
fixes to the test scripts as we back port fixes to the code. This is an 
investment in time and requires the same discipline to test as we have 
for coding. A single set of scripts that caters for all versions appears 
I believe like an easy solution but actually would require huge 
investment that would be better spent developing a modern test framework 
and infrastructure that can support Lustre for the next ten years.

>
>>>
>>> Problem 2
>>>
>>> (to avoid term problems, I call there: sanity = test suite, 130 = test,
>>> 130c and 130a = test cases)
>>>
> ...
>
>>> Answer of this question affect automated test execution and test
>>> development, and maybe ask some test-framework changes.
>>>
>> I think you highlight a very good point here that we don't really know
>> enough about the test contents, their prerequisites or other
>> dependencies. I would suggest that many attempts have been made over the
>> years to use naming conventions, numeric ordering or other similar
>> mechanisms to track such behaviour.
>> ...
>> One reasonable proposal is to add a comment block at the start of each
>> test script and subtest within that script that lists the test name,
>> short and long description that includes what the test is supposed to be
>> doing, what bug (if any) it was originally added for, what part of the
>> code it is intended to cover, prerequisites (filesystem initialization,
>> min/max number of clients, OSTs, MDTs it can test with, etc) in a
>> machine readable format that it not only documents the test today but
>> that can be expanded in the future.
> I agree, it is very important to separating meta information and test body.
> Internally in Xyratex, we use external scripts and descriptors which
> somehow add same possibility(per-test timeouts, keywords...).
>
>> Once we have an agreement on an initial format for this comment block,
>> the development community can work to populate it for each subtest and
>> improve the understanding and usefulness of all existing tests.
> I absolutely agree that we need agreement to start any work on test
> improvements. How can we initiate this process? Maybe good first step is
> creating glossary to use and terms and based on these terms fix tests?
>
> Also, what do you think about a possible simple solutions for decreasing
> dependence problem which is currently pretty painful for us:
>
> 1) test(test scenario) must have only number name (1,2,3..110...999)
> 2) test cases (test step) must have number+char index (1f,2,b...99c)
>
> Only Test can be executed via ONLY.
> Test cases can be execute only as part of test.
I don't think there is a problem with this simple solution in that it 
does no harm as long as you applied any changes to all the branches that 
are applicable. At the same time I will draft a possible meta data 
format that includes the extensible metadata within the source in a way 
that maximizes its value both today and in the future, we can then 
review, revise and then agree that format on Lustre-Devel, although I'll 
mail you privately so you can have input before that. It may actually be 
the case that some work has occurred on this topic previously and if so 
we can leverage that.

Thanks

Chris Gearing
Sr. Software Engineer
Quality Engineering
Whamcloud Inc

  reply	other threads:[~2012-04-03 14:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.1.1333130401.17602.lustre-devel@lists.lustre.org>
2012-04-03  0:26 ` [Lustre-devel] Lustre-devel Digest, Vol 72, Issue 17 Chris Gearing
2012-04-03  6:07   ` [Lustre-devel] your opinion about testing improvements (was Lustre-devel Digest, Vol 72, Issue 17) Roman Grigoryev
2012-04-03 14:21     ` Chris Gearing [this message]
2012-04-04 21:24       ` Nathan Rutman
2012-04-09  0:04         ` Chris Gearing
2012-04-09 22:54           ` Nathan Rutman
2012-04-05  8:40       ` [Lustre-devel] [Twg] " Alexander Lezhoev
2012-04-05 10:38         ` Alex Tomas
2012-04-11 23:00       ` [Lustre-devel] " Nathan Rutman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F7B0770.8050308@whamcloud.com \
    --to=chris@whamcloud.com \
    --cc=lustre-devel@lists.lustre.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.