Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
1be46ac7
T
TDengine
项目概览
慢慢CG
/
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看板
提交
1be46ac7
编写于
6月 26, 2020
作者:
S
Steven Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Now able to run without parameter, also refactored to run service binary
上级
23ed5e24
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
75 addition
and
62 deletion
+75
-62
tests/pytest/crash_gen.py
tests/pytest/crash_gen.py
+75
-62
未找到文件。
tests/pytest/crash_gen.py
浏览文件 @
1be46ac7
...
...
@@ -686,7 +686,8 @@ class StateHasData(AnyState):
self
.
assertNoTask
(
tasks
,
TaskAddData
)
# self.hasSuccess(tasks, DeleteDataTasks)
else
:
# should be STATE_HAS_DATA
self
.
assertNoTask
(
tasks
,
TaskDropDb
)
if
(
not
self
.
hasTask
(
tasks
,
TaskCreateDb
)
):
# only if we didn't create one
self
.
assertNoTask
(
tasks
,
TaskDropDb
)
# we shouldn't have dropped it
if
(
not
self
.
hasTask
(
tasks
,
TaskCreateSuperTable
))
:
# if we didn't create the table
self
.
assertNoTask
(
tasks
,
TaskDropSuperTable
)
# we should not have a task that drops it
# self.assertIfExistThenSuccess(tasks, ReadFixedDataTask)
...
...
@@ -1295,58 +1296,26 @@ class LoggingFilter(logging.Filter):
# return False
return
True
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
(
'-d'
,
'--debug'
,
action
=
'store_true'
,
help
=
'Turn on DEBUG mode for more logging (default: false)'
)
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
=
100
,
type
=
int
,
help
=
'Maximum number of steps to run (default: 100)'
)
parser
.
add_argument
(
'-t'
,
'--num-threads'
,
action
=
'store'
,
default
=
10
,
type
=
int
,
help
=
'Number of threads to run (default: 10)'
)
global
gConfig
gConfig
=
parser
.
parse_args
()
if
len
(
sys
.
argv
)
==
1
:
parser
.
print_help
()
sys
.
exit
()
global
logger
logger
=
logging
.
getLogger
(
'CrashGen'
)
logger
.
addFilter
(
LoggingFilter
())
if
(
gConfig
.
debug
):
logger
.
setLevel
(
logging
.
DEBUG
)
# default seems to be INFO
else
:
logger
.
setLevel
(
logging
.
INFO
)
ch
=
logging
.
StreamHandler
()
logger
.
addHandler
(
ch
)
class
MainExec
:
@
classmethod
def
runClient
(
cls
):
# resetDb = False # DEBUG only
# dbState = DbState(resetDb) # DBEUG only!
dbManager
=
DbManager
()
# Regular function
Dice
.
seed
(
0
)
# initial seeding of dice
tc
=
ThreadCoordinator
(
ThreadPool
(
gConfig
.
num_threads
,
gConfig
.
max_steps
),
# WorkDispatcher(dbState), # Obsolete?
dbManager
)
thPool
=
ThreadPool
(
gConfig
.
num_threads
,
gConfig
.
max_steps
)
tc
=
ThreadCoordinator
(
thPool
,
dbManager
)
tc
.
run
()
tc
.
logStats
()
dbManager
.
cleanUp
()
@
classmethod
def
runService
(
cls
):
print
(
"Running service..."
)
@
classmethod
def
runTemp
(
cls
):
# for debugging purposes
# # Hack to exercise reading from disk, imcreasing coverage. TODO: fix
# dbc = dbState.getDbConn()
# sTbName = dbState.getFixedSuperTableName()
...
...
@@ -1382,17 +1351,61 @@ def main():
# except taos.error.ProgrammingError as err:
# logger.info("Initial WRITE/READ error: {}".format(err))
# Sandbox testing code
# dbc = dbState.getDbConn()
# while True:
# rows = dbc.query("show databases")
# print("Rows: {}, time={}".format(rows, time.time()))
return
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
(
'-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
(
'-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_false'
,
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)'
)
global
gConfig
gConfig
=
parser
.
parse_args
()
# if len(sys.argv) == 1:
# parser.print_help()
# sys.exit()
global
logger
logger
=
logging
.
getLogger
(
'CrashGen'
)
logger
.
addFilter
(
LoggingFilter
())
if
(
gConfig
.
debug
):
logger
.
setLevel
(
logging
.
DEBUG
)
# default seems to be INFO
else
:
logger
.
setLevel
(
logging
.
INFO
)
ch
=
logging
.
StreamHandler
()
logger
.
addHandler
(
ch
)
if
gConfig
.
run_tdengine
:
# run server
MainExec
.
runService
()
else
:
MainExec
.
runClient
()
tc
.
run
()
tc
.
logStats
()
dbManager
.
cleanUp
()
# logger.info("Crash_Gen execution finished")
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录