mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Straighten the ODBC integration test somewhat.
This commit is contained in:
parent
dac83d2f9a
commit
8b754fdcde
@ -86,13 +86,23 @@ test_odbc_interaction/test.py ...... [100%]
|
||||
You can just open shell inside a container by overwritting the command:
|
||||
./runner --command=bash
|
||||
|
||||
### Rebuilding the docker containers
|
||||
|
||||
The main container used for integration tests lives in `docker/test/integration/Dockerfile`. Rebuild it with
|
||||
```
|
||||
cd docker/test/integration
|
||||
docker build -t yandex/clickhouse-integration-test .
|
||||
```
|
||||
|
||||
The helper container used by the `runner` script is in `dbms/tests/integration/image/Dockerfile`.
|
||||
|
||||
### 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:
|
||||
* Launching a ClickHouse cluster with or without ZooKeeper indocker containers.
|
||||
* Launching a ClickHouse cluster with or without ZooKeeper in docker containers.
|
||||
* Sending queries to launched instances.
|
||||
* Introducing network failures such as severing network link between two instances.
|
||||
|
||||
|
@ -13,6 +13,7 @@ import urllib
|
||||
import xml.dom.minidom
|
||||
import logging
|
||||
import docker
|
||||
import pprint
|
||||
import psycopg2
|
||||
import pymongo
|
||||
import pymysql
|
||||
@ -302,6 +303,7 @@ class ClickHouseCluster:
|
||||
print "Can't connect to MySQL " + str(ex)
|
||||
time.sleep(0.5)
|
||||
|
||||
subprocess_call(['docker-compose', 'ps', '--services', '--all'])
|
||||
raise Exception("Cannot wait MySQL container")
|
||||
|
||||
def wait_postgres_to_start(self, timeout=60):
|
||||
@ -705,7 +707,16 @@ class ClickHouseInstance:
|
||||
output = output.decode('utf8')
|
||||
exit_code = self.docker_client.api.exec_inspect(exec_id)['ExitCode']
|
||||
if exit_code:
|
||||
raise Exception('Cmd "{}" failed! Return code {}. Output: {}'.format(' '.join(cmd), exit_code, output))
|
||||
container_info = self.docker_client.api.inspect_container(container.id)
|
||||
image_id = container_info.get('Image')
|
||||
image_info = self.docker_client.api.inspect_image(image_id)
|
||||
print("Command failed in container {}: ".format(container.id))
|
||||
pprint.pprint(container_info)
|
||||
print("")
|
||||
print("Container {} uses image {}: ".format(container.id, image_id))
|
||||
pprint.pprint(image_info)
|
||||
print("")
|
||||
raise Exception('Cmd "{}" failed in container {}. Return code {}. Output: {}'.format(' '.join(cmd), container.id, exit_code, output))
|
||||
return output
|
||||
|
||||
def contains_in_log(self, substring):
|
||||
|
@ -20,6 +20,11 @@ def check_args_and_update_paths(args):
|
||||
if not os.path.isabs(args.binary):
|
||||
args.binary = os.path.abspath(os.path.join(CURRENT_WORK_DIR, args.binary))
|
||||
|
||||
if not args.bridge_binary:
|
||||
args.bridge_binary = os.path.join(os.path.dirname(args.binary), 'clickhouse-odbc-bridge')
|
||||
elif not os.path.isabs(args.bridge_binary):
|
||||
args.bridge_binary = os.path.abspath(os.path.join(CURRENT_WORK_DIR, args.bridge_binary))
|
||||
|
||||
if not os.path.isabs(args.configs_dir):
|
||||
args.configs_dir = os.path.abspath(os.path.join(CURRENT_WORK_DIR, args.configs_dir))
|
||||
|
||||
@ -47,8 +52,8 @@ if __name__ == "__main__":
|
||||
|
||||
parser.add_argument(
|
||||
"--bridge-binary",
|
||||
default=os.environ.get("CLICKHOUSE_TESTS_ODBC_BRIDGE_BIN_PATH", "/usr/bin/clickhouse-odbc-bridge"),
|
||||
help="Path to clickhouse-odbc-bridge binary")
|
||||
default=os.environ.get("CLICKHOUSE_TESTS_ODBC_BRIDGE_BIN_PATH", ""),
|
||||
help="Path to clickhouse-odbc-bridge binary. Defaults to clickhouse-odbc-bridge in the same dir as clickhouse.")
|
||||
|
||||
parser.add_argument(
|
||||
"--configs-dir",
|
||||
@ -106,5 +111,5 @@ if __name__ == "__main__":
|
||||
command=args.command
|
||||
)
|
||||
|
||||
#print(cmd)
|
||||
print("Running pytest container as: '" + cmd + "'.")
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
|
@ -10,7 +10,7 @@ from helpers.cluster import ClickHouseCluster
|
||||
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
cluster = ClickHouseCluster(__file__, base_configs_dir=os.path.join(SCRIPT_DIR, 'configs'))
|
||||
node1 = cluster.add_instance('node1', with_odbc_drivers=True, with_mysql=True, image='alesapin/ubuntu_with_odbc', main_configs=['configs/dictionaries/sqlite3_odbc_hashed_dictionary.xml', 'configs/dictionaries/sqlite3_odbc_cached_dictionary.xml', 'configs/dictionaries/postgres_odbc_hashed_dictionary.xml'], stay_alive=True)
|
||||
node1 = cluster.add_instance('node1', with_odbc_drivers=True, with_mysql=True, image='yandex/clickhouse-integration-test', main_configs=['configs/dictionaries/sqlite3_odbc_hashed_dictionary.xml', 'configs/dictionaries/sqlite3_odbc_cached_dictionary.xml', 'configs/dictionaries/postgres_odbc_hashed_dictionary.xml'], stay_alive=True)
|
||||
|
||||
create_table_sql_template = """
|
||||
CREATE TABLE `clickhouse`.`{}` (
|
||||
|
Loading…
Reference in New Issue
Block a user