mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-28 10:31:57 +00:00
128 lines
3.9 KiB
Python
Executable File
128 lines
3.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import requests
|
|
import argparse
|
|
|
|
# CREATE TABLE test_suites
|
|
# (
|
|
# sha String,
|
|
# pr UInt16,
|
|
# suite String,
|
|
# errors UInt16,
|
|
# failures UInt16,
|
|
# hostname String,
|
|
# skipped UInt16,
|
|
# duration Double,
|
|
# timestamp DateTime
|
|
# ) ENGINE = MergeTree ORDER BY tuple(timestamp, suite);
|
|
|
|
QUERY_SUITES="INSERT INTO test_suites "\
|
|
"SELECT '{sha}' AS sha, "\
|
|
"{pr} AS pr, "\
|
|
"suite, "\
|
|
"errors, "\
|
|
"failures, "\
|
|
"hostname, "\
|
|
"skipped, "\
|
|
"duration, "\
|
|
"timestamp "\
|
|
"FROM input('"\
|
|
"suite String, "\
|
|
"errors UInt16, "\
|
|
"failures UInt16, "\
|
|
"hostname String, "\
|
|
"skipped UInt16, "\
|
|
"duration Double, "\
|
|
"timestamp DateTime"\
|
|
"') FORMAT JSONEachRow"
|
|
|
|
# CREATE TABLE test_cases
|
|
# (
|
|
# sha String,
|
|
# pr UInt16,
|
|
# hostname String,
|
|
# suite String,
|
|
# timestamp DateTime,
|
|
# testname String,
|
|
# classname String,
|
|
# file String,
|
|
# line UInt16,
|
|
# duration Double,
|
|
# suite_duration Double,
|
|
# stderr String,
|
|
# stdout String
|
|
# ) ENGINE = MergeTree ORDER BY tuple(timestamp, testname);
|
|
|
|
QUERY_CASES="INSERT INTO test_cases "\
|
|
"SELECT '{sha}' AS sha, "\
|
|
"{pr} AS pr, "\
|
|
"hostname, "\
|
|
"suite, "\
|
|
"timestamp, "\
|
|
"testname, "\
|
|
"classname, "\
|
|
"file, "\
|
|
"line, "\
|
|
"duration, "\
|
|
"suite_duration, "\
|
|
"stderr,"\
|
|
"stdout "\
|
|
"FROM input('"\
|
|
"hostname String, "\
|
|
"suite String, "\
|
|
"timestamp DateTime, "\
|
|
"testname String, "\
|
|
"classname String, "\
|
|
"file String, "\
|
|
"line UInt16, "\
|
|
"duration Double, "\
|
|
"suite_duration Double, "\
|
|
"stderr String, "\
|
|
"stdout String"\
|
|
"') FORMAT JSONEachRow"
|
|
|
|
|
|
def upload_request(sha, pr, file, q_type, user, password, ca_cert, host, db):
|
|
with open(file) as upload_f:
|
|
query = QUERY_SUITES if q_type=="suites" else QUERY_CASES
|
|
query = query.format(sha=sha, pr=pr)
|
|
url = 'https://{host}:8443/?database={db}&query={query}&date_time_input_format=best_effort'.format(
|
|
host=host,
|
|
db=db,
|
|
query=query
|
|
)
|
|
data=upload_f
|
|
auth = {
|
|
'X-ClickHouse-User': user,
|
|
'X-ClickHouse-Key': password,
|
|
}
|
|
|
|
print(query);
|
|
|
|
res = requests.post(
|
|
url,
|
|
data=data,
|
|
headers=auth,
|
|
verify=ca_cert)
|
|
res.raise_for_status()
|
|
return res.text
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='Upload test result to CI ClickHouse.')
|
|
parser.add_argument('--sha', help='sha of current commit', type=str, required=True)
|
|
parser.add_argument('--pr', help='pr of current commit. 0 for master', type=int, required=True)
|
|
parser.add_argument('--file', help='file to upload', required=True)
|
|
parser.add_argument('--type', help='Export type', choices=['suites', 'cases'] , required=True)
|
|
parser.add_argument('--user', help='user name', type=str, default="clickhouse-ci")
|
|
parser.add_argument('--password', help='password', type=str, required=True)
|
|
parser.add_argument('--ca-cert', help='CA certificate path', type=str, default="/usr/local/share/ca-certificates/YandexInternalRootCA.crt")
|
|
parser.add_argument('--host', help='CI ClickHouse host', type=str, default="c1a-ity5agjmuhyu6nu9.mdb.yandexcloud.net")
|
|
parser.add_argument('--db', help='CI ClickHouse database name', type=str, default="clickhouse-ci")
|
|
|
|
args = parser.parse_args()
|
|
|
|
print((upload_request(args.sha, args.pr, args.file, args.type, args.user, args.password, args.ca_cert, args.host, args.db)))
|
|
|
|
|
|
|