/** Reads all elements from the given started {@link Source.Reader}. */ public static <T> List<T> readFromStartedReader(Source.Reader<T> reader) throws IOException { return readRemainingFromReader(reader, true); }
/** Reads all elements from the given unstarted {@link Source.Reader}. */ public static <T> List<T> readFromUnstartedReader(Source.Reader<T> reader) throws IOException { return readRemainingFromReader(reader, false); }
readNItemsFromUnstartedReader(reader, numItemsToReadBeforeSplitting); unblockSplitter.countDown(); items.addAll(readRemainingFromReader(reader, numItemsToReadBeforeSplitting > 0)); return items; } finally {
currentItems.addAll(readRemainingFromReader(reader, numItemsToReadBeforeSplit > 0)); BoundedSource<T> primary = reader.getCurrentSource(); return verifySingleSplitAtFractionResult(
@Test public void testToUnsplittableSource() throws Exception { PipelineOptions options = PipelineOptionsFactory.create(); BoundedSource<Long> baseSource = CountingSource.upTo(100); BoundedSource<Long> unsplittableSource = SourceTestUtils.toUnsplittableSource(baseSource); List<?> splits = unsplittableSource.split(1, options); assertEquals(1, splits.size()); assertEquals(unsplittableSource, splits.get(0)); BoundedReader<Long> unsplittableReader = unsplittableSource.createReader(options); assertEquals(0, unsplittableReader.getFractionConsumed(), 1e-15); Set<Long> expected = Sets.newHashSet(SourceTestUtils.readFromSource(baseSource, options)); Set<Long> actual = Sets.newHashSet(); actual.addAll(SourceTestUtils.readNItemsFromUnstartedReader(unsplittableReader, 40)); assertNull(unsplittableReader.splitAtFraction(0.5)); actual.addAll(SourceTestUtils.readRemainingFromReader(unsplittableReader, true /* started */)); assertEquals(1, unsplittableReader.getFractionConsumed(), 1e-15); assertEquals(100, actual.size()); assertEquals(Sets.newHashSet(expected), Sets.newHashSet(actual)); } }