Initial checkin of Stress Test for nova.

Change-Id: I1c4c656e3b8ec715524d369c226ec122920f89fb
diff --git a/stress/README.rst b/stress/README.rst
new file mode 100644
index 0000000..e9df3a3
--- /dev/null
+++ b/stress/README.rst
@@ -0,0 +1,62 @@
+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 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>

+

+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