Quanta Research Cambridge OpenStack Stress Test System
======================================================

Nova is a distributed, asynchronous system that is prone to race condition
bugs. These bugs will not be easily found during
functional testing but will be encountered by users in large deployments in a
way that is hard to debug. The stress test tries to cause these bugs to happen
in a more controlled environment.

The basic idea of the test is that there are a number of actions, roughly
corresponding to the Compute API, that are fired pseudo-randomly at a nova 
cluster as fast as possible. These actions consist of what to do, how to
verify success, and a state filter to make sure that the operation makes sense.
For example, if the action is to reboot a server and none are active, nothing
should be done. A test case is a set of actions to be performed and the
probability that each action should be selected. There are also parameters
controlling rate of fire and stuff like that.

This test framework is designed to stress test a Nova cluster. Hence,
you must have a working Nova cluster.

Environment
------------
This particular framework assumes your working Nova cluster understands Nova 
API 2.0. The stress tests can read the logs from the cluster. To enable this
you have to provide the hostname to call 'nova-manage' and
the private key and user name for ssh to the cluster in the
[stress] section of tempest.conf. You also need to provide the
value of --logdir in nova.conf:

  host_private_key_path=<path to private ssh key>
  host_admin_user=<name of user for ssh command>
  nova_logdir=<value of --logdir in nova.conf>
  controller=<hostname for calling nova-manage>

The stress test needs the top-level tempest directory to be on PYTHONPATH
if you are not using nosetests to run.

For real stress, you need to remove "ratelimit" from the pipeline in
api-paste.ini.


Running the sample test
-----------------------

To test your installation, do the following (from the tempest directory):

  PYTHONPATH=. python stress/tests/user_script_sample.py

This sample test tries to create a few VMs and kill a few VMs.


Additional Tools
----------------

Sometimes the tests don't finish, or there are failures. In these
cases, you may want to clean out the nova cluster. We have provided
some scripts to do this in the ``tools`` subdirectory. To use these
tools, you will need to install python-novaclient.
You can then use the following script to destroy any keypairs,
floating ips, and servers::

stress/tools/nova_destroy_all.py
