mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
import os
|
|
import pytest
|
|
|
|
from helpers.cluster import ClickHouseCluster
|
|
|
|
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
config_dir = os.path.join(SCRIPT_DIR, './configs')
|
|
DICTIONARY_FILES = [
|
|
'configs/dictionaries/FileSourceConfig.xml',
|
|
'configs/dictionaries/ExecutableSourceConfig.xml',
|
|
'configs/dictionaries/source.csv',
|
|
'configs/dictionaries/HTTPSourceConfig.xml',
|
|
'configs/dictionaries/ClickHouseSourceConfig.xml'
|
|
]
|
|
|
|
cluster = ClickHouseCluster(__file__, base_configs_dir=config_dir)
|
|
instance = cluster.add_instance('node', main_configs=DICTIONARY_FILES, config_dir=config_dir)
|
|
|
|
def prepare():
|
|
node = instance
|
|
path = "/source.csv"
|
|
|
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
node.copy_file_to_container(os.path.join(script_dir, './http_server.py'), '/http_server.py')
|
|
node.copy_file_to_container(os.path.join(script_dir, 'configs/dictionaries/source.csv'), './source.csv')
|
|
node.exec_in_container([
|
|
"bash",
|
|
"-c",
|
|
"python2 /http_server.py --data-path={tbl} --schema=http --host=localhost --port=5555".format(
|
|
tbl=path)
|
|
], detach=True)
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def start_cluster():
|
|
try:
|
|
cluster.start()
|
|
prepare()
|
|
yield cluster
|
|
finally:
|
|
cluster.shutdown()
|
|
|
|
def test_work(start_cluster):
|
|
query = instance.query
|
|
|
|
assert query("SELECT dictGetString('test_file', 'first', toUInt64(1))") == "\\\'a\n"
|
|
assert query("SELECT dictGetString('test_file', 'second', toUInt64(1))") == "\"b\n"
|
|
assert query("SELECT dictGetString('test_executable', 'first', toUInt64(1))") == "\\\'a\n"
|
|
assert query("SELECT dictGetString('test_executable', 'second', toUInt64(1))") == "\"b\n"
|
|
|
|
caught_exception = ''
|
|
try:
|
|
instance.query("CREATE TABLE source (id UInt64, first String, second String, third String) ENGINE=TinyLog;")
|
|
instance.query("INSERT INTO default.source VALUES (1, 'aaa', 'bbb', 'cccc'), (2, 'ddd', 'eee', 'fff')")
|
|
instance.query("SELECT dictGetString('test_clickhouse', 'second', toUInt64(1))")
|
|
except Exception as e:
|
|
caught_exception = str(e)
|
|
|
|
assert caught_exception.find("Limit for result exceeded") != -1
|
|
|
|
assert query("SELECT dictGetString('test_http', 'first', toUInt64(1))") == "\\\'a\n"
|
|
assert query("SELECT dictGetString('test_http', 'second', toUInt64(1))") == "\"b\n" |