@Test(expected = IllegalStateException.class) public void shouldThrowOnSendOffsetsToTransactionIfTransactionsNotInitialized() { buildMockProducer(true); producer.sendOffsetsToTransaction(null, null); }
@Test(expected = IllegalStateException.class) public void shouldThrowOnBeginTransactionIfTransactionsNotInitialized() { buildMockProducer(true); producer.beginTransaction(); }
@Test public void shouldCountCommittedTransaction() { buildMockProducer(true); producer.initTransactions(); producer.beginTransaction(); assertThat(producer.commitCount(), equalTo(0L)); producer.commitTransaction(); assertThat(producer.commitCount(), equalTo(1L)); }
@Test public void shouldThrowOnNullConsumerGroupIdWhenSendOffsetsToTransaction() { buildMockProducer(true); producer.initTransactions(); producer.beginTransaction(); try { producer.sendOffsetsToTransaction(Collections.<TopicPartition, OffsetAndMetadata>emptyMap(), null); fail("Should have thrown NullPointerException"); } catch (NullPointerException e) { } }
@Test public void shouldInitTransactions() { buildMockProducer(true); producer.initTransactions(); assertTrue(producer.transactionInitialized()); }
@Test public void shouldThrowOnSendOffsetsToTransactionTransactionIfNoTransactionGotStarted() { buildMockProducer(true); producer.initTransactions(); try { producer.sendOffsetsToTransaction(null, null); fail("Should have thrown as producer has no open transaction"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnCommitTransactionIfNoTransactionGotStarted() { buildMockProducer(true); producer.initTransactions(); try { producer.commitTransaction(); fail("Should have thrown as producer has no open transaction"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnAbortForNonAutoCompleteIfTransactionsAreEnabled() throws Exception { buildMockProducer(false); producer.initTransactions(); producer.beginTransaction(); Future<RecordMetadata> md1 = producer.send(record1); assertFalse(md1.isDone()); producer.abortTransaction(); assertTrue(md1.isDone()); }
@Test public void shouldNotCountAbortedTransaction() { buildMockProducer(true); producer.initTransactions(); producer.beginTransaction(); producer.abortTransaction(); producer.beginTransaction(); producer.commitTransaction(); assertThat(producer.commitCount(), equalTo(1L)); }
@Test public void shouldThrowOnAbortTransactionIfNoTransactionGotStarted() { buildMockProducer(true); producer.initTransactions(); try { producer.abortTransaction(); fail("Should have thrown as producer has no open transaction"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowSendOffsetsToTransactionIfProducerIsClosed() { buildMockProducer(true); producer.close(); try { producer.sendOffsetsToTransaction(null, null); fail("Should have thrown as producer is already closed"); } catch (IllegalStateException e) { } }
@Test public void shouldNotBeFlushedWithNoAutoCompleteIfBufferedRecords() { buildMockProducer(false); producer.send(record1); assertFalse(producer.flushed()); }
@Test public void shouldThrowOnInitTransactionIfProducerAlreadyInitializedForTransactions() { buildMockProducer(true); producer.initTransactions(); try { producer.initTransactions(); fail("Should have thrown as producer is already initialized"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnInitTransactionIfProducerIsClosed() { buildMockProducer(true); producer.close(); try { producer.initTransactions(); fail("Should have thrown as producer is already closed"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnBeginTransactionIfProducerIsClosed() { buildMockProducer(true); producer.close(); try { producer.beginTransaction(); fail("Should have thrown as producer is already closed"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnFenceProducerIfProducerIsClosed() { buildMockProducer(true); producer.close(); try { producer.fenceProducer(); fail("Should have thrown as producer is already closed"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnFlushProducerIfProducerIsClosed() { buildMockProducer(true); producer.close(); try { producer.flush(); fail("Should have thrown as producer is already closed"); } catch (IllegalStateException e) { } }
@Test public void shouldThrowOnSendOffsetsToTransactionIfProducerGotFenced() { buildMockProducer(true); producer.initTransactions(); producer.fenceProducer(); try { producer.sendOffsetsToTransaction(null, null); fail("Should have thrown as producer is fenced off"); } catch (ProducerFencedException e) { } }
@Test public void shouldNotBeFlushedAfterFlush() { buildMockProducer(false); producer.send(record1); producer.flush(); assertTrue(producer.flushed()); }
@Test public void shouldCommitEmptyTransaction() { buildMockProducer(true); producer.initTransactions(); producer.beginTransaction(); producer.commitTransaction(); assertFalse(producer.transactionInFlight()); assertTrue(producer.transactionCommitted()); assertFalse(producer.transactionAborted()); }