Hi Yishun,

Thank you for the KIP.

I have a couple of comments:

1. Could you please add an example to the KIP that demonstrates how the
mocks should be used in a test?

2. I am wondering, whether the MockKeyValueStore needs to be backed by an
actual KeyValueStore (in your KIP InMemoryKeyValueStore). Would it not
suffice to provide the mock with the entries that it has to check in case
of input operation like put() and with the entries it has to return in case
of an output operation like get()? In my opinion, a mock should have as
little and as simple code as possible. A unit test should depend as little
as possible from productive code that it does not explicitly test.

3. I would be interested in the arguments against using a well-established
and well-tested mock framework like EasyMock. If there are good arguments,
they should be listed under 'Rejected Alternatives'.

3. What is the purpose of the parameter 'time' in MockStoreFactory?

Best,
Bruno

On Tue, Apr 9, 2019 at 11:29 AM Sophie Blee-Goldman <sop...@confluent.io>
wrote:

> Hi Yishun, thanks for the KIP! I have a few initial questions/comments:
>
> 1) It may be useful to capture the iterator results as well (eg with a
> MockIterator that wraps the underlying iterator and records the same way
> the MockStore wraps/records the underlying store)
>
> 2) a. Where is the "persistent" variable coming from or being used? It
> seems the MockKeyValueStore accepts it in the constructor, but only the
> name parameter is passed when constructing a new MockKeyValueStore in
> build() ... also, if we extend InMemoryXXXStore shouldn't this always be
> false?
>     b. Is the idea to wrap an in-memory store for each type (key-value,
> session, etc)? We don't (yet) offer an in-memory version of the session
> store although it is in the works, so this will be possible -- I am more
> wondering if it makes sense to decide this for the user or to allow them to
> choose between in-memory or rocksDB by setting "persistent"
>
> 3) I'm wondering if users might want to be able to plug in their own custom
> stores as the underlying backend...should we support this as well? WDYT?
>
> 4) We probably want to make these stores available through the public
> test-utils package (maybe not the stores themselves which should be
> internal, but should there be some kind of public API that gives access to
> them?)
>
> Cheers,
> Sophie
>
> On Tue, Apr 9, 2019 at 9:19 AM Yishun Guan <gyis...@gmail.com> wrote:
>
> > Bumping this up again, thanks!
> >
> > On Fri, Apr 5, 2019, 14:36 Yishun Guan <gyis...@gmail.com> wrote:
> >
> > > Hi, bumping this up again. Thanks!
> > >
> > > On Tue, Apr 2, 2019, 13:07 Yishun Guan <gyis...@gmail.com> wrote:
> > >
> > >> Hi All,
> > >>
> > >> I like to start a discussion on KIP-448
> > >> (https://cwiki.apache.org/confluence/x/SAeZBg). It is about adding
> > >> Mock state stores and relevant components for testing purposes.
> > >>
> > >> Here is the JIRA: https://issues.apache.org/jira/browse/KAFKA-6460
> > >>
> > >> This is a rough KIP draft, review and comment are appreciated. It
> > >> seems to be tricky and some requirements and details are still needed
> > >> to be discussed.
> > >>
> > >> Thanks,
> > >> Yishun
> > >>
> > >
> >
>


-- 
Bruno Cadonna
Software Engineer at Confluent

Reply via email to