package com.zendesk.maxwell.producer; import com.amazonaws.services.kinesis.producer.IrrecoverableError; import com.zendesk.maxwell.MaxwellConfig; import com.zendesk.maxwell.MaxwellContext; import com.zendesk.maxwell.replication.BinlogPosition; import com.zendesk.maxwell.replication.Position; import org.junit.Test; import static org.mockito.Mockito.*; public class KinesisCallbackTest { @Test public void shouldIgnoreProducerErrorByDefault() { MaxwellContext context = mock(MaxwellContext.class); MaxwellConfig config = new MaxwellConfig(); when(context.getConfig()).thenReturn(config); AbstractAsyncProducer.CallbackCompleter cc = mock(AbstractAsyncProducer.CallbackCompleter.class); KinesisCallback callback = new KinesisCallback(cc, new Position(new BinlogPosition(1, "binlog-1"), 0L), "key", "value", context); IrrecoverableError error = new IrrecoverableError("blah"); callback.onFailure(error); verify(cc).markCompleted(); } @Test public void shouldTerminateWhenNotIgnoreProducerError() { MaxwellContext context = mock(MaxwellContext.class); MaxwellConfig config = new MaxwellConfig(); config.ignoreProducerError = false; when(context.getConfig()).thenReturn(config); AbstractAsyncProducer.CallbackCompleter cc = mock(AbstractAsyncProducer.CallbackCompleter.class); KinesisCallback callback = new KinesisCallback(cc, new Position(new BinlogPosition(1, "binlog-1"), 0L), "key", "value", context); IrrecoverableError error = new IrrecoverableError("blah"); callback.onFailure(error); verify(context).terminate(any(RuntimeException.class)); verifyZeroInteractions(cc); } }