
* Problem: BigchainDB config has stale/deprecated parameters - Remove `keyring` and `keypair` from config - Update tests - Add `tendermint` config * Fix flake8 * Update some naming conventions and redundant changes * Remove redundant routine `fast_query` * Remove deprecated parameters and descriptions * remove some more unwanted code * Problem: Two flake8 errors made Travis fail Solution: Fix the two flake8 errors * Address comments - Remove reference of nodes_except_me and me_private and me as attributes of BigchainDB instances - Update and re-add test(s) - Do not introduce `tendermint` in configuration instead handle that in a separate PR along with docs * Address comments - Remove tests that are already covered with 2.0 - Remove tests that are no longer relevant - Add TODO for more cleanup * Remove tendermint config from configure command
BigchainDB Server Tests
The tests/ Folder
The tests/
folder is where all the tests for BigchainDB Server live. Most of them are unit tests. Integration tests are in the tests/integration/
folder.
A few notes:
tests/common/
contains self-contained tests only testingbigchaindb/common/
tests/backend/
contains tests requiring the database backend (MongoDB)
Writing Tests
We write unit and integration tests for our Python code using the pytest framework. You can use the tests in the tests/
folder as templates or examples.
Running Tests
Running Tests Directly
If you installed BigchainDB Server using pip install bigchaindb
, then you
didn't install the tests. Before you can run all the tests, you must install
BigchainDB from source. The CONTRIBUTING.md
file has
instructions for how to do that.
Next, make sure you have Local MongoDB running in the background. You
can run MongoDB using mongod
.
The pytest
command has many options. If you want to learn about all the
things you can do with pytest, see the pytest
documentation. We've also added a customization to
pytest:
--database-backend
: Defines the backend to use for the tests. It defaults to
localmongodb
.
Now you can run all tests using:
pytest -v
or, if that doesn't work, try:
python -m pytest -v
or:
python setup.py test
How does python setup.py test
work? The documentation for pytest-runner explains.
The pytest
command has many options. If you want to learn about all the things you can do with pytest, see the pytest documentation. We've also added a customization to pytest:
Running Tests with Docker Compose
You can also use Docker Compose to run all the tests.
First, bring up all the services BigchainDB, MongoDB, Tendermint in the background:
$ docker-compose up -d bdb
then run the tests using:
$ docker-compose run --rm --no-deps bigchaindb pytest -v
Automated Testing of All Pull Requests
We use Travis CI, so that whenever someone creates a new BigchainDB pull request on GitHub, Travis CI gets the new code and does a bunch of stuff. We use the same docker-compose.yml
for tests. It tells Travis CI how to install BigchainDB, how to run all the tests, and what to do "after success" (e.g. run codecov
). (We use Codecov to get a rough estimate of our test coverage.)
Tox
We use tox to run multiple suites of tests against multiple environments during automated testing. Generally you don't need to run this yourself, but it might be useful when troubleshooting a failing Travis CI build.
To run all the tox tests, use:
tox
or:
python -m tox
To run only a few environments, use the -e
flag:
tox -e {ENVLIST}
where {ENVLIST}
is one or more of the environments specified in the tox.ini file.