1 package org.broadinstitute.hellbender.tools.spark.bwa;
2 
3 import org.broadinstitute.hellbender.CommandLineProgramTest;
4 import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions;
5 import org.broadinstitute.hellbender.engine.spark.GATKSparkTool;
6 import org.broadinstitute.hellbender.testutils.ArgumentsBuilder;
7 import org.broadinstitute.hellbender.testutils.SamAssertionUtils;
8 import org.testng.Assert;
9 import org.testng.annotations.Test;
10 
11 import java.io.File;
12 
13 public final class BwaSparkIntegrationTest extends CommandLineProgramTest {
14 
15     @Override
getTestedClassName()16     public String getTestedClassName() {
17         return BwaSpark.class.getSimpleName();
18     }
19 
20     @Test
testPairedEnd()21     public void testPairedEnd() throws Exception {
22         final File expectedSam = getTestFile("bwa.sam");
23 
24         final File ref = getTestFile("ref.fa");
25         final File input = getTestFile("R.bam"); // this is a queryname sorted, paired, and unaligned input
26 
27         final File output = createTempFile("bwa", ".bam");
28         Assert.assertTrue(output.delete());
29 
30         final ArgumentsBuilder args = new ArgumentsBuilder();
31         args.add(StandardArgumentDefinitions.REFERENCE_LONG_NAME, ref);
32         args.add(StandardArgumentDefinitions.INPUT_LONG_NAME, input);
33         args.add(GATKSparkTool.SHARDED_OUTPUT_LONG_NAME, true);
34         args.add(GATKSparkTool.NUM_REDUCERS_LONG_NAME,"1");
35         args.addOutput(output);
36         args.add(BwaArgumentCollection.BWA_MEM_INDEX_IMAGE_FULL_NAME, getTestFile("ref.fa.img"));
37         this.runCommandLine(args.getArgsArray());
38 
39         SamAssertionUtils.assertSamsEqual(new File(output, "part-r-00000.bam"), expectedSam);
40     }
41 
42     @Test
testSingleEnd()43     public void testSingleEnd() throws Exception {
44         final File expectedSam = getTestFile("seBwa.bam");
45 
46         final File ref = getTestFile("ref.fa");
47         final File input = getTestFile("seR.bam");
48         final File output = createTempFile("bwa", ".bam");
49         Assert.assertTrue(output.delete());
50 
51         final ArgumentsBuilder args = new ArgumentsBuilder();
52         args.add(StandardArgumentDefinitions.REFERENCE_LONG_NAME, ref);
53         args.add(StandardArgumentDefinitions.INPUT_LONG_NAME, input);
54         args.add(GATKSparkTool.SHARDED_OUTPUT_LONG_NAME, true);
55         args.add(GATKSparkTool.NUM_REDUCERS_LONG_NAME,"1");
56         args.addOutput(output);
57         args.addRaw("--" + BwaArgumentCollection.SINGLE_END_ALIGNMENT_FULL_NAME);
58         this.runCommandLine(args.getArgsArray());
59 
60         SamAssertionUtils.assertSamsEqual(new File(output, "part-r-00000.bam"), expectedSam);
61     }
62 }
63