2017-05-19 18:54:05 +00:00
|
|
|
## ClickHouse integration tests
|
|
|
|
|
|
|
|
This directory contains tests that involve several ClickHouse instances, custom configs, ZooKeeper, etc.
|
|
|
|
|
|
|
|
### Running
|
|
|
|
|
|
|
|
Prerequisites:
|
2017-05-29 19:05:36 +00:00
|
|
|
* Ubuntu 14.04 (Trusty).
|
2017-05-19 18:54:05 +00:00
|
|
|
* [docker](https://www.docker.com/community-edition#/download). Minimum required API version: 1.25, check with `docker version`.
|
2017-05-23 13:57:38 +00:00
|
|
|
* [pip](https://pypi.python.org/pypi/pip). To install: `sudo apt-get install python-pip`
|
2017-05-30 11:49:17 +00:00
|
|
|
* [py.test](https://docs.pytest.org/) testing framework. To install: `sudo -H pip install pytest`
|
|
|
|
* [docker-compose](https://docs.docker.com/compose/) and additional python libraries. To install: `sudo -H pip install docker-compose docker dicttoxml`
|
2017-05-19 18:54:05 +00:00
|
|
|
|
2017-05-23 14:27:18 +00:00
|
|
|
If you want to run the tests under a non-privileged user, you must add this user to `docker` group: `sudo usermod -aG docker $USER` and re-login.
|
2017-05-19 18:54:05 +00:00
|
|
|
|
|
|
|
Run the tests with the `pytest` command. To select which tests to run, use: `pytest -k <test_name_pattern>`
|
|
|
|
|
|
|
|
By default tests are run with system-wide client binary, server binary and base configs. To change that,
|
|
|
|
set the following environment variables:
|
|
|
|
* `CLICKHOUSE_TESTS_SERVER_BIN_PATH` to choose the server binary.
|
|
|
|
* `CLICKHOUSE_TESTS_CLIENT_BIN_PATH` to choose the client binary.
|
|
|
|
* `CLICKHOUSE_TESTS_BASE_CONFIG_DIR` to choose the directory from which base configs (`config.xml` and
|
|
|
|
`users.xml`) are taken.
|
|
|
|
|
|
|
|
### Adding new tests
|
|
|
|
|
|
|
|
To add new test named `foo`, create a directory `test_foo` with an empty `__init__.py` and a file
|
|
|
|
named `test.py` containing tests in it. All functions with names starting with `test` will become test cases.
|
|
|
|
|
|
|
|
`helpers` directory contains utilities for:
|
2017-05-30 11:49:17 +00:00
|
|
|
* Launching a ClickHouse cluster with or without ZooKeeper indocker containers.
|
2017-05-19 18:54:05 +00:00
|
|
|
* Sending queries to launched instances.
|
|
|
|
* Introducing network failures such as severing network link between two instances.
|
|
|
|
|
|
|
|
To assert that two TSV files must be equal, wrap them in the `TSV` class and use the regular `assert`
|
|
|
|
statement. Example: `assert TSV(result) == TSV(reference)`. In case the assertion fails, `pytest`
|
|
|
|
will automagically detect the types of variables and only the small diff of two files is printed.
|