Releasing ========= * Run the tests and ensure they all pass * If dependencies have changed, make sure ``debian/control`` is up to date * Make sure all patches in ``debian/patches`` still apply cleanly * Update CHANGELOG.rst * Update the version in ``cassandra/__init__.py`` * Commit the changelog and version changes * Tag the release. For example: ``git tag -a 1.0.0 -m 'version 1.0.0'`` * Push the commit and tag: ``git push --tags origin master`` * Upload the package to pypi:: python setup.py register python setup.py sdist upload * Update the docs (see below) * Append a 'post' string to the version tuple in ``cassandra/__init__.py`` so that it looks like ``(x, y, z, 'post')`` * Commit and push Building the Docs ================= Sphinx is required to build the docs. You probably want to install through apt, if possible:: sudo apt-get install python-sphinx pip may also work:: sudo pip install -U Sphinx To build the docs, run:: python setup.py doc To upload the docs, checkout the ``gh-pages`` branch (it's usually easier to clone a second copy of this repo and leave it on that branch) and copy the entire contents all of ``docs/_build/X.Y.Z/*`` into the root of the ``gh-pages`` branch and then push that branch to github. For example:: python setup.py doc cp -R docs/_build/1.0.0-beta1/* ~/python-driver-docs/ cd ~/python-driver-docs git add --all git commit -m 'Update docs' git push origin gh-pages Running the Tests ================= In order for the extensions to be built and used in the test, run:: python setup.py nosetests You can run a specific test module or package like so:: python setup.py nosetests -w tests/unit/ You can run a specific test method like so:: python setup.py nosetests -w tests/unit/test_connection.py:ConnectionTest.test_bad_protocol_version Seeing Test Logs in Real Time ----------------------------- Sometimes it's useful to output logs for the tests as they run:: python setup.py nosetests -w tests/unit/ --nocapture --nologcapture Use tee to capture logs and see them on your terminal:: python setup.py nosetests -w tests/unit/ --nocapture --nologcapture 2>&1 | tee test.log Specifying a Cassandra Version for Integration Tests ---------------------------------------------------- You can specify a cassandra version with the ``CASSANDRA_VERSION`` environment variable:: CASSANDRA_VERSION=2.0.9 python setup.py nosetests -w tests/integration/standard You can also specify a cassandra directory (to test unreleased versions):: CASSANDRA_DIR=/home/thobbs/cassandra python setup.py nosetests -w tests/integration/standard Specify a Protocol Version for Tests ------------------------------------ The protocol version defaults to 1 for cassandra 1.2 and 2 otherwise. You can explicitly set it with the ``PROTOCOL_VERSION`` environment variable:: PROTOCOL_VERSION=3 python setup.py nosetests -w tests/integration/standard Testing Multiple Python Versions -------------------------------- If you want to test all of python 2.6, 2.7, and pypy, use tox (this is what TravisCI runs):: tox By default, tox only runs the unit tests because I haven't put in the effort to get the integration tests to run on TravicCI. However, the integration tests should work locally. To run them, edit the following line in tox.ini:: commands = {envpython} setup.py build_ext --inplace nosetests --verbosity=2 tests/unit/ and change ``tests/unit/`` to ``tests/``. Running the Benchmarks ====================== To run the benchmarks, pick one of the files under the ``benchmarks/`` dir and run it:: python benchmarks/future_batches.py There are a few options. Use ``--help`` to see them all:: python benchmarks/future_batches.py --help