I've recently debugged various distributed tests which fail as a result of
prior tests not cleaning up enough. It's somewhat painful and this is my
usual debug process:


   - Examine the progress.txt file to determine which tests ran before my
   failing test.
   - I pick 20-25 of these tests and create a Suite (including my failing
   test) - as these tests may have run in parallel, it's not clear which tests
   would have run immediately prior to your test
   - Run the whole suite to see if I can get my test to fail
   - Bisect or manually iterate through the tests to see which one is
   causing the problem.


The last step is painful, so I've updated SuiteRunner to use a 'candidate'
test class and run this class after every other class in the list of
SuiteClasses. For example:

@Suite.SuiteClasses(value = {
    org.apache.geode.cache.snapshot.SnapshotByteArrayDUnitTest.class,
    org.apache.geode.cache.query.dunit.QueryDataInconsistencyDUnitTest.class,
    
org.apache.geode.cache.query.internal.index.MultiIndexCreationDUnitTest.class,
})
 
@SuiteRunner.Candidate(org.apache.geode.management.internal.configuration.ClusterConfigDistributionDUnitTest.class)
@RunWith(SuiteRunner.class)
public class DebugSuite {
}


The Candidate is optional, but this would run the following tests:

- SnapshotByteArrayDUnitTest
- *ClusterConfigDistributionDUnitTest*
- QueryDataInconsistencyDUnitTest
- *ClusterConfigDistributionDUnitTest*
- MultiIndexCreationDUnitTest
- *ClusterConfigDistributionDUnitTest*

--Jens

Reply via email to