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);
}
}