@Test @SuppressWarnings({"unchecked", "rawtypes"}) public void testProducerListenerSet() throws Exception { KafkaProducerContext producerContext = new KafkaProducerContext(); Serializer serializer = Mockito.mock(Serializer.class); ProducerMetadata<Object, Object> producerMetadata = new ProducerMetadata<>("default", Object.class, Object.class, serializer, serializer); Producer producer = Mockito.mock(Producer.class); ProducerConfiguration<Object, Object> producerConfiguration = new ProducerConfiguration<>(producerMetadata, producer); ProducerListener producerListener = mock(ProducerListener.class); producerConfiguration.setProducerListener(producerListener); Map<String, ProducerConfiguration<?, ?>> producerConfigurations = Collections.<String, ProducerConfiguration<?, ?>>singletonMap( "default", producerConfiguration); producerContext.setProducerConfigurations(producerConfigurations); KafkaProducerMessageHandler handler = new KafkaProducerMessageHandler(producerContext); handler.handleMessage( MessageBuilder.withPayload("somePayload") .setHeader(KafkaHeaders.PARTITION_ID, 2) .setHeader(KafkaHeaders.MESSAGE_KEY, "someKey") .build()); final ArgumentCaptor<Callback> argument = ArgumentCaptor.forClass(Callback.class); verify(producer).send(any(ProducerRecord.class), argument.capture()); Callback callback = argument.getValue(); assertThat(callback, CoreMatchers.instanceOf(ProducerListenerInvokingCallback.class)); DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(callback); assertEquals(fieldAccessor.getPropertyValue("topic"), "default"); assertEquals(fieldAccessor.getPropertyValue("partition"), 2); assertEquals(fieldAccessor.getPropertyValue("key"), "someKey"); assertEquals(fieldAccessor.getPropertyValue("payload"), "somePayload"); assertSame(fieldAccessor.getPropertyValue("producerListener"), producerListener); verifyNoMoreInteractions(producer); }
@Test public void idleMessage() { MessageFactory factory = new MessageFactory(); PriorityMessageQueue pmq = new PriorityMessageQueue(timer, factory); SafeMessageQueue mq = new SafeMessageQueue(timer, factory, "test"); setRunning(pmq); setRunning(mq); timer.setNow(2001); Consumer consumer = new Consumer(pmq, mq, factory, timer); consumer.queueConsumer.onIdle(); Message message = pmq.next(dummyConsumer); assertThat(message, CoreMatchers.instanceOf(JobConsumerIdleMessage.class)); assertThat(((JobConsumerIdleMessage) message).getLastJobCompleted(), CoreMatchers.is(2001L)); }
@Test public void runJobMessage() { MessageFactory factory = new MessageFactory(); PriorityMessageQueue pmq = new PriorityMessageQueue(timer, factory); setRunning(pmq); SafeMessageQueue mq = new SafeMessageQueue(timer, factory, "test"); setRunning(mq); timer.setNow(2001); Consumer consumer = new Consumer(pmq, mq, factory, timer); RunJobMessage rjm = factory.obtain(RunJobMessage.class); JobHolder mockHolder = mock(JobHolder.class); when(mockHolder.safeRun(0, timer)).thenReturn(JobHolder.RUN_RESULT_SUCCESS); rjm.setJobHolder(mockHolder); timer.setNow(3001); consumer.queueConsumer.handleMessage(rjm); Message message = pmq.next(dummyConsumer); assertThat(message, CoreMatchers.instanceOf(RunJobResultMessage.class)); RunJobResultMessage result = (RunJobResultMessage) message; assertThat(result.getResult(), CoreMatchers.is(JobHolder.RUN_RESULT_SUCCESS)); assertThat(result.getJobHolder(), CoreMatchers.is(mockHolder)); assertThat(consumer.lastJobCompleted, CoreMatchers.is(3001L)); }
/** * Is the value an instance of a particular type?. * * @param type the type */ public void isA(java.lang.Class<?> type) { verifyUsingMatcher(CoreMatchers.instanceOf(type)); }