@Test public void testWrappersAreAccessed() throws Exception { Path path = Paths.get(localBam); Path indexPath = Paths.get(localBam + ".bai"); HashMap<String, Boolean> fired = new HashMap<>(); Function<SeekableByteChannel, SeekableByteChannel> wrapData = (SeekableByteChannel in) -> { fired.put("data", true); return in; }; Function<SeekableByteChannel, SeekableByteChannel> wrapIndex = (SeekableByteChannel in) -> { fired.put("index", true); return in; }; SamInputResource in = SamInputResource.of(path, wrapData); in.index(indexPath, wrapIndex); InputResource indexResource = in.indexMaybe(); Assert.assertNotNull(indexResource); Assert.assertFalse(fired.containsKey("data")); Assert.assertFalse(fired.containsKey("index")); indexResource.asUnbufferedSeekableStream(); Assert.assertFalse(fired.containsKey("data")); Assert.assertTrue(fired.containsKey("index")); in.data().asUnbufferedSeekableStream(); Assert.assertTrue(fired.containsKey("data")); Assert.assertTrue(fired.containsKey("index")); }
@Test(dataProvider = "composeAllPermutationsOfSamInputResource") public void queryInputResourcePermutation(final SamInputResource resource) throws IOException { try(final SamReader reader = SamReaderFactory.makeDefault().open(resource)) { LOG.info(String.format("Query from %s ...", resource)); if (reader.hasIndex()) { final StopWatch stopWatch = new StopWatch(); stopWatch.start(); final SAMRecordIterator q1 = reader.query("chr1", 500000, 100000000, true); observedRecordOrdering1.add(Iterables.slurp(q1)); q1.close(); final SAMRecordIterator q20 = reader.query("chr20", 1, 1000000, true); observedRecordOrdering20.add(Iterables.slurp(q20)); q20.close(); final SAMRecordIterator q3 = reader.query("chr3", 1, 10000000, true); observedRecordOrdering3.add(Iterables.slurp(q3)); q3.close(); stopWatch.stop(); LOG.info(String.format("Finished queries in %sms", stopWatch.getElapsedTime())); Assert.assertEquals(observedRecordOrdering1.size(), 1, "read different records for chromosome 1"); Assert.assertEquals(observedRecordOrdering20.size(), 1, "read different records for chromosome 20"); Assert.assertEquals(observedRecordOrdering3.size(), 1, "read different records for chromosome 3"); } else if (resource.indexMaybe() != null) { LOG.warn("Resource has an index source, but is not indexed: " + resource); } else { LOG.info("Skipping query operation: no index."); } } }
try { final InputResource data = resource.data(); final InputResource indexMaybe = resource.indexMaybe(); final boolean indexDefined = indexMaybe != null;
try { final InputResource data = resource.data(); final InputResource indexMaybe = resource.indexMaybe(); final boolean indexDefined = indexMaybe != null;
try { final InputResource data = resource.data(); final InputResource indexMaybe = resource.indexMaybe(); final boolean indexDefined = indexMaybe != null;