Github user srdo commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2790#discussion_r207515186
  
    --- Diff: 
external/storm-kafka-client/src/test/java/org/apache/storm/kafka/bolt/KafkaBoltTest.java
 ---
    @@ -37,38 +39,48 @@
     import org.apache.storm.tuple.Tuple;
     import org.junit.Test;
     import org.mockito.ArgumentMatcher;
    +import org.mockito.internal.util.MockUtil;
     import org.mockito.invocation.InvocationOnMock;
     import org.mockito.stubbing.Answer;
     import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;
     
     public class KafkaBoltTest {
         private static final Logger LOG = 
LoggerFactory.getLogger(KafkaBoltTest.class);
    -    
    +
         @SuppressWarnings({ "unchecked", "serial" })
    -    @Test
    -    public void testSimple() {
    -        final KafkaProducer<String, String> producer = 
mock(KafkaProducer.class);
    -        when(producer.send(any(), any())).thenAnswer(new Answer<Object>() {
    +    private <K, V> KafkaBolt<K, V> makeBolt(KafkaProducer<K, V> 
mockProducer) {
    +        Validate.isTrue(MockUtil.isMock(mockProducer), "KafkaProducer 
should be a mock object.");
    +        when(mockProducer.send(any(), any())).thenAnswer(new 
Answer<Object>() {
                 @Override
                 public Object answer(InvocationOnMock invocation) throws 
Throwable {
                     Callback c = (Callback)invocation.getArguments()[1];
                     c.onCompletion(null, null);
                     return null;
                 }
             });
    -        KafkaBolt<String, String> bolt = new KafkaBolt<String, String>() {
    +        KafkaBolt<K, V> bolt = new KafkaBolt<K, V>() {
                 @Override
    -            protected KafkaProducer<String, String> mkProducer(Properties 
props) {
    -                return producer;
    +            protected KafkaProducer<K, V> mkProducer(Properties props) {
    +                return mockProducer;
                 }
             };
             bolt.withTopicSelector("MY_TOPIC");
    -        
    +
    +        return bolt;
    +    }
    +
    +    @SuppressWarnings({ "unchecked", "serial" })
    +    @Test
    +    public void testSimple() {
    +        final KafkaProducer<String, String> producer = 
mock(KafkaProducer.class);
    --- End diff --
    
    I'm wondering if we would be better off using 
https://kafka.apache.org/10/javadoc/org/apache/kafka/clients/producer/MockProducer.html?
 Our own stubbing ends up doing some weird things, e.g. returning null from 
`send`.


---

Reply via email to