Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The xcp-based devcloud is capable of deploying a basic zone cloudstack environment. We've patched this appliance with a clone of the incubator-cloudstack asf repo and our test utilities (marvin, cloudmonkey) and created a 'testcloud'  appliance. The following workflow explains the way tests are run within the appliance:

Workflow

The _testcloud _appliance testcloud  appliance contains an init script at /etc/init.d/devcloud that will start up a testrunner process when the appliance boots. Following this the testrunner will perform the necessary setup to prepare a basic zone cloudstack management server.

  1. The test runner fetches the latest HEAD (currently set to master) from the git repository and builds cloudstack.  In other words - mvn install
  2. This is followed by an installation of marvin so we have the latest APIs available via the test framework
  3. Further on the management server client inside a jetty:run will start up a management server process and have the API server listening for requests
  4. We then configure this management server with the basic zone devcloud configuration with one XCP host and local storage. ie the config at tools/devcloud/devcloud.cfg
  5. Once we have the basic zone running we will do a basic health check that verifies the following
    1. All system VMs have come up and are successfully 'Running'
    2. All the featured templates (built-in) are in Ready (downloaded) state
  6. Iff the health check succeeds the environment is ready to run tests upon
  7. Wiki Markup
    [nose|https://nose.readthedocs.org/en/latest/]'s testrunner with the marvin plugin will collect all the tests marked with the '_attribute'_ of '_devcloud'  \[
    nose's testrunner with the marvin plugin will collect all the tests marked with the 'attribute' of 'devcloud'  (
    @attr(tags='devcloud')\] ,_ put them in a suite and run them
    1. The nose xUnit plugin gives us the XML out put output for consumption into jenkins
  8. Management Server log, logs from the test appliance's init script and the test results are posted to the machine hosting the 'testcloud' appliance
  9. Jenkins A jenkins slave agent within the host will send through the results and logs to the jenkins master at jenkins.c.o

...

The host machine is a Ubuntu server with virtualbox 4.2 installed with guest additions. VirtualBox does dhcp for the 'testcloud' workers that it spins up. The testcloud image itself is cloned into multiple test workers (currently 5). A simple scheduler will pick up an idle worker vm on trigger from jenkins master that is polling for commits on the git:repo. Once picked up each worker will perform all the tests and post the results back to the gateway/dhcp which in our case is the host machine running virtualbox. A jenkins slave runs in headless mode on the host machine and posts results back to jenkins master.

...