Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
aee0cd71
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
aee0cd71
编写于
8月 21, 2018
作者:
B
Brian Johnson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes for supporting a large number of producer nodes. GH #4973
上级
8c9349dc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
8 deletion
+20
-8
tests/Cluster.py
tests/Cluster.py
+20
-8
未找到文件。
tests/Cluster.py
浏览文件 @
aee0cd71
...
...
@@ -203,7 +203,7 @@ class Cluster(object):
Utils
.
Print
(
"Bootstrap cluster."
)
if
onlyBios
or
not
useBiosBootFile
:
self
.
biosNode
=
Cluster
.
bootstrap
(
totalNodes
,
prodCount
,
Cluster
.
__BiosHost
,
Cluster
.
__BiosPort
,
dontKill
,
onlyBios
)
self
.
biosNode
=
Cluster
.
bootstrap
(
totalNodes
,
prodCount
,
totalProducers
,
Cluster
.
__BiosHost
,
Cluster
.
__BiosPort
,
dontKill
,
onlyBios
)
if
self
.
biosNode
is
None
:
Utils
.
Print
(
"ERROR: Bootstrap failed."
)
return
False
...
...
@@ -323,12 +323,14 @@ class Cluster(object):
"""manually set nodes, alternative to explicit launch"""
self
.
nodes
=
nodes
def
waitOnClusterSync
(
self
,
timeout
=
None
,
blockType
=
BlockType
.
head
):
"""Get head block on node 0, then ensure the block is present on every cluster node."""
def
waitOnClusterSync
(
self
,
timeout
=
None
,
blockType
=
BlockType
.
head
,
blockAdvancing
=
0
):
"""Get head or irrevercible block on node 0, then ensure that block (or that block plus the
blockAdvancing) is present on every cluster node."""
assert
(
self
.
nodes
)
assert
(
len
(
self
.
nodes
)
>
0
)
node
=
self
.
nodes
[
0
]
targetBlockNum
=
node
.
getBlockNum
(
blockType
)
#retrieve node 0's head or irrevercible block number
targetBlockNum
=
node
.
getBlockNum
(
blockType
)
#retrieve node 0's head or irrevercible block number
targetBlockNum
+=
blockAdvancing
if
Utils
.
Debug
:
Utils
.
Print
(
"%s block number on root node: %d"
%
(
blockType
.
type
,
targetBlockNum
))
if
targetBlockNum
==
-
1
:
...
...
@@ -649,6 +651,7 @@ class Cluster(object):
pattern
=
r
"^\s*private-key\s*=\W+(\w+)\W+(\w+)\W+$"
m
=
re
.
search
(
pattern
,
configStr
,
re
.
MULTILINE
)
regMsg
=
"None"
if
m
is
None
else
"NOT None"
if
m
is
None
:
if
Utils
.
Debug
:
Utils
.
Print
(
"Failed to find producer keys"
)
return
None
...
...
@@ -710,6 +713,7 @@ class Cluster(object):
keys
=
Cluster
.
parseProducerKeys
(
configFile
,
node
)
if
keys
is
not
None
:
producerKeys
.
update
(
keys
)
keyMsg
=
"None"
if
keys
is
None
else
len
(
keys
)
return
producerKeys
...
...
@@ -803,7 +807,7 @@ class Cluster(object):
return
biosNode
@
staticmethod
def
bootstrap
(
totalNodes
,
prodCount
,
biosHost
,
biosPort
,
dontKill
=
False
,
onlyBios
=
False
):
def
bootstrap
(
totalNodes
,
prodCount
,
totalProducers
,
biosHost
,
biosPort
,
dontKill
=
False
,
onlyBios
=
False
):
"""Create 'prodCount' init accounts and deposits 10000000000 SYS in each. If prodCount is -1 will initialize all possible producers.
Ensure nodes are inter-connected prior to this call. One way to validate this will be to check if every node has block 1."""
...
...
@@ -815,8 +819,11 @@ class Cluster(object):
producerKeys
=
Cluster
.
parseClusterKeys
(
totalNodes
)
# should have totalNodes node plus bios node
if
producerKeys
is
None
or
len
(
producerKeys
)
<
(
totalNodes
+
1
):
Utils
.
Print
(
"ERROR: Failed to parse private keys from cluster config files."
)
if
producerKeys
is
None
or
len
(
producerKeys
)
<
(
totalProducers
+
1
):
if
producerKeys
is
None
:
Utils
.
Print
(
"ERROR: Failed to parse any producer keys from config files."
)
else
:
Utils
.
Print
(
"ERROR: Failed to parse %d producer keys from cluster config files, only found %d."
%
(
totalNodes
+
1
,
len
(
producerKeys
)))
return
None
walletMgr
=
WalletMgr
(
True
)
...
...
@@ -1092,7 +1099,11 @@ class Cluster(object):
Utils
.
Print
(
"ERROR: No nodes discovered."
)
return
nodes
if
Utils
.
Debug
:
Utils
.
Print
(
"pgrep output:
\"
%s
\"
"
%
psOut
)
if
len
(
psOut
)
<
6660
:
psOutDisplay
=
psOut
else
:
psOutDisplay
=
psOut
[:
6660
]
+
"..."
if
Utils
.
Debug
:
Utils
.
Print
(
"pgrep output:
\"
%s
\"
"
%
psOutDisplay
)
for
i
in
range
(
0
,
totalNodes
):
pattern
=
r
"[\n]?(\d+) (.* --data-dir var/lib/node_%02d .*)\n"
%
(
i
)
m
=
re
.
search
(
pattern
,
psOut
,
re
.
MULTILINE
)
...
...
@@ -1104,6 +1115,7 @@ class Cluster(object):
if
Utils
.
Debug
:
Utils
.
Print
(
"Node>"
,
instance
)
nodes
.
append
(
instance
)
if
Utils
.
Debug
:
Utils
.
Print
(
"Found %d nodes"
%
(
len
(
nodes
)))
return
nodes
# Kills a percentange of Eos instances starting from the tail and update eosInstanceInfos state
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录