mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12: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_PASSWORD="clickhouse"
|
||||
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 \
|
||||
&& npm install -g tslib && npm install -g node
|
||||
|
@ -8,6 +8,7 @@ cryptography==3.4.8
|
||||
dbus-python==1.2.18
|
||||
distro==1.7.0
|
||||
docutils==0.17.1
|
||||
grpcio==1.47.0
|
||||
gyp==0.1
|
||||
httplib2==0.20.2
|
||||
idna==3.3
|
||||
@ -28,6 +29,7 @@ packaging==24.1
|
||||
pandas==1.5.3
|
||||
pip==24.1.1
|
||||
pipdeptree==2.23.0
|
||||
protobuf==4.25.3
|
||||
pyarrow==15.0.0
|
||||
pyasn1==0.4.8
|
||||
PyJWT==2.3.0
|
||||
|
@ -106,6 +106,7 @@ def get_run_command(
|
||||
f"docker run --volume={builds_path}:/package_folder "
|
||||
f"{ci_logs_args}"
|
||||
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={result_path}:/test_output "
|
||||
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/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/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/max_concurrent_queries.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