diff options
Diffstat (limited to 'docs/tests.rst')
-rw-r--r-- | docs/tests.rst | 76 |
1 files changed, 50 insertions, 26 deletions
diff --git a/docs/tests.rst b/docs/tests.rst index df9a3ef..e5dd269 100644 --- a/docs/tests.rst +++ b/docs/tests.rst @@ -1,59 +1,83 @@ Tests ===== -Run the unit tests ------------------- +.. image:: https://coveralls.io/repos/dpkp/kafka-python/badge.svg?branch=master&service=github + :target: https://coveralls.io/github/dpkp/kafka-python?branch=master +.. image:: https://travis-ci.org/dpkp/kafka-python.svg?branch=master + :target: https://travis-ci.org/dpkp/kafka-python -.. code:: bash +Test environments are managed via tox. The test suite is run via pytest. +Individual tests are written using unittest, pytest, and in some cases, +doctest. + +Linting is run via pylint, but is generally skipped on python2.6 and pypy +due to pylint compatibility / performance issues. + +For test coverage details, see https://coveralls.io/github/dpkp/kafka-python - tox +The test suite includes unit tests that mock network interfaces, as well as +integration tests that setup and teardown kafka broker (and zookeeper) +fixtures for client / consumer / producer testing. + + +Unit tests +------------------ +To run the tests locally, install tox -- `pip install tox` +See http://tox.readthedocs.org/en/latest/install.html -Run a subset of unit tests --------------------------- +Then simply run tox, optionally setting the python environment. +If unset, tox will loop through all environments. .. code:: bash + tox -e py27 + tox -e py35 + # run protocol tests only tox -- -v test.test_protocol - # test with pypy only - tox -e pypy + # re-run the last failing test, dropping into pdb + tox -e py27 -- --lf --pdb + + # see available (pytest) options + tox -e py27 -- --help - # Run only 1 test, and use python 2.7 - tox -e py27 -- -v --with-id --collect-only - # pick a test number from the list like #102 - tox -e py27 -- -v --with-id 102 +Integration tests +----------------- +.. code:: bash -Run the integration tests -------------------------- + KAFKA_VERSION=0.9.0.0 tox -e py27 + KAFKA_VERSION=0.8.2.2 tox -e py35 -The integration tests will actually start up real local Zookeeper -instance and Kafka brokers, and send messages in using the client. -First, get the kafka binaries for integration testing: +Integration tests start Kafka and Zookeeper fixtures. This requires downloading +kafka server binaries: .. code:: bash ./build_integration.sh -By default, the build_integration.sh script will download binary -distributions for all supported kafka versions. -To test against the latest source build, set KAFKA_VERSION=trunk -and optionally set SCALA_VERSION (defaults to 2.8.0, but 2.10.1 is recommended) +By default, this will install 0.8.1.1, 0.8.2.2, and 0.9.0.0 brokers into the +servers/ directory. To install a specific version, set `KAFKA_VERSION=1.2.3`: .. code:: bash - SCALA_VERSION=2.10.1 KAFKA_VERSION=trunk ./build_integration.sh + KAFKA_VERSION=0.8.0 ./build_integration.sh Then run the tests against supported Kafka versions, simply set the `KAFKA_VERSION` env variable to the server build you want to use for testing: .. code:: bash - KAFKA_VERSION=0.8.0 tox - KAFKA_VERSION=0.8.1 tox - KAFKA_VERSION=0.8.1.1 tox - KAFKA_VERSION=trunk tox + KAFKA_VERSION=0.9.0.0 tox -e py27 + +To test against the kafka source tree, set KAFKA_VERSION=trunk +[optionally set SCALA_VERSION (defaults to 2.10)] + +.. code:: bash + + SCALA_VERSION=2.11 KAFKA_VERSION=trunk ./build_integration.sh + KAFKA_VERSION=trunk tox -e py35 |