+1 for adding src/jmh/java to each module. I submitted a PR with that
change and a new benchmark in geode-core last year, but I ended up closing
it after a couple months. If anyone wants help, let me know.

On Mon, Jan 8, 2018 at 3:23 PM, Nick Reich <nre...@pivotal.io> wrote:

> I think if we can make it work, removing the benchmarks module and moving
> the benchmarks into the module where the code they are testing resides
> would be the ideal. Talking with Dan, this would result in a src/jmh/java
> source directory in any module with benchmarks, which I think would result
> in a good level of proximity between the benchmarks and the code they are
> testing.
>
> On Mon, Jan 8, 2018 at 3:15 PM, Kirk Lund <kl...@apache.org> wrote:
>
> > We'll probably end up writing benchmarks for classes or methods that are
> > package-private, so that would be one reason to not create a special
> > benchmarks package.
> >
> > On Mon, Jan 8, 2018 at 1:40 PM, Dan Smith <dsm...@pivotal.io> wrote:
> >
> > > I think this module was specifically added for running JMH benchmarks
> > since
> > > it's pulling in the JMH plugin. JMH is framework for easily writing
> > > microbenchmarks.
> > >
> > > I think it makes sense to put JMH benchmarks in the same package as the
> > > code under tests, since you may end up writing a microbenchmark for
> just
> > > one in internal class. Arguably, all of the modules could pull in the
> JMH
> > > plugin and these benchmarks could sit in those modules. I think the
> > current
> > > structure might have just been the easiest way to integrate JMH into
> the
> > > build.
> > >
> > > -Dan
> > >
> > > On Sun, Jan 7, 2018 at 9:59 PM, Xiaojian Zhou <gz...@pivotal.io>
> wrote:
> > >
> > > > The package might be always a problem. Even you put the cq benchmark
> > code
> > > > under geode-cq to near its source code, it might still have to access
> > > code
> > > > under other package, such as geode-core.
> > > >
> > > > So I think put benchmark test code under benchmark package is ok.
> Your
> > > > option 2) is good.
> > > >
> > > > Regards
> > > > Gester
> > > >
> > > > On Fri, Jan 5, 2018 at 11:57 AM, Nick Reich <nre...@pivotal.io>
> wrote:
> > > >
> > > > > Team,
> > > > >
> > > > > I am in the progress of adding new benchmarks to the (currently
> > sparse)
> > > > > geode-benchmarks module. The lack of current examples in the module
> > > leads
> > > > > me to wonder what the correct organization of benchmarks in the
> > module
> > > is
> > > > > (and if this is the right location).
> > > > >
> > > > > The existing benchmarks are all in org.apache.geode.cache.
> benchmark.
> > > > > Following this pattern would (presumably) result in benchmark
> > > subpackages
> > > > > in each package that has benchmarks. Making the root package
> > > > > org.apache.geode.benchmark would remove this proliferation of sub
> > > > packages.
> > > > > However, both these approaches have the issue that package level
> > > > > methods/classes cannot be accessed from benchmarks as they will
> never
> > > > share
> > > > > a package with the production code.
> > > > >
> > > > > 1) Should benchmarks then not be put in special benchmark packages?
> > > > >
> > > > > 2) Should our benchmarks not invoke package level methods/classes
> in
> > > the
> > > > > case that we should use benchmark packages? Or should such
> benchmarks
> > > not
> > > > > reside in the benchmarks module?
> > > > >
> > > > > 3) Is geode-benchmarks where we intend all benchmarks, only certain
> > > > classes
> > > > > of benchmarks (all using jmh for example), or would we prefer
> > embedding
> > > > > them in the modules where the code being benchmarked resides?
> > > > >
> > > > > Thanks for your input.
> > > > >
> > > >
> > >
> >
>

Reply via email to