[ https://issues.apache.org/jira/browse/KAFKA-5253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417896#comment-16417896 ]
Jagadesh Adireddi commented on KAFKA-5253: ------------------------------------------ Hi [~mjsax], I am new to Kafka contribution. I made code changes for above issue and it's working as expected. I have few questions before I submit pull request. I made changes inside *private* method *KStreamTestDriver*#*sourceNodeByTopicName .* I haven't modified any method signature or so. Just embedded below code {code:java} Set<String> sourceTopics = topology.sourceTopics(); for (final String eachSourceTopic : sourceTopics) { if (Pattern.compile(eachSourceTopic).matcher(topicName).matches()) { return topology.source(eachSourceTopic); } } {code} Do i still need to submit KIP for this change, as i am not touching any public methods. > TopologyTestDriver must handle streams created with patterns > ------------------------------------------------------------ > > Key: KAFKA-5253 > URL: https://issues.apache.org/jira/browse/KAFKA-5253 > Project: Kafka > Issue Type: Bug > Components: streams, unit tests > Affects Versions: 1.1.0 > Reporter: Wim Van Leuven > Assignee: Jagadesh Adireddi > Priority: Major > Labels: beginner, needs-kip, newbie > > *Context* > -KStreamTestDriver- TopologyTestDriver (added via KIP-247) is being used to > unit test topologies while developing KStreams apps. > One such topology uses a Pattern to consume from multiple topics at once. > *Problem* > The unit test of the topology fails because -KStreamTestDriver- > TopologyTestDriver fails to deal with Patterns properly. > *Example* > Underneath is a unit test explaining what I understand should happen, but is > failing. > Explicitly adding a source topic matching the topic pattern, generates an > exception as the topology builder explicitly checks overlapping topic names > and patterns, in any order of adding pattern and topic. So, it is intended > behaviour. > {code:java} > @Test > public void shouldProcessFromSourcesThatDoMatchThePattern() { > // -- setup stream pattern > final KStream<String, String> source = > builder.stream(Pattern.compile("topic-source-\\d")); > source.to("topic-sink"); > // -- setup processor to capture results > final MockProcessorSupplier<String, String> processorSupplier = new > MockProcessorSupplier<>(); > source.process(processorSupplier); > // -- add source to stream data from > //builder.addSource(builder.newName(KStreamImpl.SOURCE_NAME), > "topic-source-3"); > // -- build test driver > driver = new KStreamTestDriver(builder); > driver.setTime(0L); > // -- test > driver.process("topic-source-3", "A", "aa"); > // -- validate > // no exception was thrown > assertEquals(Utils.mkList("A:aa"), processorSupplier.processed); > } > {code} > *Solution* > If anybody can help in defining the solution, I can create a pull request > for this change. -- This message was sent by Atlassian JIRA (v7.6.3#76005)