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:
2018-03-16 01:15:50 +00:00
* Ubuntu 14.04 (Trusty) or higher.
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` .
2018-01-12 18:14:54 +00:00
You must install latest Docker from
https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository
Don't use Docker from your system repository.
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`
2018-05-14 11:10:07 +00:00
* [docker-compose ](https://docs.docker.com/compose/ ) and additional python libraries. To install: `sudo -H pip install docker-compose docker dicttoxml kazoo PyMySQL`
2017-05-19 18:54:05 +00:00
2018-05-25 18:13:48 +00:00
If you want install on modern debian/ubuntu: `sudo apt install -y docker docker-compose python-pytest python-dicttoxml python-docker python-pymysql python-kazoo`
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.
2018-01-12 18:14:54 +00:00
(You must close all your sessions (for example, restart your computer))
To check, that you have access to Docker, run `docker ps` .
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.