Great to see you kick this off Alex! I have a few ideas for this and
had been looking for help as well ..

I had a draft lying around of an email you sent me long ago about
tiered testing and I think your proposal fits very well on this:

The tl;dr of that conversation was as below

- improve simulator for runtime testability 
- customize to model and inject failures
- make a habit of writing tests around bug reports 
(I started tagging tests since api_refactoring on JIRA already.
look for the integration-test label)
- make integration testing easier using factories and DSLs (from
  Chiradeep)
(part 1 of this work was started on this in the marvin-refactor
branch)

More comments inline

On Wed, Mar 06, 2013 at 12:12:11AM +0530, Alex Huang wrote:
> Hi All,
> 
> As most of you are aware, the master branch keeps getting broken by
> checkins for various reasons.  Committers need to be more
> responsible about their checkins but I don't think we can depend on
> that happening.  There are various reasons.  The most obvious to me
> is that granting committership is not based on code competency.
> (And I don't think it should.)  Given that we need to build a BVT
> system for ensure that checkins do not break the branch.
> 
> Here's my proposal:
> 
> Existing components that we'll use.
> 
> -          Citrix has contributed its testing to Apache.
> 
> -          Apache CloudStack has already a simulator that's been used for 
> scale testing.
> 
> -          Marvin
> 
> -          DevCloud-kvm
> 
> Work Proposal:
> 
> -          Convert the Citrix testing into three phases:
> 
> o   Setup
> 
> o   Test
> 
> o   Verify

I do the build, package, setup, test, verify in my integration test
pipeline and a similar pipeline for a developer combined into easily
runnable maven profiles/lifecycles/goals would be great to have.

> -          Add a Setup and Verify phase for the simulator
> -          Add all of the agent commands necessary for the simulator to pass 
> the testing.
> -          Add a Setup and Verify phase for devCloud-kvm

The setups exists as configs in the marvin sandbox already. Just need
to hook it up with mvn. For verify there is a simple python script
testSetupSuccess.py already that checks two things

- system VMs are up
- built-in templates are downloaded

This should be a good start IMO. 

Currently devcloud-kvm is a bit hard to run from a developer
environment. But it's great to have in a continuous environment backed
by a KVM host with a Linux 3.0 kernel. Marcus has written up some
pretty good documentation for this. If someone can help bring up that
setup I can assist in bringing up the tests using my devcloud-ci
scripts. I'm bringing up devcloud after Kelven 'alerted' us of the
memory fix.

> 
> -          Add two more profiles to pom
> o   Checkin-test-with-simulator: Runs the testing against the simulator
> o   Checkin-test-with-devCloud: Runs the testing against devcloud
> 
> -          All of the profiles will attempt to also check the merge list that 
> Chip has proposed.'

> -          We will also change marvin to easily add zones with
> actual hardware.  It will be based on a data driven document to do
> the setup.
This is currently partly doable using a properties file in the sandbox
$ python advanced_env.py -i xen.properties -o xen.cfg

gives out a advanced zone config for the properties specified.
Is data driven similar or you are talking about a DSL that Edison
mentioned at CCC12?

> 
> For a developer to checkin:
> 
> -          S/he must writes marvin tests for their feature and add
> it to the BVT.
I made some progress on this in my marvin-refactor branch and will
collect my thoughts in an FS that I am drafting. The marvin tests are
difficult to write in their current form. I'm following Chiradeep's
recommendation for providing factories and once those are baked a DSL
language devs can quickly mock down tests against a simulator using 
the above mentioned mvn profiles.

> 
> -          S/he must run the checkin tests to verify everything works.
> -          If the feature contains a hardware/vpx component, simulation must 
> be added.
> 
> At this point, everything is about the developer writing in their feature 
> branch and merging in.
> 
> On infrastructure side:
> 
> -          We'll setup continuous BVT based on the simulator.
I brought this up on the IRC and the list y'day, so +1 - happy to help
> 
> -          I again push that we must use Gerrit to test the code
> before it gets merge into the branch but I'll leave that for someone
> else to do that.
> 
> Let me know what you guys think.  I'll probably break out a bvt
> branch to work on this.  Anyone want to join me?

Count me in!

-- 
Prasanna.,

Reply via email to