Make Client test documentation similar to Barbican

Testing documentation will now include all types of testing.

Change-Id: I2a188c8159691916880d43b334202203b496a8d4
This commit is contained in:
Fernando Diaz 2015-09-01 00:27:23 -05:00
parent 643597a8b8
commit c1cc35ae7c
3 changed files with 175 additions and 64 deletions

View File

@ -1,63 +0,0 @@
Running Functional Tests
========================
In order to run functional tests you must enter into the top-level directory
of the python-barbicanclient and run:
.. code-block:: bash
tox -e functional
By default, the functional tox job will use nosetests to execute the functional
tests. This is primarily due to nose being a very well known and common
workflow among developers.
Prerequisites
-------------
In order to run functional tests, Barbican must be running and configured to
use the Keystone Middleware. For more information on setting up this up
please visit http://docs.openstack.org/developer/barbican/setup/keystone.html
Functional Test Configuration
-----------------------------
A configuration file for functional tests must be edited before the tests
can be run. In the top-level directory of the python-barbicanclient, edit
``/etc/functional_tests.conf`` to the values you setup in Keystone.
.. code-block:: bash
[DEFAULT]
# Leaving this as a placeholder
[keymanager]
# Replace values that represent barbican server and user information
url=http://localhost:9311
username=barbican
password=secretservice
project_name=service
project_id=service
#max_payload_size=10000
project_domain_name=Default
[identity]
# Replace these with values that represent your identity configuration
uri=http://localhost:5000/v2.0
uri_v3=http://localhost:5000/v3
auth_version=v3
username=admin
tenant_name=admin
password=password
domain_name=Default
admin_username=admin
admin_tenant_name=admin
admin_password=password
admin_domain_name=Default
[identity-feature-enabled]
# Leaving this as a placeholder

View File

@ -21,7 +21,7 @@ Contents:
cli_usage
reference
contributing
functional_tests
testing
Indices and tables
==================

174
doc/source/testing.rst Normal file
View File

@ -0,0 +1,174 @@
Writing and Running Barbican Client Tests
=========================================
As a part of every code review that is submitted to the python-barbicanclient
project there are a number of gating jobs which aid in the prevention of
regression issues within python-barbicanclient. As a result, a
python-barbicanclient developer should be familiar with running
python-barbicanclient tests locally.
For your convenience we provide the ability to run all tests through
the ``tox`` utility. If you are unfamiliar with tox please see
refer to the `tox documentation`_ for assistance.
.. _`tox documentation`: https://tox.readthedocs.org/en/latest/
Unit Tests
----------
Currently, we provide tox environments for Python 2.7. By default
all available test environments within the tox configuration will execute
when calling ``tox``. If you want to run them independently, you can do so
with the following command:
.. code-block:: bash
# Executes tests on Python 2.7
tox -e py27
.. note::
If you do not have the appropriate Python versions available, consider
setting up PyEnv to install multiple versions of Python. See the
documentation regarding :doc:`/setup/dev` for more information.
.. note::
Individual unit tests can also be run, using the following commands:
.. code-block:: bash
# runs a single test with the function named
# test_should_entity_str
tox -e py27 -- test_should_entity_str
# runs only tests in the WhenTestingSecrets class and
# the WhenTestingOrderManager class
tox -e py27 -- '(WhenTestingSecrets|WhenTestingOrderManager)'
The function name or class specified must be one located in the
`barbicanclient/tests` directory.
Groups of tests can also be run with a regex match after the ``--``.
For more information on what can be done with ``testr``, please see:
http://testrepository.readthedocs.org/en/latest/MANUAL.html
You can also setup breakpoints in the unit tests. This can be done by
adding ``import pdb; pdb.set_trace()`` to the line of the unit test you
want to examine, then running the following command:
.. code-block:: bash
# Executes tests on Python 2.7
tox -e debug
.. note::
For a list of pdb commands, please see:
https://docs.python.org/2/library/pdb.html
Functional Tests
----------------
Unlike running unit tests, the functional tests require Barbican and
Keystone services to be running in order to execute. For more
information on :doc:`setting up a Barbican development environment
</setup/dev>` and using :doc:`Keystone with Barbican </setup/keystone>`,
see our accompanying project documentation.
A configuration file for functional tests must be edited before the tests
can be run. In the top-level directory of the python-barbicanclient, edit
``/etc/functional_tests.conf`` to the values you setup in Keystone.
.. code-block:: bash
[DEFAULT]
# Leaving this as a placeholder
[keymanager]
# Replace values that represent barbican server and user information
url=http://localhost:9311
username=barbican
password=secretservice
project_name=service
project_id=service
#max_payload_size=10000
project_domain_name=Default
[identity]
# Replace these with values that represent your identity configuration
uri=http://localhost:5000/v2.0
uri_v3=http://localhost:5000/v3
auth_version=v3
username=admin
tenant_name=admin
password=password
domain_name=Default
admin_username=admin
admin_tenant_name=admin
admin_password=password
admin_domain_name=Default
[identity-feature-enabled]
# Leaving this as a placeholder
Once you have the appropriate services running and configured you can execute
the functional tests through tox.
.. code-block:: bash
# Execute Barbican Functional Tests
tox -e functional
By default, the functional tox job will use nosetests to execute the functional
tests. This is primarily due to nose being a very well known and common
workflow among developers.
.. note::
In order to run individual functional test functions, you must use the
following commands:
.. code-block:: bash
# runs only tests in the test_secrets.py file
tox -e functional -- client/v1/functional/test_secrets.py
# runs only tests in the SecretsTestCase class
tox -e functional -- client/v1/functional/test_secrets.py:\
SecretsTestCase
# runs a single test with the function named
# test_secret_create_defaults_check_content_types
tox -e functional -- client/v1/functional/test_secrets.py:\
SecretsTestCase.test_secret_create_defaults_check_content_types
The path specified must be one located in the `functionaltests`
directory.
Remote Debugging
----------------
In order to be able to hit break-points on API calls, you must use remote
debugging. This can be done by adding ``import rpdb; rpdb.set_trace()`` to
the line of the API call you wish to test. For example, adding the breakpoint
in ``def create`` in ``barbicanclient.secrets.py`` will allow you to hit the
breakpoint whenever the ``create`` function is called.
.. note::
After performing the ``POST`` the application will freeze. In order to use
``rpdb``, you must open up another terminal and run the following:
.. code-block:: bash
# enter rpdb using telnet
telnet localhost 4444
Once in rpdb, you can use the same commands as pdb, as seen here:
https://docs.python.org/2/library/pdb.html