Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
1ef38148
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1ef38148
编写于
1月 26, 2021
作者:
A
Azat Khuzhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix all pylint warnings in clickhouse-test
上级
3e8d76da
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
46 deletion
+43
-46
tests/clickhouse-test
tests/clickhouse-test
+43
-46
未找到文件。
tests/clickhouse-test
浏览文件 @
1ef38148
...
...
@@ -5,13 +5,11 @@ import os
import
os.path
import
re
import
json
import
traceback
from
argparse
import
ArgumentParser
from
argparse
import
FileType
from
pprint
import
pprint
import
shlex
import
subprocess
from
subprocess
import
check_call
from
subprocess
import
Popen
from
subprocess
import
PIPE
from
subprocess
import
CalledProcessError
...
...
@@ -23,8 +21,8 @@ try:
import
termcolor
except
ImportError
:
termcolor
=
None
from
random
import
random
import
s
ubprocess
import
random
import
s
tring
import
multiprocessing
from
contextlib
import
closing
...
...
@@ -43,7 +41,7 @@ def json_minify(string):
The code taken from https://github.com/getify/JSON.minify/tree/python under the MIT license.
"""
tokenizer
=
re
.
compile
(
'"|(/\*)|(\*/)|(//)|
\n
|
\r
'
)
tokenizer
=
re
.
compile
(
r
'"|(/\*)|(\*/)|(//)|\n|\r'
)
end_slashes_re
=
re
.
compile
(
r
'(\\)*$'
)
in_string
=
False
...
...
@@ -124,8 +122,6 @@ def run_single_test(args, ext, server_logs_level, client_options, case_file, std
# If --database is not specified, we will create temporary database with unique name
# And we will recreate and drop it for each test
def
random_str
(
length
=
6
):
import
random
import
string
alphabet
=
string
.
ascii_lowercase
+
string
.
digits
return
''
.
join
(
random
.
choice
(
alphabet
)
for
_
in
range
(
length
))
database
=
'test_{suffix}'
.
format
(
suffix
=
random_str
())
...
...
@@ -236,15 +232,15 @@ def get_server_pid(server_tcp_port):
return
int
(
output
)
else
:
return
None
# server dead
except
Exception
as
ex
:
except
Exception
:
return
None
def
colored
(
text
,
args
,
color
=
None
,
on_color
=
None
,
attrs
=
None
):
if
termcolor
and
(
sys
.
stdout
.
isatty
()
or
args
.
force_color
):
return
termcolor
.
colored
(
text
,
color
,
on_color
,
attrs
)
else
:
return
text
if
termcolor
and
(
sys
.
stdout
.
isatty
()
or
args
.
force_color
):
return
termcolor
.
colored
(
text
,
color
,
on_color
,
attrs
)
else
:
return
text
SERVER_DIED
=
False
...
...
@@ -281,7 +277,7 @@ def run_tests_array(all_tests_with_params):
else
:
return
''
if
len
(
all_tests
)
:
if
all_tests
:
print
(
"
\n
Running {} {} tests."
.
format
(
len
(
all_tests
),
suite
)
+
"
\n
"
)
for
case
in
all_tests
:
...
...
@@ -297,7 +293,7 @@ def run_tests_array(all_tests_with_params):
try
:
status
=
''
is_concurrent
=
multiprocessing
.
current_process
().
name
!=
"MainProcess"
;
is_concurrent
=
multiprocessing
.
current_process
().
name
!=
"MainProcess"
if
not
is_concurrent
:
sys
.
stdout
.
flush
()
sys
.
stdout
.
write
(
"{0:72}"
.
format
(
name
+
": "
))
...
...
@@ -306,7 +302,7 @@ def run_tests_array(all_tests_with_params):
# mode, so that the lines don't mix.
sys
.
stdout
.
flush
()
else
:
status
=
"{0:72}"
.
format
(
name
+
": "
)
;
status
=
"{0:72}"
.
format
(
name
+
": "
)
if
args
.
skip
and
any
(
s
in
name
for
s
in
args
.
skip
):
status
+=
MSG_SKIPPED
+
" - skip
\n
"
...
...
@@ -398,7 +394,7 @@ def run_tests_array(all_tests_with_params):
status
+=
", result:
\n\n
"
status
+=
'
\n
'
.
join
(
open
(
stdout_file
).
read
().
split
(
'
\n
'
)[:
100
])
status
+=
'
\n
'
;
status
+=
'
\n
'
elif
stderr
:
failures
+=
1
...
...
@@ -444,7 +440,6 @@ def run_tests_array(all_tests_with_params):
print
(
colored
(
"Break tests execution"
,
args
,
"red"
))
raise
e
except
:
import
traceback
exc_type
,
exc_value
,
tb
=
sys
.
exc_info
()
failures
+=
1
print
(
"{0} - Test internal error: {1}
\n
{2}
\n
{3}"
.
format
(
MSG_FAIL
,
exc_type
.
__name__
,
exc_value
,
"
\n
"
.
join
(
traceback
.
format_tb
(
tb
,
10
))))
...
...
@@ -455,10 +450,12 @@ def run_tests_array(all_tests_with_params):
failures_total
=
failures_total
+
failures
if
failures_total
>
0
:
print
(
colored
(
"
\n
Having {failures_total} errors! {passed_total} tests passed. {skipped_total} tests skipped."
.
format
(
passed_total
=
passed_total
,
skipped_total
=
skipped_total
,
failures_total
=
failures_total
),
args
,
"red"
,
attrs
=
[
"bold"
]))
print
(
colored
(
"
\n
Having {failures_total} errors! {passed_total} tests passed. {skipped_total} tests skipped."
.
format
(
passed_total
=
passed_total
,
skipped_total
=
skipped_total
,
failures_total
=
failures_total
),
args
,
"red"
,
attrs
=
[
"bold"
]))
exit_code
=
1
else
:
print
(
colored
(
"
\n
{passed_total} tests passed. {skipped_total} tests skipped."
.
format
(
passed_total
=
passed_total
,
skipped_total
=
skipped_total
),
args
,
"green"
,
attrs
=
[
"bold"
]))
print
(
colored
(
"
\n
{passed_total} tests passed. {skipped_total} tests skipped."
.
format
(
passed_total
=
passed_total
,
skipped_total
=
skipped_total
),
args
,
"green"
,
attrs
=
[
"bold"
]))
server_logs_level
=
"warning"
...
...
@@ -504,7 +501,7 @@ def check_server_started(client, retry_count):
return
False
class
BuildFlags
(
object
):
class
BuildFlags
():
THREAD
=
'thread-sanitizer'
ADDRESS
=
'address-sanitizer'
UNDEFINED
=
'ub-sanitizer'
...
...
@@ -630,7 +627,7 @@ def main(args):
stop_time
=
time
()
+
args
.
global_time_limit
if
args
.
zookeeper
is
None
:
code
,
out
=
subprocess
.
getstatusoutput
(
args
.
extract_from_config
+
" --try --config "
+
args
.
configserver
+
' --key zookeeper | grep . | wc -l'
)
_
,
out
=
subprocess
.
getstatusoutput
(
args
.
extract_from_config
+
" --try --config "
+
args
.
configserver
+
' --key zookeeper | grep . | wc -l'
)
try
:
if
int
(
out
)
>
0
:
args
.
zookeeper
=
True
...
...
@@ -640,7 +637,7 @@ def main(args):
args
.
zookeeper
=
False
if
args
.
shard
is
None
:
code
,
out
=
subprocess
.
getstatusoutput
(
args
.
extract_from_config
+
" --try --config "
+
args
.
configserver
+
' --key listen_host | grep -E "127.0.0.2|::"'
)
_
,
out
=
subprocess
.
getstatusoutput
(
args
.
extract_from_config
+
" --try --config "
+
args
.
configserver
+
' --key listen_host | grep -E "127.0.0.2|::"'
)
if
out
:
args
.
shard
=
True
else
:
...
...
@@ -655,25 +652,25 @@ def main(args):
def
is_test_from_dir
(
suite_dir
,
case
):
case_file
=
os
.
path
.
join
(
suite_dir
,
case
)
(
name
,
ext
)
=
os
.
path
.
splitext
(
case
)
(
_
,
ext
)
=
os
.
path
.
splitext
(
case
)
# We could also test for executable files (os.access(case_file, os.X_OK),
# but it interferes with 01610_client_spawn_editor.editor, which is invoked
# as a query editor in the test, and must be marked as executable.
return
os
.
path
.
isfile
(
case_file
)
and
(
ext
==
'.sql'
or
ext
==
'.sh'
or
ext
==
'.py'
or
ext
==
'.expect'
)
return
os
.
path
.
isfile
(
case_file
)
and
(
ext
in
[
'.sql'
,
'.sh'
,
'.py'
,
'.expect'
]
)
def
sute_key_func
(
item
):
if
args
.
order
==
'random'
:
return
random
()
if
args
.
order
==
'random'
:
return
random
.
random
()
if
-
1
==
item
.
find
(
'_'
):
return
99998
,
''
if
-
1
==
item
.
find
(
'_'
):
return
99998
,
''
prefix
,
suffix
=
item
.
split
(
'_'
,
1
)
prefix
,
suffix
=
item
.
split
(
'_'
,
1
)
try
:
return
int
(
prefix
),
suffix
except
ValueError
:
return
99997
,
''
try
:
return
int
(
prefix
),
suffix
except
ValueError
:
return
99997
,
''
total_tests_run
=
0
for
suite
in
sorted
(
os
.
listdir
(
base_dir
),
key
=
sute_key_func
):
...
...
@@ -706,14 +703,14 @@ def main(args):
# And not reverse subtests
def
key_func
(
item
):
if
args
.
order
==
'random'
:
return
random
()
return
random
.
random
()
reverse
=
1
if
args
.
order
==
'asc'
else
-
1
if
-
1
==
item
.
find
(
'_'
):
return
99998
prefix
,
suffix
=
item
.
split
(
'_'
,
1
)
prefix
,
_
=
item
.
split
(
'_'
,
1
)
try
:
return
reverse
*
int
(
prefix
)
...
...
@@ -766,7 +763,7 @@ def main(args):
if
args
.
hung_check
:
# Some queries may execute in background for some time after test was finished. This is normal.
for
n
in
range
(
1
,
60
):
for
_
in
range
(
1
,
60
):
timeout
,
processlist
=
get_processlist
(
args
)
if
timeout
or
not
processlist
:
break
...
...
@@ -921,7 +918,7 @@ if __name__ == '__main__':
if
args
.
queries
and
not
os
.
path
.
isdir
(
args
.
queries
):
print
(
"Cannot access the specified directory with queries ("
+
args
.
queries
+
")"
,
file
=
sys
.
stderr
)
exit
(
1
)
sys
.
exit
(
1
)
# Autodetect the directory with queries if not specified
if
args
.
queries
is
None
:
...
...
@@ -943,7 +940,7 @@ if __name__ == '__main__':
if
not
os
.
path
.
isdir
(
args
.
queries
):
print
(
"Failed to detect path to the queries directory. Please specify it with '--queries' option."
,
file
=
sys
.
stderr
)
exit
(
1
)
sys
.
exit
(
1
)
print
(
"Using queries from '"
+
args
.
queries
+
"' directory"
)
...
...
@@ -967,7 +964,7 @@ if __name__ == '__main__':
else
:
print
(
"No 'clickhouse' or 'clickhouse-client' client binary found"
,
file
=
sys
.
stderr
)
parser
.
print_help
()
exit
(
1
)
sys
.
exit
(
1
)
if
args
.
configclient
:
args
.
client
+=
' --config-file='
+
args
.
configclient
...
...
@@ -981,25 +978,25 @@ if __name__ == '__main__':
if
args
.
client_option
:
# Set options for client
if
'CLICKHOUSE_CLIENT_OPT'
in
os
.
environ
:
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
+=
' '
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
+=
' '
else
:
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
=
''
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
=
''
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
+=
get_additional_client_options
(
args
)
# Set options for curl
if
'CLICKHOUSE_URL_PARAMS'
in
os
.
environ
:
os
.
environ
[
'CLICKHOUSE_URL_PARAMS'
]
+=
'&'
os
.
environ
[
'CLICKHOUSE_URL_PARAMS'
]
+=
'&'
else
:
os
.
environ
[
'CLICKHOUSE_URL_PARAMS'
]
=
''
os
.
environ
[
'CLICKHOUSE_URL_PARAMS'
]
=
''
os
.
environ
[
'CLICKHOUSE_URL_PARAMS'
]
+=
get_additional_client_options_url
(
args
)
if
args
.
antlr
:
if
'CLICKHOUSE_CLIENT_OPT'
in
os
.
environ
:
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
+=
' --use_antlr_parser=1'
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
+=
' --use_antlr_parser=1'
else
:
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
=
'--use_antlr_parser=1'
os
.
environ
[
'CLICKHOUSE_CLIENT_OPT'
]
=
'--use_antlr_parser=1'
if
args
.
extract_from_config
is
None
:
if
os
.
access
(
args
.
binary
+
'-extract-from-config'
,
os
.
X_OK
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录