I would love to see pre-commit testing such as what Hugo described.

At the time being, I tend to mvn -P developer,systemvm clean install to
make sure I have a clean build and run whatever tests it runs, then I run
my own suite of tests manually (I'd like to automated these when I have
time), then I check my code in.


On Fri, Feb 7, 2014 at 5:02 AM, Sudha Ponnaganti <
sudha.ponnaga...@citrix.com> wrote:

> +1 for pre- commit testing.  Whichever tool enforces it would be good
> choice.
> For feature check in, we ( community) require sanity tests to be submitted
> by feature owners and this was followed well in 4.0 release  but there is
> lapse in this practice now. This would be a great if RM can enforce this
> during check ins  -  review unit tests  and results before approving a
> check in.
>
> -----Original Message-----
> From: Trippie [mailto:trip...@gmail.com] On Behalf Of Hugo Trippaers
> Sent: Friday, February 07, 2014 12:46 AM
> To: dev
> Cc: jfarr...@apache.org
> Subject: Re: Code quality, QA, etc
>
> Hey David,
>
> I would make a distinction between code issues and functional issues.
> Occasionally somebody just plainly breaks the build, i'm guilty of that
> myself actually, and thats just plain stupid. Luckily we have Jenkins to
> catch these errors quickly. I'm in a continuous struggle with Jenkins to
> get the build time to less than 5 minutes. I feel that is an acceptable
> time to get feedback on a commit, any longer and you have moved on to the
> next thing or gone home. Also this kind of testing isn't really hard, run
> the build and unit tests. By introducing something like gerrit we can
> actually make this happen before committing it to the repo. Push a patch to
> gerrit, gerrit tells jenkins to test the patch, if +1 from jerkins commit,
> for non committers the step would be to invite somebody for review as well.
> Second nice thing about jenkins is the post-review test, if a contributor
> submits a patch its build by jenkins, if a reviewes approves the patch,
> jerkins will again run a build to ensure that the patch will still apply
> and doesn't break the build. Very handy if there is some time between patch
> submission and patch review.
>
> Functional issues are much harder to track. For example yesterday i found
> several issues in the contrail plugin that would not cause any pain in a
> contrail environment, but any other environments creating a network would
> fail. These examples are too common and difficult to catch with unit tests.
> It can be done, but requires some serious effort on the developers side and
> we in general don't seem to be very active at writing unit tests. These
> kind of issues can only be found by actually running CloudStack and
> executing a series of functional tests. Ideally that is what we have the
> BVT suite for, but i think our current BVT setup is not documented enough
> to give accurate feedback to a developer about which patch broke a certain
> piece of functionality. In jenkins the path from code to BVT is not kept
> yet, so it is almost impossible to see which commits were new in a
> particular run of the bvt suite.
>
> Personally i'm trying to get into the habit of running a series of tests
> on devcloud before committing something. Doesn't prove a lot, but does
> guarantee that the bare basic developer functionality is working before
> committing something. After a commit at least i'm sure that anybody will be
> able to spinup devcloud and deploy an instance. I'm trying to get this
> automated as well so we can use this as feedback on a patch. Beers for
> anyone who writes an easy to use script that configures devcloud with a
> zone and tests if a user vm can be instantiated on an isolated sourcenat
> network. If we could include such a script in the tree it might help people
> with testing their patch before committing.
>
> I think we are seeing more and more reverts in the tree. Not necessarily a
> good thing, but at least people know that there is that option if a commit
> really breaks a build. Also please help each other out, everybody can make
> a mistake and commit it. If its a trivial mistake it might not be much
> effort to track it down and fix it, which is way better than a revert or a
> mail that something is broken.
>
> In short, we need to make testing more efficient and transparent to allow
> people to easily incorporate it in their personal workflow.
>
> Cheers,
>
> Hugo
>
> On 7 feb. 2014, at 04:50, David Nalley <da...@gnsa.us> wrote:
>
> > Hi folks,
> >
> > We continue to break things large and small in the codebase, and after
> > a number of different conversations; I thought I'd bring that
> > discussion here.
> >
> > First - coding quality is only one factor that the PMC considers when
> > making someone a committer.
> >
> > Second - CloudStack is a huge codebase; has a ton of inter-related
> > pieces, and unintended consequences are easy.
> >
> > We also have an pretty heady commit velocity - 20+ commits today alone.
> >
> > Some communities have Review-then-commit - which would slow us down,
> > and presumably help us increase quality. However, I am not personally
> > convinced that it will do so measurably because even the most
> > experienced CloudStack developers occasionally break a build or worse.
> >
> > We could have an automated pipeline that verifies a number of
> > different tests pass - before a patch/commit makes it into a mainline
> > branch. That is difficult with our current tooling; but perhaps
> > something worth considering.
> >
> > At FOSDEM, Hugo and I were discussing his experiences with Gerrit and
> > OpenDaylight, and he thinks thats a viable option. I think it would
> > certainly be a step in the right direction.
> >
> > Separately, Jake Farrell and I were discussing our git-related
> > proposal for ApacheCon, and broached the subject of Gerrit. Jake is
> > the current person bearing most of the load for git at the ASF, and
> > he's also run Gerrit in other contexts. He points out a number of
> > difficulties. (And I'd love for him to weigh in on this conversation,
> > hence the CC) He wants to expand RB significantly, including
> > pre-commit testing.
> >
> > So - thoughts, comments, flames? How do we improve code quality, stop
> > needless breakage? Much of this is going to be cultural I think, and I
> > personally think we struggle with that. Many folks have voiced an
> > opinion about stopping continued commits when the build is broken; but
> > we haven't been able to do that.
> >
> > --David
>
>


-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkow...@solidfire.com
o: 303.746.7302
Advancing the way the world uses the
cloud<http://solidfire.com/solution/overview/?video=play>
*(tm)*

Reply via email to