Merge pull request #36977 from ClickHouse/clickhouse_test_secure

Support secure connection in clickhouse-test
This commit is contained in:
Alexander Tokmakov 2022-05-09 19:02:04 +03:00 committed by GitHub
commit 32157285b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 10 deletions

View File

@ -86,9 +86,14 @@ class HTTPError(Exception):
def clickhouse_execute_http( def clickhouse_execute_http(
base_args, query, timeout=30, settings=None, default_format=None base_args, query, timeout=30, settings=None, default_format=None
): ):
client = http.client.HTTPConnection( if args.secure:
host=base_args.tcp_host, port=base_args.http_port, timeout=timeout client = http.client.HTTPSConnection(
) host=base_args.tcp_host, port=base_args.http_port, timeout=timeout
)
else:
client = http.client.HTTPConnection(
host=base_args.tcp_host, port=base_args.http_port, timeout=timeout
)
timeout = int(timeout) timeout = int(timeout)
params = { params = {
@ -921,6 +926,7 @@ class TestCase:
"test": self.case_file, "test": self.case_file,
"stdout": self.stdout_file, "stdout": self.stdout_file,
"stderr": self.stderr_file, "stderr": self.stderr_file,
"secure": "--secure" if args.secure else ""
} }
# >> append to stderr (but not stdout since it is not used there), # >> append to stderr (but not stdout since it is not used there),
@ -932,7 +938,7 @@ class TestCase:
if self.ext == ".sql": if self.ext == ".sql":
pattern = ( pattern = (
"{client} --send_logs_level={logs_level} --multiquery {options} < " "{client} --send_logs_level={logs_level} {secure} --multiquery {options} < "
+ pattern + pattern
) )
@ -1252,7 +1258,11 @@ class TestSuite:
@staticmethod @staticmethod
def read_test_suite(args, suite_dir_name: str): def read_test_suite(args, suite_dir_name: str):
def is_data_present(): def is_data_present():
return int(clickhouse_execute(args, "EXISTS TABLE test.hits")) try:
return int(clickhouse_execute(args, "EXISTS TABLE test.hits"))
except Exception as e:
print("Cannot check if dataset is available, assuming it's not: ", str(e))
return False
base_dir = os.path.abspath(args.queries) base_dir = os.path.abspath(args.queries)
tmp_dir = os.path.abspath(args.tmp) tmp_dir = os.path.abspath(args.tmp)
@ -1417,7 +1427,7 @@ def run_tests_array(all_tests_with_params: Tuple[List[str], int, TestSuite]):
stop_tests() stop_tests()
raise e raise e
if failures_chain >= 20: if failures_chain >= args.max_failures_chain:
stop_tests() stop_tests()
break break
@ -2049,6 +2059,18 @@ if __name__ == "__main__":
help="Run tests for further backwoard compatibility testing by ignoring all" help="Run tests for further backwoard compatibility testing by ignoring all"
"drop queries in tests for collecting data from new version of server", "drop queries in tests for collecting data from new version of server",
) )
parser.add_argument(
"--secure",
action="store_true",
default=False,
help="Use secure connection to connect to clickhouse-server",
)
parser.add_argument(
"--max-failures-chain",
default=20,
type=int,
help="Max number of failed tests in a row (stop tests if higher)",
)
args = parser.parse_args() args = parser.parse_args()
if args.queries and not os.path.isdir(args.queries): if args.queries and not os.path.isdir(args.queries):
@ -2126,13 +2148,18 @@ if __name__ == "__main__":
args.tcp_port = int(tcp_port) args.tcp_port = int(tcp_port)
args.client += f" --port={tcp_port}" args.client += f" --port={tcp_port}"
else: else:
args.tcp_port = 9000 args.tcp_port = 9440 if args.secure else 9000
if args.secure:
os.environ["CLICKHOUSE_PORT_TCP"] = str(args.tcp_port)
http_port = os.getenv("CLICKHOUSE_PORT_HTTP") http_port = os.getenv("CLICKHOUSE_PORT_HTTP")
if http_port is not None: if http_port is not None:
args.http_port = int(http_port) args.http_port = int(http_port)
else: else:
args.http_port = 8123 args.http_port = 8443 if args.secure else 8123
os.environ["CLICKHOUSE_PORT_HTTP"] = str(args.http_port)
if args.secure and os.getenv("CLICKHOUSE_PORT_HTTP_PROTO") is None:
os.environ["CLICKHOUSE_PORT_HTTP_PROTO"] = "https"
client_database = os.getenv("CLICKHOUSE_DATABASE") client_database = os.getenv("CLICKHOUSE_DATABASE")
if client_database is not None: if client_database is not None:
@ -2144,7 +2171,7 @@ if __name__ == "__main__":
if args.backward_compatibility_check: if args.backward_compatibility_check:
args.client += " --fake-drop" args.client += " --fake-drop"
if args.client_option: if args.client_option or args.secure:
# Set options for client # Set options for client
if "CLICKHOUSE_CLIENT_OPT" in os.environ: if "CLICKHOUSE_CLIENT_OPT" in os.environ:
os.environ["CLICKHOUSE_CLIENT_OPT"] += " " os.environ["CLICKHOUSE_CLIENT_OPT"] += " "
@ -2152,6 +2179,8 @@ if __name__ == "__main__":
os.environ["CLICKHOUSE_CLIENT_OPT"] = "" os.environ["CLICKHOUSE_CLIENT_OPT"] = ""
os.environ["CLICKHOUSE_CLIENT_OPT"] += get_additional_client_options(args) os.environ["CLICKHOUSE_CLIENT_OPT"] += get_additional_client_options(args)
if args.secure:
os.environ["CLICKHOUSE_CLIENT_OPT"] += " --secure "
# Set options for curl # Set options for curl
if "CLICKHOUSE_URL_PARAMS" in os.environ: if "CLICKHOUSE_URL_PARAMS" in os.environ:

View File

@ -76,7 +76,7 @@ export CLICKHOUSE_PORT_POSTGRESQL=${CLICKHOUSE_PORT_POSTGRESQL:="9005"}
export CLICKHOUSE_PORT_KEEPER=${CLICKHOUSE_PORT_KEEPER:=$(${CLICKHOUSE_EXTRACT_CONFIG} --try --key=keeper_server.tcp_port 2>/dev/null)} 2>/dev/null export CLICKHOUSE_PORT_KEEPER=${CLICKHOUSE_PORT_KEEPER:=$(${CLICKHOUSE_EXTRACT_CONFIG} --try --key=keeper_server.tcp_port 2>/dev/null)} 2>/dev/null
export CLICKHOUSE_PORT_KEEPER=${CLICKHOUSE_PORT_KEEPER:="9181"} export CLICKHOUSE_PORT_KEEPER=${CLICKHOUSE_PORT_KEEPER:="9181"}
export CLICKHOUSE_CLIENT_SECURE=${CLICKHOUSE_CLIENT_SECURE:=$(echo "${CLICKHOUSE_CLIENT}" | sed 's/'"--port=${CLICKHOUSE_PORT_TCP}"'//g; s/$/'"--secure --port=${CLICKHOUSE_PORT_TCP_SECURE}"'/g')} export CLICKHOUSE_CLIENT_SECURE=${CLICKHOUSE_CLIENT_SECURE:=$(echo "${CLICKHOUSE_CLIENT}" | sed 's/--secure //' | sed 's/'"--port=${CLICKHOUSE_PORT_TCP}"'//g; s/$/'"--secure --port=${CLICKHOUSE_PORT_TCP_SECURE}"'/g')}
# Add database and log comment to url params # Add database and log comment to url params
if [ -v CLICKHOUSE_URL_PARAMS ] if [ -v CLICKHOUSE_URL_PARAMS ]