Once upon a time [1] I had propagated the idea of refactoring marvin to
make test case writing simpler. At the time, there weren't enough
people writing tests using marvin however. Now as focus on testing has
become much more important for the stability of our releases I would
like to bring back the discussion and to review the refactoring of
marvin which I've been doing in the marvin_refactor branch.

The key goal of this refactor was to simplify test case writing. In
doing so I've transformed the library from its brittle hand-written
nature to a completely auto-generated set of libraries. In that sense,
marvin is much closer to cloudmonkey now.

The two important changes in this refactor are:

1. data represented in an object-oriented fashion presented as factories
2. test case writing using entities and their operations rather than
a sequence of disconnected API calls.

To see the full nature of this proposal I've updated the spec I put up
on the wiki:
https://cwiki.apache.org/confluence/x/RI3lAQ

For a quick comparison I wrote a test for the VPC vm's lifecycle in
tools/marvin/marvin/test/test_vpc_life_cycle.py which one can compare
with the existing tests for vpc under
test/integration/component/test_vpc_vm_life_cycle.py

These changes being 'architectural' so to speak and in a way
disruptive even I would like to merge this at the beginning of the
upcoming cloudstack release.

This is only a small part of a larger change for marvin which will be
moving to a more BDD like implementation [2] where tests are written
using a gherkin-like language. But that will come later.

I've also tried to disconnect marvin from depending on CloudStack's
build and repo. This will help split marvin from CloudStack which I
will discuss in a seperate thread.

[1] http://markmail.org/message/4tsscn6zvtfsskuj
[2] http://pythonhosted.org/behave/

-- 
Prasanna.,

------------------------
Powered by BigRock.com

Reply via email to