2011-08-03 08:11:24 +08:00
|
|
|
/*
|
2013-01-11 06:04:08 +08:00
|
|
|
* Copyright (c) 2012 The Broad Institute
|
|
|
|
|
*
|
|
|
|
|
* Permission is hereby granted, free of charge, to any person
|
|
|
|
|
* obtaining a copy of this software and associated documentation
|
|
|
|
|
* files (the "Software"), to deal in the Software without
|
|
|
|
|
* restriction, including without limitation the rights to use,
|
|
|
|
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
|
* copies of the Software, and to permit persons to whom the
|
|
|
|
|
* Software is furnished to do so, subject to the following
|
|
|
|
|
* conditions:
|
|
|
|
|
*
|
|
|
|
|
* The above copyright notice and this permission notice shall be
|
|
|
|
|
* included in all copies or substantial portions of the Software.
|
|
|
|
|
*
|
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
|
|
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
|
|
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
|
|
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
|
|
|
|
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
*/
|
2011-08-03 08:11:24 +08:00
|
|
|
|
|
|
|
|
package org.broadinstitute.sting.gatk;
|
|
|
|
|
|
|
|
|
|
import org.broadinstitute.sting.WalkerTest;
|
2012-09-19 23:39:49 +08:00
|
|
|
import org.broadinstitute.sting.gatk.walkers.qc.ErrorThrowing;
|
2012-03-23 23:27:10 +08:00
|
|
|
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
2011-08-03 08:11:24 +08:00
|
|
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
2012-03-23 23:27:10 +08:00
|
|
|
import org.testng.annotations.DataProvider;
|
2011-08-03 08:11:24 +08:00
|
|
|
import org.testng.annotations.Test;
|
|
|
|
|
|
2012-03-23 23:27:10 +08:00
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
2011-08-03 08:11:24 +08:00
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public class EngineFeaturesIntegrationTest extends WalkerTest {
|
2011-08-04 05:19:28 +08:00
|
|
|
private void testBadRODBindingInput(String type, String name, Class c) {
|
2011-08-10 00:04:55 +08:00
|
|
|
WalkerTestSpec spec = new WalkerTestSpec("-T SelectVariants -L 1:1 --variant:variant," + type + " "
|
2011-08-03 08:11:24 +08:00
|
|
|
+ b37dbSNP132 + " -R " + b37KGReference + " -o %s",
|
2011-08-04 05:19:28 +08:00
|
|
|
1, c);
|
2011-08-03 08:11:24 +08:00
|
|
|
executeTest(name, spec);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test() private void testBadRODBindingInputType1() {
|
2011-08-04 05:19:28 +08:00
|
|
|
testBadRODBindingInput("beagle", "BEAGLE input to VCF expecting walker", UserException.BadArgumentValue.class);
|
2011-08-03 08:11:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test() private void testBadRODBindingInputType3() {
|
2011-08-04 05:19:28 +08:00
|
|
|
testBadRODBindingInput("bed", "Bed input to VCF expecting walker", UserException.BadArgumentValue.class);
|
2011-08-03 08:11:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test() private void testBadRODBindingInputTypeUnknownType() {
|
2011-08-04 05:19:28 +08:00
|
|
|
testBadRODBindingInput("bedXXX", "Unknown input to VCF expecting walker", UserException.UnknownTribbleType.class);
|
2011-08-03 08:11:24 +08:00
|
|
|
}
|
2012-01-23 22:52:07 +08:00
|
|
|
|
|
|
|
|
private void testMissingFile(String name, String missingBinding) {
|
|
|
|
|
WalkerTestSpec spec = new WalkerTestSpec(missingBinding + " -R " + b37KGReference + " -o %s",
|
|
|
|
|
1, UserException.CouldNotReadInputFile.class);
|
|
|
|
|
executeTest(name, spec);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test() private void testMissingBAMnt1() {
|
2013-02-27 10:11:13 +08:00
|
|
|
testMissingFile("missing BAM", "-T PrintReads -I missing.bam -nt 1");
|
2012-01-23 22:52:07 +08:00
|
|
|
}
|
|
|
|
|
@Test() private void testMissingBAMnt4() {
|
2013-02-27 10:11:13 +08:00
|
|
|
testMissingFile("missing BAM", "-T PrintReads -I missing.bam -nt 4");
|
2012-01-23 22:52:07 +08:00
|
|
|
}
|
|
|
|
|
@Test() private void testMissingVCF() {
|
|
|
|
|
testMissingFile("missing VCF", "-T SelectVariants -V missing.vcf");
|
|
|
|
|
}
|
|
|
|
|
@Test() private void testMissingInterval() {
|
2013-02-27 10:11:13 +08:00
|
|
|
testMissingFile("missing interval", "-T PrintReads -L missing.interval_list -I " + b37GoodBAM);
|
2012-01-23 22:52:07 +08:00
|
|
|
}
|
2012-03-23 23:27:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Test that our exceptions are coming back as we expect
|
|
|
|
|
//
|
|
|
|
|
// --------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
private class EngineErrorHandlingTestProvider extends TestDataProvider {
|
2012-04-13 02:42:40 +08:00
|
|
|
final Class expectedException;
|
2012-09-19 23:39:49 +08:00
|
|
|
final String args;
|
2012-04-13 02:42:40 +08:00
|
|
|
final int iterationsToTest;
|
2012-03-23 23:27:10 +08:00
|
|
|
|
2012-09-19 23:39:49 +08:00
|
|
|
public EngineErrorHandlingTestProvider(Class exceptedException, final String args) {
|
2012-03-23 23:27:10 +08:00
|
|
|
super(EngineErrorHandlingTestProvider.class);
|
|
|
|
|
this.expectedException = exceptedException;
|
2012-09-19 23:39:49 +08:00
|
|
|
this.args = args;
|
2012-09-20 04:59:24 +08:00
|
|
|
this.iterationsToTest = args.equals("") ? 1 : 10;
|
2012-09-19 23:39:49 +08:00
|
|
|
setName(String.format("Engine error handling: expected %s with args %s", exceptedException, args));
|
2012-03-23 23:27:10 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@DataProvider(name = "EngineErrorHandlingTestProvider")
|
|
|
|
|
public Object[][] makeEngineErrorHandlingTestProvider() {
|
2012-09-19 23:39:49 +08:00
|
|
|
for ( final ErrorThrowing.FailMethod failMethod : ErrorThrowing.FailMethod.values() ) {
|
|
|
|
|
if ( failMethod == ErrorThrowing.FailMethod.TREE_REDUCE )
|
|
|
|
|
continue; // cannot reliably throw errors in TREE_REDUCE
|
|
|
|
|
|
|
|
|
|
final String failArg = " -fail " + failMethod.name();
|
2012-09-20 04:59:24 +08:00
|
|
|
for ( final String args : Arrays.asList("", " -nt 2", " -nct 2") ) {
|
2012-09-19 23:39:49 +08:00
|
|
|
new EngineErrorHandlingTestProvider(NullPointerException.class, failArg + args);
|
|
|
|
|
new EngineErrorHandlingTestProvider(UserException.class, failArg + args);
|
|
|
|
|
new EngineErrorHandlingTestProvider(ReviewedStingException.class, failArg + args);
|
|
|
|
|
}
|
2012-03-23 23:27:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return EngineErrorHandlingTestProvider.getTests(EngineErrorHandlingTestProvider.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Loop over errors to throw, make sure they are the errors we get back from the engine, regardless of NT type
|
|
|
|
|
//
|
2012-09-20 04:59:24 +08:00
|
|
|
@Test(enabled = true, dataProvider = "EngineErrorHandlingTestProvider", timeOut = 60 * 1000 )
|
2012-07-26 10:11:10 +08:00
|
|
|
public void testEngineErrorHandlingTestProvider(final EngineErrorHandlingTestProvider cfg) {
|
2012-04-13 02:42:40 +08:00
|
|
|
for ( int i = 0; i < cfg.iterationsToTest; i++ ) {
|
2012-07-26 11:13:12 +08:00
|
|
|
final String root = "-T ErrorThrowing -R " + exampleFASTA;
|
2012-09-19 23:39:49 +08:00
|
|
|
final String args = root + cfg.args + " -E " + cfg.expectedException.getSimpleName();
|
2012-04-13 02:42:40 +08:00
|
|
|
WalkerTestSpec spec = new WalkerTestSpec(args, 0, cfg.expectedException);
|
|
|
|
|
executeTest(cfg.toString(), spec);
|
|
|
|
|
}
|
2012-03-23 23:27:10 +08:00
|
|
|
}
|
2011-08-09 07:26:27 +08:00
|
|
|
}
|