mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Add a stateless test for gRPC protocol.
This commit is contained in:
parent
32b9f7940f
commit
355a56d1b0
@ -86,6 +86,7 @@ RUN curl -L --no-verbose -O 'https://archive.apache.org/dist/hadoop/common/hadoo
|
|||||||
ENV MINIO_ROOT_USER="clickhouse"
|
ENV MINIO_ROOT_USER="clickhouse"
|
||||||
ENV MINIO_ROOT_PASSWORD="clickhouse"
|
ENV MINIO_ROOT_PASSWORD="clickhouse"
|
||||||
ENV EXPORT_S3_STORAGE_POLICIES=1
|
ENV EXPORT_S3_STORAGE_POLICIES=1
|
||||||
|
ENV CLICKHOUSE_GRPC_CLIENT="/usr/share/clickhouse-utils/grpc-client/clickhouse-grpc-client.py"
|
||||||
|
|
||||||
RUN npm install -g azurite@3.30.0 \
|
RUN npm install -g azurite@3.30.0 \
|
||||||
&& npm install -g tslib && npm install -g node
|
&& npm install -g tslib && npm install -g node
|
||||||
|
@ -8,6 +8,7 @@ cryptography==3.4.8
|
|||||||
dbus-python==1.2.18
|
dbus-python==1.2.18
|
||||||
distro==1.7.0
|
distro==1.7.0
|
||||||
docutils==0.17.1
|
docutils==0.17.1
|
||||||
|
grpcio==1.47.0
|
||||||
gyp==0.1
|
gyp==0.1
|
||||||
httplib2==0.20.2
|
httplib2==0.20.2
|
||||||
idna==3.3
|
idna==3.3
|
||||||
@ -28,6 +29,7 @@ packaging==24.1
|
|||||||
pandas==1.5.3
|
pandas==1.5.3
|
||||||
pip==24.1.1
|
pip==24.1.1
|
||||||
pipdeptree==2.23.0
|
pipdeptree==2.23.0
|
||||||
|
protobuf==4.25.3
|
||||||
pyarrow==15.0.0
|
pyarrow==15.0.0
|
||||||
pyasn1==0.4.8
|
pyasn1==0.4.8
|
||||||
PyJWT==2.3.0
|
PyJWT==2.3.0
|
||||||
|
@ -106,6 +106,7 @@ def get_run_command(
|
|||||||
f"docker run --volume={builds_path}:/package_folder "
|
f"docker run --volume={builds_path}:/package_folder "
|
||||||
f"{ci_logs_args}"
|
f"{ci_logs_args}"
|
||||||
f"--volume={repo_path}/tests:/usr/share/clickhouse-test "
|
f"--volume={repo_path}/tests:/usr/share/clickhouse-test "
|
||||||
|
f"--volume={repo_path}/utils/grpc-client:/usr/share/clickhouse-utils/grpc-client "
|
||||||
f"{volume_with_broken_test}"
|
f"{volume_with_broken_test}"
|
||||||
f"--volume={result_path}:/test_output "
|
f"--volume={result_path}:/test_output "
|
||||||
f"--volume={server_log_path}:/var/log/clickhouse-server "
|
f"--volume={server_log_path}:/var/log/clickhouse-server "
|
||||||
|
3
tests/config/config.d/grpc_protocol.xml
Normal file
3
tests/config/config.d/grpc_protocol.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<grpc_port>9100</grpc_port>
|
||||||
|
</clickhouse>
|
@ -27,6 +27,7 @@ ln -sf $SRC_PATH/config.d/secure_ports.xml $DEST_SERVER_PATH/config.d/
|
|||||||
ln -sf $SRC_PATH/config.d/clusters.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/clusters.xml $DEST_SERVER_PATH/config.d/
|
||||||
ln -sf $SRC_PATH/config.d/graphite.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/graphite.xml $DEST_SERVER_PATH/config.d/
|
||||||
ln -sf $SRC_PATH/config.d/graphite_alternative.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/graphite_alternative.xml $DEST_SERVER_PATH/config.d/
|
||||||
|
ln -sf $SRC_PATH/config.d/grpc_protocol.xml $DEST_SERVER_PATH/config.d/
|
||||||
ln -sf $SRC_PATH/config.d/database_atomic.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/database_atomic.xml $DEST_SERVER_PATH/config.d/
|
||||||
ln -sf $SRC_PATH/config.d/max_concurrent_queries.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/max_concurrent_queries.xml $DEST_SERVER_PATH/config.d/
|
||||||
ln -sf $SRC_PATH/config.d/merge_tree_settings.xml $DEST_SERVER_PATH/config.d/
|
ln -sf $SRC_PATH/config.d/merge_tree_settings.xml $DEST_SERVER_PATH/config.d/
|
||||||
|
1
tests/queries/0_stateless/03203_grpc_protocol.reference
Normal file
1
tests/queries/0_stateless/03203_grpc_protocol.reference
Normal file
@ -0,0 +1 @@
|
|||||||
|
ok
|
14
tests/queries/0_stateless/03203_grpc_protocol.sh
Executable file
14
tests/queries/0_stateless/03203_grpc_protocol.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Tags: no-fasttest
|
||||||
|
# Tag no-fasttest: In fasttest, ENABLE_LIBRARIES=0, so the grpc library is not built
|
||||||
|
|
||||||
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
|
# shellcheck source=../shell_config.sh
|
||||||
|
. "$CURDIR"/../shell_config.sh
|
||||||
|
|
||||||
|
if [[ -z "$CLICKHOUSE_GRPC_CLIENT" ]]; then
|
||||||
|
CLICKHOUSE_GRPC_CLIENT="$CURDIR/../../../utils/grpc-client/clickhouse-grpc-client.py"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Simple test.
|
||||||
|
$CLICKHOUSE_GRPC_CLIENT --query "SELECT 'ok'"
|
52
utils/grpc-client/generate_pb2.py
Executable file
52
utils/grpc-client/generate_pb2.py
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# This is a helper utility.
|
||||||
|
# It generates files in the "pb2" folder using the protocol buffer compiler.
|
||||||
|
# This script must be called manually after any change pf "clickhouse_grpc.proto"
|
||||||
|
|
||||||
|
import grpc_tools # pip3 install grpcio-tools
|
||||||
|
|
||||||
|
import os, shutil, subprocess
|
||||||
|
|
||||||
|
|
||||||
|
# Settings.
|
||||||
|
script_path = os.path.realpath(__file__)
|
||||||
|
script_name = os.path.basename(script_path)
|
||||||
|
script_dir = os.path.dirname(script_path)
|
||||||
|
root_dir = os.path.abspath(os.path.join(script_dir, "../.."))
|
||||||
|
|
||||||
|
grpc_proto_dir = os.path.abspath(os.path.join(root_dir, "src/Server/grpc_protos"))
|
||||||
|
grpc_proto_filename = "clickhouse_grpc.proto"
|
||||||
|
|
||||||
|
# Files in the "pb2" folder which will be generated by this script.
|
||||||
|
pb2_filenames = ["clickhouse_grpc_pb2.py", "clickhouse_grpc_pb2_grpc.py"]
|
||||||
|
pb2_dir = os.path.join(script_dir, "pb2")
|
||||||
|
|
||||||
|
|
||||||
|
# Processes the protobuf schema with the protocol buffer compiler and generates the "pb2" folder.
|
||||||
|
def generate_pb2():
|
||||||
|
print(f"Generating files:")
|
||||||
|
for pb2_filename in pb2_filenames:
|
||||||
|
print(os.path.join(pb2_dir, pb2_filename))
|
||||||
|
|
||||||
|
os.makedirs(pb2_dir, exist_ok=True)
|
||||||
|
|
||||||
|
cmd = [
|
||||||
|
"python3",
|
||||||
|
"-m",
|
||||||
|
"grpc_tools.protoc",
|
||||||
|
"-I" + grpc_proto_dir,
|
||||||
|
"--python_out=" + pb2_dir,
|
||||||
|
"--grpc_python_out=" + pb2_dir,
|
||||||
|
os.path.join(grpc_proto_dir, grpc_proto_filename),
|
||||||
|
]
|
||||||
|
subprocess.run(cmd)
|
||||||
|
|
||||||
|
for pb2_filename in pb2_filenames:
|
||||||
|
assert os.path.exists(os.path.join(pb2_dir, pb2_filename))
|
||||||
|
print("Done! (generate_pb2)")
|
||||||
|
|
||||||
|
|
||||||
|
# MAIN
|
||||||
|
if __name__ == "__main__":
|
||||||
|
generate_pb2()
|
@ -1,29 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import grpc_tools # pip3 install grpcio-tools
|
|
||||||
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
||||||
dest_dir = script_dir
|
|
||||||
src_dir = os.path.abspath(os.path.join(script_dir, "../../../src/Server/grpc_protos"))
|
|
||||||
src_filename = "clickhouse_grpc.proto"
|
|
||||||
|
|
||||||
|
|
||||||
def generate():
|
|
||||||
cmd = [
|
|
||||||
"python3",
|
|
||||||
"-m",
|
|
||||||
"grpc_tools.protoc",
|
|
||||||
"-I" + src_dir,
|
|
||||||
"--python_out=" + dest_dir,
|
|
||||||
"--grpc_python_out=" + dest_dir,
|
|
||||||
os.path.join(src_dir, src_filename),
|
|
||||||
]
|
|
||||||
subprocess.run(cmd)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
generate()
|
|
Loading…
Reference in New Issue
Block a user