The recommended ideal time for building and executing all unit tests for a
project is 10 minutes.[0][1][2]

"Builds should be fast. Anything beyond 10 minutes becomes a dysfunction in
the process, because people won’t commit as frequently. Large builds can be
broken into multiple jobs and executed in parallel."[3]

Now imagine packing 6 projects together into 1 project. Assuming all 6 have
very fast unit tests that use Mockito then each takes 10 minutes to run and
you end up with 60 minutes for building the overall project.

This is then heading in the opposite direction from where Geode needs to
go. If Geode continues to execute distributedTest and integrationTest from
the main build target then this drives it up even longer. I'd recommend
considering every option to reduce build time including moving independent
tools to other repos.

I think it's more likely that other contributors will join in on the Spark
connector or JVSD or even Geode if they are isolated in their own projects.

But, if group consensus is to keep everything in 1 project, then let's at
least talk seriously about committing to breaking up tests into multiple
jobs for parallel execution.

[0] http://www.jamesshore.com/Agile-Book/ten_minute_build.html
[1]
http://www.martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast
[2] http://www.energizedwork.com/weblog/2006/02/ten-minute-build-continuous
[3]
http://blogs.collab.net/devopsci/ten-best-practices-for-continuous-integration

On Tue, Jul 7, 2015 at 9:55 AM, Anthony Baker <aba...@pivotal.io> wrote:

> Given the rate of change, it doesn’t seem like we should be trying to add
> (and maintain) support for every single Spark release.  We’re early in the
> lifecycle of the Spark connector and too much emphasis on
> backwards-compatibility will be a drag on our ongoing development,
> particularly since the Spark community is valuing rapid evolution over
> stability.
>
> (apologies if I have misconstrued the state of Spark)
>
> Anthony
>
>
> > On Jul 6, 2015, at 11:22 PM, Qihong Chen <qc...@pivotal.io> wrote:
> >
> > The problem is caused by multiple major dependencies and different
> release
> > cycles. Spark Geode Connector depends on two products: Spark and Geode
> (not
> > counting other dependencies), and Spark moves much faster than Geode, and
> > some features/code are not backward compatible.
> >
> > Our initial connector implementation depends on Spark 1.2 in before the
> > last week of March 15. Then Spark 1.3 was released on the last week of
> > March, and some connector feature doesn't work with Spark 1.3, then we
> > moved on, and now support Spark 1.3 (but not 1.2 any more, we did create
> > tag). Two weeks ago, Spark 1.4 was released, and it breaks our connector
> > code again.
> >
> > Therefore, for each Geode release, we probably need multiple Connector
> > releases, and probably need to maintain last 2 or 3 Connector releases,
> for
> > example, we need to support both Spark 1.3 and 1.4 with the current Geode
> > code.
> >
> > The question is how to support this with single source repository?
> >
> > Thanks,
> > Qihong
>
>

Reply via email to