Jump to: navigation, search

Difference between revisions of "Smokestack"

Line 14: Line 14:
 
== Description ==
 
== Description ==
  
[[SmokeStack]] is a Rails application that provides a webUI and REST API to run smoke tests on Openstack. It currently supports custom branches of nova and glance. Each test configuration allows you to customize the nova and glance branch and provides an option to merge w/ trunk (highly recommended). Packages are built with PPA packages and installed via Chef on freshly built Rackspace Cloud Servers. Smoke tests include a set of Ruby openstack-compute bindings tests along with the tests in the standard nova 'smoketests' directory.
+
[[SmokeStack]] is a Rails application that provides a webUI and REST API to run smoke tests on Openstack. It currently supports custom branches of nova and glance. Each test configuration allows you to customize the nova and glance branch and provides an option to merge w/ trunk (highly recommended). Each jobs builds its own Debian packages (using the PPA builder sources) which get installed via Chef on freshly built Rackspace Cloud Servers. The current set of function/smoke tests include a set of Ruby openstack-compute bindings tests along with the tests in the standard nova 'smoketests' directory.
 +
 
 +
[[SmokeStack]] is already proving to be quite useful as a tool to test Nova and Glance branches when they are in merge prop. It is also automated (via Jenkins) so that every single trunk commit fires a set of jobs to run against lp:nova and lp:glance.
 +
 
 +
== webUI ==
 +
 
 +
{{http://c3323772.r72.cf0.rackcdn.com/main.png}}
  
 
== Creating a new test configuration ==
 
== Creating a new test configuration ==
Line 20: Line 26:
 
[[SmokeStack]] currently supports custom nova and glance branches.
 
[[SmokeStack]] currently supports custom nova and glance branches.
  
{{http://c3323772.r72.cf0.rackcdn.com/new_test.png}}
+
The following screenshot is the test configuration we currently run for every single trunk commit.
 +
 
 +
{{http://c3323772.r72.cf0.rackcdn.com/edit_test_trunk.png}}
 +
 
 +
A test config for a developer branch in merge prop might look something like this:
 +
 
 +
{{http://c3323772.r72.cf0.rackcdn.com/edit_test.png}}
  
 
== Jobs ==
 
== Jobs ==
Line 46: Line 58:
 
== Configurations ==
 
== Configurations ==
  
[[SmokeStack]] 'configurations' are groups of settings that define how each VPC cloud is configured. The settings control:
+
[[SmokeStack]] 'configurations' are groups of settings that define how each VPC group cloud is configured. Kind of like Amazon's "Cloud Formations" for functional testing. The following configuration options are available:
  
1) The type and size of Cloud Servers used
+
1) The type and size of Cloud Servers used to build the server group
  
 
2) The Chef cookbook repo used
 
2) The Chef cookbook repo used
Line 56: Line 68:
 
{{http://c3323772.r72.cf0.rackcdn.com/configuration.png}}
 
{{http://c3323772.r72.cf0.rackcdn.com/configuration.png}}
  
[[SmokeStack]] currently contains two configurations called: 'Libvirt MySQL' and 'Libvirt Postgres'. Future configurations might support testing different nova configurations (zones) and/or include different hypervisors like [[XenServer]] (using bare metal), etc.
+
[[SmokeStack]] currently contains two configurations called: 'Libvirt MySQL' and 'Libvirt Postgres'.
 +
 
 +
== In the works ==
 +
 
 +
* Lots of UI stuff (see the [[GitHub]] issues list)
 +
* Ability to specify custom package builder branches (Debian packagers)
 +
* Future configurations might support testing different nova configurations (zones), larger groups of servers, etc.
 +
* Integrate with something like Dell's crowbar project to provide a clean/flexible UI for testing on bare metal.
 +
* Additional hypervisor support.

Revision as of 14:21, 8 June 2011

SmokeStack

A webUI to run smoke tests on the OpenStack.

Source Code

https://github.com/dprince/smokestack

Online at

http://184.106.189.251/

Description

SmokeStack is a Rails application that provides a webUI and REST API to run smoke tests on Openstack. It currently supports custom branches of nova and glance. Each test configuration allows you to customize the nova and glance branch and provides an option to merge w/ trunk (highly recommended). Each jobs builds its own Debian packages (using the PPA builder sources) which get installed via Chef on freshly built Rackspace Cloud Servers. The current set of function/smoke tests include a set of Ruby openstack-compute bindings tests along with the tests in the standard nova 'smoketests' directory.

SmokeStack is already proving to be quite useful as a tool to test Nova and Glance branches when they are in merge prop. It is also automated (via Jenkins) so that every single trunk commit fires a set of jobs to run against lp:nova and lp:glance.

webUI

Template:Http://c3323772.r72.cf0.rackcdn.com/main.png

Creating a new test configuration

SmokeStack currently supports custom nova and glance branches.

The following screenshot is the test configuration we currently run for every single trunk commit.

Template:Http://c3323772.r72.cf0.rackcdn.com/edit test trunk.png

A test config for a developer branch in merge prop might look something like this:

Template:Http://c3323772.r72.cf0.rackcdn.com/edit test.png

Jobs

Each job goes into a Redis backed job queue. Smokestack currently has 3 job workers (which allows for 3 concurrent jobs to be running at any time). This is easily scalable by adding more workers and Cloud Servers accounts.

Each job makes use of an openstack_vpc project template which is used to automate and control the setup of things in the cloud. The openstack_vpc project (available online here: https://github.com/dprince/openstack_vpc) is also a handy tool for developers who want to spin up groups of servers to have direct access to a fully working Openstack (nova/glance) system in the cloud.

Here is what happens each time a job runs:

1) A Cloud Servers VPC group is created. (See https://github.com/rackspace/cloud_servers_vpc for more information)

2) Packages are built (in the cloud) based on the configured SmokeStack branches for nova and glance. An API repo is created which is used to deploy these packages.

3) Chef is installed and each node configured according to the selected 'configuration' (see below).

4) Smoke tests are executed (first the OSAPI tests and then the nova 'smoketests').

5) Results, logs, bzr revisions are harvested and stored in the SmokeStack DB.

The results look something like this:

Template:Http://c3323772.r72.cf0.rackcdn.com/job.png

Configurations

SmokeStack 'configurations' are groups of settings that define how each VPC group cloud is configured. Kind of like Amazon's "Cloud Formations" for functional testing. The following configuration options are available:

1) The type and size of Cloud Servers used to build the server group

2) The Chef cookbook repo used

3) The Chef roles and recipes that should be used for each node.

Template:Http://c3323772.r72.cf0.rackcdn.com/configuration.png

SmokeStack currently contains two configurations called: 'Libvirt MySQL' and 'Libvirt Postgres'.

In the works

  • Lots of UI stuff (see the GitHub issues list)
  • Ability to specify custom package builder branches (Debian packagers)
  • Future configurations might support testing different nova configurations (zones), larger groups of servers, etc.
  • Integrate with something like Dell's crowbar project to provide a clean/flexible UI for testing on bare metal.
  • Additional hypervisor support.