@Override public boolean isFinished() { return source.isFinished(); }
@Override public void close() { splitSource.close(); }
@Override public ConnectorId getConnectorId() { return source.getConnectorId(); }
@Test public void testEmptySource() { MockSplitSource mockSource = new MockSplitSource() .setBatchSize(1) .atSplitCompletion(FINISH); try (SplitSource source = new BufferingSplitSource(mockSource, 100)) { requireFutureValue(getNextBatch(source, 200)) .assertSize(0) .assertNoMoreSplits(true); assertTrue(source.isFinished()); assertEquals(mockSource.getNextBatchInvocationCount(), 1); } }
@Test public void testFailImmediate() { MockSplitSource mockSource = new MockSplitSource() .setBatchSize(1) .atSplitCompletion(FAIL); try (SplitSource source = new BufferingSplitSource(mockSource, 100)) { assertFutureFailsWithMockFailure(getNextBatch(source, 200)); assertEquals(mockSource.getNextBatchInvocationCount(), 1); } }
private static List<Split> getNextBatch(SplitSource splitSource) { return getFutureValue(splitSource.getNextBatch(NOT_PARTITIONED, Lifespan.taskWide(), 1000)).getSplits(); }
public static ListenableFuture<SplitBatch> fetchNextBatchAsync( SplitSource splitSource, int min, int max, ConnectorPartitionHandle partitionHandle, Lifespan lifespan) { GetNextBatch getNextBatch = new GetNextBatch(splitSource, min, max, partitionHandle, lifespan); ListenableFuture<?> future = getNextBatch.fetchSplits(); return Futures.transform(future, ignored -> new SplitBatch(getNextBatch.splits, getNextBatch.noMoreSplits), directExecutor()); }
@Override public Type getType(int field) { return delegate.getType(toDelegateField(field)); }
@Override public RecordCursor cursor() { return new MappedRecordCursor(delegate.cursor(), delegateFieldIndex); }
public MockSplitSource atSplitCompletion(Action action) { atSplitDepletion = action; doGetNextBatch(); return this; }
@Override public ConnectorTransactionHandle getTransactionHandle() { return source.getTransactionHandle(); }
@Test public void testFastSource() { MockSplitSource mockSource = new MockSplitSource() .setBatchSize(11) .increaseAvailableSplits(22) .atSplitCompletion(FINISH); try (SplitSource source = new BufferingSplitSource(mockSource, 10)) { requireFutureValue(getNextBatch(source, 200)) .assertSize(11) .assertNoMoreSplits(false); requireFutureValue(getNextBatch(source, 200)) .assertSize(11) .assertNoMoreSplits(true); assertTrue(source.isFinished()); assertEquals(mockSource.getNextBatchInvocationCount(), 2); } }
@Test public void testFail() { MockSplitSource mockSource = new MockSplitSource() .setBatchSize(1) .increaseAvailableSplits(1) .atSplitCompletion(FAIL); try (SplitSource source = new BufferingSplitSource(mockSource, 100)) { assertFutureFailsWithMockFailure(getNextBatch(source, 2)); assertEquals(mockSource.getNextBatchInvocationCount(), 2); } }
private static List<Split> getNextBatch(SplitSource splitSource) { return getFutureValue(splitSource.getNextBatch(NOT_PARTITIONED, Lifespan.taskWide(), 1000)).getSplits(); }
@Override public boolean isFinished() { return splitSource.isFinished(); } }
@Override public void close() { splitSource.close(); }
public MockSplitSource increaseAvailableSplits(int count) { checkArgument(atSplitDepletion == DO_NOTHING, "cannot increase available splits once split completion action is set"); totalSplits += count; doGetNextBatch(); return this; }
@Override public ConnectorTransactionHandle getTransactionHandle() { return splitSource.getTransactionHandle(); }
@Override public void close() { source.close(); }
private static void closeSplitSource(SplitSource source) { try { source.close(); } catch (Throwable t) { log.warn(t, "Error closing split source"); } }