[ 
https://issues.apache.org/jira/browse/KAFKA-12263?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tom Bentley updated KAFKA-12263:
--------------------------------
     Flags: Patch
    Labels: patch-available  (was: )

> Improve MockClient RequestMatcher interface
> -------------------------------------------
>
>                 Key: KAFKA-12263
>                 URL: https://issues.apache.org/jira/browse/KAFKA-12263
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Jason Gustafson
>            Assignee: Tom Bentley
>            Priority: Major
>              Labels: patch-available
>
> MockClient has a RequestMatcher interface which is used to verify that a 
> request received by the client matches an expected type:
> {code}
>     @FunctionalInterface
>     public interface RequestMatcher {
>         boolean matches(AbstractRequest body);
>     }
> {code}
> The interface is awkward in practice because there is nothing we can do 
> except fail the test if the request does not match. But in that case, the 
> MockClient does not have enough context to throw a useful error explaining 
> why the match failed. Instead we just print a generic message about the match 
> failure.
> A better approach would probably to turn this into more of a RequestAssertion:
> {code}
>     @FunctionalInterface
>     public interface RequestAssertion {
>         void assertRequest(AbstractRequest body);
>     }
> {code}
> Then implementations could then be constructed of a sequence of Junit 
> assertions. When there is a failure, we can trace it back to the specific 
> assertion that failed. Of course they can do that now with RequestMatcher as 
> well, but the expectation would be more explicit.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to