Sounds good! Let me work on this more and add some more information to this
KIP before we continue.

On Tue, Apr 30, 2019, 00:45 Bruno Cadonna <br...@confluent.io> wrote:

> Hi Yishun,
>
> Thank you for continuing with this KIP. IMO, this KIP is very important to
> develop robust code.
>
> I think, a good approach is to do some research on mock development on the
> internet and in the literatures and then try to prototype the mocks. These
> activities should yield you a list of pros and cons that you can add to the
> KIP. With this information it is simpler for everybody to discuss this KIP.
>
> Does this make sense to you?
>
> Best,
> Bruno
>
> On Mon, Apr 29, 2019 at 7:11 PM Yishun Guan <gyis...@gmail.com> wrote:
>
> > 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