More extensive testing of type of error thrown in multi-threaded walker test

-- Unfortunately the result of the multi-threaded test is non-deterministic so run the test 10x times to see if the right expection is always thrown
-- Now prints the stack trace and exception message of the caught exception of the wrong type, if this occurs
This commit is contained in:
Mark DePristo 2012-04-12 14:42:40 -04:00
parent 0dd571928d
commit e85e9a8cf5
2 changed files with 17 additions and 14 deletions

View File

@ -26,18 +26,17 @@
package org.broadinstitute.sting; package org.broadinstitute.sting;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.broad.tribble.FeatureCodec;
import org.broad.tribble.Tribble; import org.broad.tribble.Tribble;
import org.broad.tribble.index.Index; import org.broad.tribble.index.Index;
import org.broad.tribble.index.IndexFactory; import org.broad.tribble.index.IndexFactory;
import org.broadinstitute.sting.gatk.phonehome.GATKRunReport;
import org.broadinstitute.sting.utils.codecs.vcf.VCFCodec;
import org.broadinstitute.sting.gatk.CommandLineExecutable; import org.broadinstitute.sting.gatk.CommandLineExecutable;
import org.broadinstitute.sting.gatk.CommandLineGATK; import org.broadinstitute.sting.gatk.CommandLineGATK;
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.gatk.phonehome.GATKRunReport;
import org.broadinstitute.sting.utils.collections.Pair;
import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.codecs.vcf.VCFCodec;
import org.broadinstitute.sting.utils.collections.Pair;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.broadinstitute.sting.utils.exceptions.StingException; import org.broadinstitute.sting.utils.exceptions.StingException;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
@ -315,9 +314,9 @@ public class WalkerTest extends BaseTest {
// it's the type we expected // it's the type we expected
System.out.println(String.format(" => %s PASSED", name)); System.out.println(String.format(" => %s PASSED", name));
} else { } else {
e.printStackTrace(); e.printStackTrace(System.out); // must print to stdout to see the message
Assert.fail(String.format("Test %s expected exception %s but got %s instead", Assert.fail(String.format("Test %s expected exception %s but instead got %s with error message %s",
name, expectedException, e.getClass())); name, expectedException, e.getClass(), e.getMessage()));
} }
} else { } else {
// we didn't expect an exception but we got one :-( // we didn't expect an exception but we got one :-(

View File

@ -86,13 +86,15 @@ public class EngineFeaturesIntegrationTest extends WalkerTest {
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
private class EngineErrorHandlingTestProvider extends TestDataProvider { private class EngineErrorHandlingTestProvider extends TestDataProvider {
Class expectedException; final Class expectedException;
boolean multiThreaded; final boolean multiThreaded;
final int iterationsToTest;
public EngineErrorHandlingTestProvider(Class exceptedException, final boolean multiThreaded) { public EngineErrorHandlingTestProvider(Class exceptedException, final boolean multiThreaded) {
super(EngineErrorHandlingTestProvider.class); super(EngineErrorHandlingTestProvider.class);
this.expectedException = exceptedException; this.expectedException = exceptedException;
this.multiThreaded = multiThreaded; this.multiThreaded = multiThreaded;
this.iterationsToTest = multiThreaded ? 10 : 1;
setName(String.format("Engine error handling: expected %s, is-multithreaded %b", exceptedException, multiThreaded)); setName(String.format("Engine error handling: expected %s, is-multithreaded %b", exceptedException, multiThreaded));
} }
} }
@ -113,9 +115,11 @@ public class EngineFeaturesIntegrationTest extends WalkerTest {
// //
@Test(dataProvider = "EngineErrorHandlingTestProvider") @Test(dataProvider = "EngineErrorHandlingTestProvider")
public void testEngineErrorHandlingTestProvider(EngineErrorHandlingTestProvider cfg) { public void testEngineErrorHandlingTestProvider(EngineErrorHandlingTestProvider cfg) {
for ( int i = 0; i < cfg.iterationsToTest; i++ ) {
final String root = "-T ErrorThrowing -R " + b37KGReference; final String root = "-T ErrorThrowing -R " + b37KGReference;
final String args = root + (cfg.multiThreaded ? " -nt 2" : "") + " -E " + cfg.expectedException.getSimpleName(); final String args = root + (cfg.multiThreaded ? " -nt 2" : "") + " -E " + cfg.expectedException.getSimpleName();
WalkerTestSpec spec = new WalkerTestSpec(args, 0, cfg.expectedException); WalkerTestSpec spec = new WalkerTestSpec(args, 0, cfg.expectedException);
executeTest(cfg.toString(), spec); executeTest(cfg.toString(), spec);
} }
}
} }