Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小楼昨夜-听风雨
TDengine
提交
e011827f
T
TDengine
项目概览
小楼昨夜-听风雨
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e011827f
编写于
10月 21, 2020
作者:
S
Steven Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Finished refactoring crash_gen tool into a Python modular structure
上级
c6a5706f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
143 addition
and
124 deletion
+143
-124
tests/pytest/crash_gen.sh
tests/pytest/crash_gen.sh
+4
-3
tests/pytest/crash_gen/crash_gen.py
tests/pytest/crash_gen/crash_gen.py
+116
-121
tests/pytest/crash_gen_bootstrap.py
tests/pytest/crash_gen_bootstrap.py
+23
-0
未找到文件。
tests/pytest/crash_gen.sh
浏览文件 @
e011827f
...
...
@@ -54,6 +54,7 @@ export PYTHONPATH=$(pwd)/../../src/connector/python/linux/python3:$(pwd)
export
LD_LIBRARY_PATH
=
$LD_LIBRARY_PATH
:
$LIB_DIR
# Now we are all let, and let's see if we can find a crash. Note we pass all params
CRASH_GEN_EXEC
=
crash_gen_bootstrap.py
if
[[
$1
==
'--valgrind'
]]
;
then
shift
export
PYTHONMALLOC
=
malloc
...
...
@@ -66,14 +67,14 @@ if [[ $1 == '--valgrind' ]]; then
--leak-check
=
yes
\
--suppressions
=
crash_gen/valgrind_taos.supp
\
$PYTHON_EXEC
\
./crash_gen/crash_gen.py
$@
>
$VALGRIND_OUT
2>
$VALGRIND_ERR
$CRASH_GEN_EXEC
$@
>
$VALGRIND_OUT
2>
$VALGRIND_ERR
elif
[[
$1
==
'--helgrind'
]]
;
then
shift
valgrind
\
--tool
=
helgrind
\
$PYTHON_EXEC
\
./crash_gen/crash_gen.py
$@
$CRASH_GEN_EXEC
$@
else
$PYTHON_EXEC
./crash_gen/crash_gen.py
$@
$PYTHON_EXEC
$CRASH_GEN_EXEC
$@
fi
tests/pytest/crash_gen/crash_gen.py
浏览文件 @
e011827f
...
...
@@ -3160,123 +3160,124 @@ class MainExec:
self
.
_svcMgr
=
None
gSvcMgr
=
None
def
init
(
self
):
# TODO: refactor
global
gContainer
gContainer
=
Container
()
# micky-mouse DI
# Super cool Python argument library:
# https://docs.python.org/3/library/argparse.html
parser
=
argparse
.
ArgumentParser
(
formatter_class
=
argparse
.
RawDescriptionHelpFormatter
,
description
=
textwrap
.
dedent
(
'''
\
TDengine Auto Crash Generator (PLEASE NOTICE the Prerequisites Below)
---------------------------------------------------------------------
1. You build TDengine in the top level ./build directory, as described in offical docs
2. You run the server there before this script: ./build/bin/taosd -c test/cfg
'''
))
parser
.
add_argument
(
'-a'
,
'--auto-start-service'
,
action
=
'store_true'
,
help
=
'Automatically start/stop the TDengine service (default: false)'
)
parser
.
add_argument
(
'-b'
,
'--max-dbs'
,
action
=
'store'
,
default
=
0
,
type
=
int
,
help
=
'Maximum number of DBs to keep, set to disable dropping DB. (default: 0)'
)
parser
.
add_argument
(
'-c'
,
'--connector-type'
,
action
=
'store'
,
default
=
'native'
,
type
=
str
,
help
=
'Connector type to use: native, rest, or mixed (default: 10)'
)
parser
.
add_argument
(
'-d'
,
'--debug'
,
action
=
'store_true'
,
help
=
'Turn on DEBUG mode for more logging (default: false)'
)
parser
.
add_argument
(
'-e'
,
'--run-tdengine'
,
action
=
'store_true'
,
help
=
'Run TDengine service in foreground (default: false)'
)
parser
.
add_argument
(
'-i'
,
'--max-replicas'
,
action
=
'store'
,
default
=
1
,
type
=
int
,
help
=
'Maximum number of replicas to use, when testing against clusters. (default: 1)'
)
parser
.
add_argument
(
'-l'
,
'--larger-data'
,
action
=
'store_true'
,
help
=
'Write larger amount of data during write operations (default: false)'
)
parser
.
add_argument
(
'-p'
,
'--per-thread-db-connection'
,
action
=
'store_true'
,
help
=
'Use a single shared db connection (default: false)'
)
parser
.
add_argument
(
'-r'
,
'--record-ops'
,
action
=
'store_true'
,
help
=
'Use a pair of always-fsynced fils to record operations performing + performed, for power-off tests (default: false)'
)
parser
.
add_argument
(
'-s'
,
'--max-steps'
,
action
=
'store'
,
default
=
1000
,
type
=
int
,
help
=
'Maximum number of steps to run (default: 100)'
)
parser
.
add_argument
(
'-t'
,
'--num-threads'
,
action
=
'store'
,
default
=
5
,
type
=
int
,
help
=
'Number of threads to run (default: 10)'
)
parser
.
add_argument
(
'-v'
,
'--verify-data'
,
action
=
'store_true'
,
help
=
'Verify data written in a number of places by reading back (default: false)'
)
parser
.
add_argument
(
'-x'
,
'--continue-on-exception'
,
action
=
'store_true'
,
help
=
'Continue execution after encountering unexpected/disallowed errors/exceptions (default: false)'
)
global
gConfig
gConfig
=
parser
.
parse_args
()
# Logging Stuff
global
logger
_logger
=
logging
.
getLogger
(
'CrashGen'
)
# real logger
_logger
.
addFilter
(
LoggingFilter
())
ch
=
logging
.
StreamHandler
()
_logger
.
addHandler
(
ch
)
# Logging adapter, to be used as a logger
logger
=
MyLoggingAdapter
(
_logger
,
[])
if
(
gConfig
.
debug
):
logger
.
setLevel
(
logging
.
DEBUG
)
# default seems to be INFO
else
:
logger
.
setLevel
(
logging
.
INFO
)
Dice
.
seed
(
0
)
# initial seeding of dice
def
run
(
self
):
if
gConfig
.
run_tdengine
:
# run server
self
.
runService
()
else
:
return
self
.
runClient
()
def
main
():
# Super cool Python argument library:
# https://docs.python.org/3/library/argparse.html
parser
=
argparse
.
ArgumentParser
(
formatter_class
=
argparse
.
RawDescriptionHelpFormatter
,
description
=
textwrap
.
dedent
(
'''
\
TDengine Auto Crash Generator (PLEASE NOTICE the Prerequisites Below)
---------------------------------------------------------------------
1. You build TDengine in the top level ./build directory, as described in offical docs
2. You run the server there before this script: ./build/bin/taosd -c test/cfg
'''
))
parser
.
add_argument
(
'-a'
,
'--auto-start-service'
,
action
=
'store_true'
,
help
=
'Automatically start/stop the TDengine service (default: false)'
)
parser
.
add_argument
(
'-b'
,
'--max-dbs'
,
action
=
'store'
,
default
=
0
,
type
=
int
,
help
=
'Maximum number of DBs to keep, set to disable dropping DB. (default: 0)'
)
parser
.
add_argument
(
'-c'
,
'--connector-type'
,
action
=
'store'
,
default
=
'native'
,
type
=
str
,
help
=
'Connector type to use: native, rest, or mixed (default: 10)'
)
parser
.
add_argument
(
'-d'
,
'--debug'
,
action
=
'store_true'
,
help
=
'Turn on DEBUG mode for more logging (default: false)'
)
parser
.
add_argument
(
'-e'
,
'--run-tdengine'
,
action
=
'store_true'
,
help
=
'Run TDengine service in foreground (default: false)'
)
parser
.
add_argument
(
'-i'
,
'--max-replicas'
,
action
=
'store'
,
default
=
1
,
type
=
int
,
help
=
'Maximum number of replicas to use, when testing against clusters. (default: 1)'
)
parser
.
add_argument
(
'-l'
,
'--larger-data'
,
action
=
'store_true'
,
help
=
'Write larger amount of data during write operations (default: false)'
)
parser
.
add_argument
(
'-p'
,
'--per-thread-db-connection'
,
action
=
'store_true'
,
help
=
'Use a single shared db connection (default: false)'
)
parser
.
add_argument
(
'-r'
,
'--record-ops'
,
action
=
'store_true'
,
help
=
'Use a pair of always-fsynced fils to record operations performing + performed, for power-off tests (default: false)'
)
parser
.
add_argument
(
'-s'
,
'--max-steps'
,
action
=
'store'
,
default
=
1000
,
type
=
int
,
help
=
'Maximum number of steps to run (default: 100)'
)
parser
.
add_argument
(
'-t'
,
'--num-threads'
,
action
=
'store'
,
default
=
5
,
type
=
int
,
help
=
'Number of threads to run (default: 10)'
)
parser
.
add_argument
(
'-v'
,
'--verify-data'
,
action
=
'store_true'
,
help
=
'Verify data written in a number of places by reading back (default: false)'
)
parser
.
add_argument
(
'-x'
,
'--continue-on-exception'
,
action
=
'store_true'
,
help
=
'Continue execution after encountering unexpected/disallowed errors/exceptions (default: false)'
)
global
gConfig
gConfig
=
parser
.
parse_args
()
# Logging Stuff
global
logger
_logger
=
logging
.
getLogger
(
'CrashGen'
)
# real logger
_logger
.
addFilter
(
LoggingFilter
())
ch
=
logging
.
StreamHandler
()
_logger
.
addHandler
(
ch
)
# Logging adapter, to be used as a logger
logger
=
MyLoggingAdapter
(
_logger
,
[])
if
(
gConfig
.
debug
):
logger
.
setLevel
(
logging
.
DEBUG
)
# default seems to be INFO
else
:
logger
.
setLevel
(
logging
.
INFO
)
Dice
.
seed
(
0
)
# initial seeding of dice
# Run server or client
mExec
=
MainExec
()
if
gConfig
.
run_tdengine
:
# run server
mExec
.
runService
()
else
:
return
mExec
.
runClient
()
class
Container
():
_propertyList
=
{
'defTdeInstance'
}
...
...
@@ -3300,9 +3301,3 @@ class Container():
self
.
_verifyValidProperty
(
name
)
self
.
_cargo
[
name
]
=
value
if
__name__
==
"__main__"
:
gContainer
=
Container
()
# micky-mouse DI
exitCode
=
main
()
# print("Exiting with code: {}".format(exitCode))
sys
.
exit
(
exitCode
)
\ No newline at end of file
tests/pytest/crash_gen_bootstrap.py
0 → 100644
浏览文件 @
e011827f
# -----!/usr/bin/python3.7
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
import
sys
from
crash_gen.crash_gen
import
MainExec
if
__name__
==
"__main__"
:
mExec
=
MainExec
()
mExec
.
init
()
exitCode
=
mExec
.
run
()
print
(
"Exiting with code: {}"
.
format
(
exitCode
))
sys
.
exit
(
exitCode
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录