Hi,

Sorry for the late reply, I have read through all your valuable
comments. The KIP still needs work at this point.

I think at this point, one question comes up is that, how should we
implement the mock stores - as Sophie suggested, should we open to all
Store backend and just wrap around the Store class type which the user
will be providing - or, as Bruno suggested, we shouldn't have a
production backend store to be wrapped around in a mock store, just
keep track of the state of each method calls, even EasyMock could be
one of the option too.

Personally, EasyMock will makes the implementation easier but building
from scratch provides extra functionality and provides expandability
(But I am not sure what kind of extra functionality we want in the
future).

What do you guys think?

Best,
Yishun

On Fri, Apr 26, 2019 at 2:03 AM Matthias J. Sax <matth...@confluent.io> wrote:
>
> What is the status of this KIP?
>
>
> Btw: there is also KIP-456. I was wondering if it might be required or
> helpful to align the design of both with each other. Thoughts?
>
>
>
> -Matthias
>
>
> On 4/11/19 12:17 AM, Matthias J. Sax wrote:
> > Thanks for the KIP. Only one initial comment (Sophie mentioned this
> > already but I want to emphasize on it).
> >
> > You state that
> >
> >> These will be internal classes, so no public API/interface.
> >
> > If this is the case, we don't need a KIP. However, the idea of the
> > original Jira is to actually make those classes public, as part of the
> > `streams-test-utils` package. If it's not public, developers should not
> > use them, because they don't have any backward compatibility guarantees.
> >
> > Hence, I would suggest that the corresponding classes go into a new
> > package `org.apache.kafka.streams.state`.
> >
> >
> > -Matthias
> >
> >
> > On 4/9/19 8:58 PM, Bruno Cadonna wrote:
> >> 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
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >>
> >
>

Reply via email to