This is a tool for cloud deployment and testing.
Note on the terms used here:
- stories - they represent various deployment scenarios combined with feature tests
- runners - they represent commands being executed to drive the stories to happyend
Every story has typically several runners, the more complex scenario is the more runners it might have.
- Check system dependencies
git clone email@example.com:vmoravec/matrix
alias rake="bundle exec rake"# more on this further below
cd matrix && rake install
- Run a story!
You can run all
rake tasks as a
root or a regular user after you have
enhanced your sudoers file to not require password for
sudo (you should
know the consequences of that):
$user ALL=(ALL) NOPASSWD:ALL # use that at your own risk!
zypper in rubygem-bundler ruby-devel zypper in gcc make lvm2 libvirt
List of required rubygems can be found in file
matrix.gemspec and in
To have all local dependencies installed, please run the task
rake install for installing the deps or
rake update to update the deps.
Make sure you have installed all dependencies .
After you have cloned the repository, install the required rubygems:
All rubygems will be installed into the directory
vendor/bundle within the repo.
Other dependencies are put into the
Yaml configuration files are the crucial for correct functionality.
They are located in the
config/ dir and are split into several files:
Configuration of the hardware
General configuration data
Custom reconfiguration if required for custom deployment. This file does not exists by default, you can create one by copying of the provided example file.
story configuration files
These are located in the story specific directories. There are at least 3 types of them:
Main file with runners and runner configs
Crowbar proposal configuration
Configuration for cucumber scenarios loaded from cloud testsuite
bundle exec rake help
To get rid of the annoying
rake command prefixing with
bundle exec, having done
alias rake="bundle exec rake"
might be useful. The command
bundle exec takes care about locating and loading
the correct rubygems from the pre-configured path as set by
If you get an error like
rake aborted! LoadError: cannot load such file -- cct /home/path/to/code/matrix/Rakefile:6:in `<top (required)>'
the rubygems installed in path
vendor/bundle are not visible to
Get some help:
rake help rake h rake -T keyword # will match all tasks by provided keyword
More specific information:
rake targets rake features rake stories
Get config dumps:
rake config rake config:main rake config:targets
Run a story:
Most of the runners' output goes currently into the log file in
Run unit tests for code inside
What is a story?
A story is maintained scenario with yaml file configuration and deployment path with tests executed at some specific checkpoints.
What is a runner?
Runners are commands that drive the installation.
They are available as
rake tasks and can be run separately outside of a story.
What is a feature?
Features are part of the Cucumber Cloud Testsuite. A feature is a collection of test cases being run at some point of installation workflow.
How to run a story?
Before running a story you need to pick a target for your cloud deployment.
You either choose the
libvirt driven target called
virtual or a particular
hardware you have permission to install on.
The list of available hardware targets is available by
This returns the list of all stories.
Not all targets are supported by every story. To find out if a particular target is supported for a particular story, you need to review its targets:
rake story:default:targets # returns all targets for story named 'default'
You can get additional information on a single story, however you need to specify the target you point at:
rake story:default:runners target=TARGET rake story:default:config target=TARGET rake story:default:features target=TARGET
This is how to run story named 'default' targeting local virtualized environment:
rake story:default target=virtual
- Once there are jenkins builds for the stories available, implement querying the Jenkins API for the historical build data. This might be useful for fast checking of regressions.