mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 17:12:03 +00:00
Merge pull request #4864 from vitlibar/test-format-schema-on-server
Add test checking using format schema via HTTP interface.
This commit is contained in:
commit
e3cee18b62
@ -17,6 +17,7 @@ import psycopg2
|
||||
import requests
|
||||
import base64
|
||||
import pymongo
|
||||
import urllib
|
||||
|
||||
import docker
|
||||
from docker.errors import ContainerError
|
||||
@ -482,6 +483,10 @@ class ClickHouseInstance:
|
||||
def get_query_request(self, *args, **kwargs):
|
||||
return self.client.get_query_request(*args, **kwargs)
|
||||
|
||||
# Connects to the instance via HTTP interface, sends a query and returns the answer
|
||||
def http_query(self, sql, data=None):
|
||||
return urllib.urlopen("http://"+self.ip_address+":8123/?query="+urllib.quote(sql,safe=''), data).read()
|
||||
|
||||
def restart_clickhouse(self, stop_start_wait_sec=5):
|
||||
if not self.stay_alive:
|
||||
raise Exception("clickhouse can be restarted only with stay_alive=True instance")
|
||||
|
@ -0,0 +1,6 @@
|
||||
syntax = "proto3";
|
||||
|
||||
message KeyValuePair {
|
||||
uint64 key = 1;
|
||||
string value = 2;
|
||||
}
|
40
dbms/tests/integration/test_format_schema_on_server/test.py
Normal file
40
dbms/tests/integration/test_format_schema_on_server/test.py
Normal file
@ -0,0 +1,40 @@
|
||||
import pytest
|
||||
from helpers.cluster import ClickHouseCluster
|
||||
|
||||
cluster = ClickHouseCluster(__file__)
|
||||
instance = cluster.add_instance('instance',
|
||||
clickhouse_path_dir='clickhouse_path')
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def started_cluster():
|
||||
try:
|
||||
cluster.start()
|
||||
instance.query('CREATE DATABASE test')
|
||||
yield cluster
|
||||
|
||||
finally:
|
||||
cluster.shutdown()
|
||||
|
||||
|
||||
def create_simple_table():
|
||||
instance.query("DROP TABLE IF EXISTS test.simple")
|
||||
instance.query('''
|
||||
CREATE TABLE test.simple (key UInt64, value String)
|
||||
ENGINE = MergeTree ORDER BY tuple();
|
||||
''')
|
||||
|
||||
|
||||
def test_protobuf_format_input(started_cluster):
|
||||
create_simple_table()
|
||||
instance.http_query(
|
||||
"INSERT INTO test.simple FORMAT Protobuf SETTINGS format_schema='simple:KeyValuePair'",
|
||||
"\x07\x08\x01\x12\x03abc\x07\x08\x02\x12\x03def")
|
||||
assert instance.query("SELECT * from test.simple") == "1\tabc\n2\tdef\n"
|
||||
|
||||
|
||||
def test_protobuf_format_output(started_cluster):
|
||||
create_simple_table()
|
||||
instance.query("INSERT INTO test.simple VALUES (1, 'abc'), (2, 'def')");
|
||||
assert instance.http_query("SELECT * FROM test.simple FORMAT Protobuf SETTINGS format_schema='simple:KeyValuePair'") == \
|
||||
"\x07\x08\x01\x12\x03abc\x07\x08\x02\x12\x03def"
|
Loading…
Reference in New Issue
Block a user