[ 
https://issues.apache.org/jira/browse/KAFKA-9088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16987478#comment-16987478
 ] 

John Roesler commented on KAFKA-9088:
-------------------------------------

Hey all,

I can see I've missed some discussions here. I've read over the ticket and also 
looked over the highlights of the PR.

I'm afraid I really don't think that EasyMock is going to be a good approach 
here. It's a great library for when you need to mock things that are painful to 
implement, or when you need to play through different specific scenarios in 
different tests.

But at the same time, it can be a major pain to work with. Tracing the 
execution with the debugger is virtually impossible: as soon as you 
accidentally descend into the mock, you're deep into Java black magic. Figuring 
out when to set up expectations and when to replay them is deeply confusing. 
And paradoxically, just setting up a mock to consistently behave in a "normal" 
way takes an obnoxious amount of code.

My experience says that if what you're trying to mock has a relatively simple 
interface and state space, then just go ahead and implement a "manually mocked" 
implementation. Only reach for EasyMock when this basic approach is too 
difficult for some reason.

If I understand this ticket, the motivation was _only_ that there exist two 
similar classes in the Apache codebase, not that there is anything actually 
wrong with either of them. In that case, we shouldn't switch to EasyMock. We 
should just consolidate the implementations... Or not! I didn't see any actual 
justification for _why_ it's a problem to have two similar classes, and if 
consolidating them results in a lot of difficulty, or a lot of extra code, then 
consolidating is the wrong thing to do.

Either way, Just looking at the PR, it seems that this _consolidation_ strategy 
results in adding _double_ the lines of code that we're removing.

I know that this must have taken a ton of work, so I've been sitting here 
trying to thing of something else to say, but it really feels like we need to 
go back to the drawing board here and ask ourselves what we're trying to 
accomplish, and at what cost.

Thanks,
John

> Consolidate InternalMockProcessorContext and MockInternalProcessorContext
> -------------------------------------------------------------------------
>
>                 Key: KAFKA-9088
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9088
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams, unit tests
>            Reporter: Bruno Cadonna
>            Assignee: Pierangelo Di Pilato
>            Priority: Minor
>              Labels: newbie
>
> Currently, we have two mocks for the {{InternalProcessorContext}}. The goal 
> of this ticket is to merge both into one mock or replace it with an 
> {{EasyMock}} mock. 



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

Reply via email to