Make Client test documentation similar to Barbican
Testing documentation will now include all types of testing. Change-Id: I2a188c8159691916880d43b334202203b496a8d4
This commit is contained in:
parent
643597a8b8
commit
c1cc35ae7c
|
@ -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
|
|
|
@ -21,7 +21,7 @@ Contents:
|
||||||
cli_usage
|
cli_usage
|
||||||
reference
|
reference
|
||||||
contributing
|
contributing
|
||||||
functional_tests
|
testing
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
==================
|
==================
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue