* Significant part of the original article is outdated (https://wiki.openstack.org/wiki/Mistral/Testing) so only the actual parts were moved. Partial-Bug: #1779318 Change-Id: Ia5a43db418282041c6e169e301528ef1a35777af
3.9 KiB
Debugging and Testing
To debug using a local engine and executor without dependencies such
as RabbitMQ, make sure your /etc/mistral/mistral.conf
has
the following settings:
[DEFAULT]
rpc_backend = fake
[pecan]
auth_enable = False
and run the following command in pdb, PyDev or PyCharm:
mistral/cmd/launch.py --server all --config-file /etc/mistral/mistral.conf --use-debugger
Note
In PyCharm, you also need to enable the Gevent compatibility flag in Settings -> Build, Execution, Deployment -> Python Debugger -> Gevent compatible. Without this setting, PyCharm will not show variable values and become unstable during debugging.
Running unit tests in PyCharm
In order to be able to conveniently run unit tests, you need to:
- Set unit tests as the default runner:
Settings -> Tools -> Python Integrated Tools -> Default test runner: Unittests
- Enable test detection for all classes:
Run/Debug Configurations -> Defaults -> Python tests -> Unittests -> uncheck Inspect only subclasses of unittest.TestCase
Running examples
To run the examples find them in mistral-extra repository (https://github.com/openstack/mistral-extra) and follow the instructions on each example.
Automated Tests
On Mistral project we have two separate test suites:
- Unit tests - executed by Jenkins CI job in OpenStack gerrit (python-style checks and execution of all unit tests)
- Integration tests - executed by Devstack Gate job in OpenStack Gerrit (integration tests for Mistral after the OpenStack deployment with devstack)
Where we can find automated tests
mistral:
- Unit tests can be found at https://github.com/openstack/mistral/tree/master/mistral/tests/unit
- Integration tests can be found at https://github.com/openstack/mistral-tempest-plugin/tree/master/mistral_tempest_tests/tests
python-mistralclient:
- Unit tests can be found at https://github.com/openstack/python-mistralclient/tree/master/mistralclient/tests/unit
- Integration tests can be found at https://github.com/openstack/python-mistralclient/tree/master/mistralclient/tests/functional
How to execute tests manually
Almost all existing automated tests can be executed manually on the developer's desktop (except those which check OpenStack actions). To do this, you should clone "mistral" repository (or "python-mistralclient") and run the corresponding commands.
Cloning a repository:
$ git clone https://git.opendev.org/openstack/mistral.git
$ cd mistral
Unit tests
To run all unit tests:
$ tox
To run unit tests against a specific python version:
$ tox -e py35
To run tests from a specific test class (using a specific python version):
tox -e py35 -- 'DataFlowEngineTest'
Integration tests
There are several suites of integration tests the mentioned repositories:
mistral-tempest-plugin:
- mistral_tempest_tests/tests/api/v2/test_workflows.py - contains the tests checking Mistral API v2 related to workflows
- mistral_tempest_tests/tests/api/v2/test_actions.py - contains the tests checking Mistral API v2 related to actions
- and so on
python-mistralclient:
- mistralclient/tests/functional/cli/v2/ - contains test suites which check interaction with Mistral using CLI
To run integration tests:
- in OpenStack mode (when auth in Mistral is enabled and Mistral integrates with OpenStack components)
$ pip install git+http://git.opendev.org/openstack/tempest.git
$ nosetests mistral-tempest-plugin/mistral_tempest_tests/tests/api/v2
- in Non-OpenStack mode:
- set 'auth_enable=false' in the mistral.conf under [pecan] group
- restart Mistral server
- execute: ./run_functional_tests