Tools for automated distributed juju charm testing.
Automated Charm Testing
Reusable components and utilities for juju:http://juju.ubuntu.com charm testing.
There are several different use cases for testing from jenkins waterfall views, to gating publishing to a repository based on test results.
In order to accomodate different running scenarios, the tools are presented as a set of cli tools.
All the tools operate against the default juju environment.
Provides the main entry point into charm testing. It will generate and run a test and record the result and environment information:
$ juju-graph-runner -r repository -w working_dir -s series -t testrecord.zip <charm_name>
For a given charm change calculate a series of test plans against a repository of all charms:
$ juju-planner -r repository -s precise -d plans_dir <charm_name>
Snapshot and restore an environment, akin to a bzr shelve. Primary purpose it to be able to clear out services from an environment so the environment can be reused across tests.
Operates on a service granularity, destroying and removing old services not present in before the last snapshot in a pop:
$ juju-snapshot snapshot -f pristine.json $ juju deploy --repository=examples local:mysql $ juju-snapshot restore -f pristine.json - Clean an environment for reuse, via deleting services. - Resets provider storage of any uploaded charms. - Removes any charm state from zookeeper.
Load a test plan’s services and relations into an environment:
$ juju-load -r repository mediawiki.plan
Verification for a service coming up correctly, waits for a given service and all its relations to reach a completed steady state or any reach a failure state:
$ juju-watch <service_name>
Exit code 1 if the wait failed, stderr with more details. Exit 0 if succesful.
Create an archive of all the unit logs, zookeeper data, status, and test runner logs:
$ juju-record -f testrecord.zip
Kapil Thangavelu <author> Mark Mimms <contributor>
- use sftp to fetch remote unit logs (juju-recorder is now provider independent)
- update watcher to work with new status output
- standalone zk dump script, use an error handling wrapper snapshot teardown.
- fix for watcher max timeout cli argument
- fix for snapshot restore having multiple services reference a charm.
- packaging fix