Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
e7a77cac
Commit
e7a77cac
authored
Apr 28, 2019
by
mdj33
Committed by
vipwzw
May 05, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add UT
parent
374d622a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
137 additions
and
97 deletions
+137
-97
superaccount.go
plugin/dapp/paracross/executor/superaccount.go
+65
-77
superaccount_test.go
plugin/dapp/paracross/executor/superaccount_test.go
+72
-20
No files found.
plugin/dapp/paracross/executor/superaccount.go
View file @
e7a77cac
...
...
@@ -450,87 +450,10 @@ func (a *action) checkConfig(title string) error {
return
pt
.
ErrInvalidTitle
}
forkHeight
:=
types
.
GetDappFork
(
pt
.
ParaX
,
pt
.
ForkCommitTx
)
if
types
.
IsPara
()
{
forkHeight
=
types
.
Conf
(
"config.consensus.sub.para"
)
.
GInt
(
"MainForkParacrossCommitTx"
)
if
forkHeight
==
-
1
||
forkHeight
==
0
{
forkHeight
=
types
.
MaxHeight
}
}
if
a
.
exec
.
GetMainHeight
()
<
forkHeight
{
return
types
.
ErrNotSupport
}
return
nil
}
//NodeConfig support super account node config
func
(
a
*
action
)
NodeConfig
(
config
*
pt
.
ParaNodeAddrConfig
)
(
*
types
.
Receipt
,
error
)
{
err
:=
a
.
checkConfig
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
if
config
.
Op
==
pt
.
ParaNodeJoin
{
if
config
.
Addr
!=
a
.
fromaddr
{
return
nil
,
types
.
ErrFromAddr
}
return
a
.
nodeJoin
(
config
)
}
else
if
config
.
Op
==
pt
.
ParaNodeQuit
{
if
config
.
Addr
!=
a
.
fromaddr
{
return
nil
,
types
.
ErrFromAddr
}
return
a
.
nodeQuit
(
config
)
}
else
if
config
.
Op
==
pt
.
ParaNodeVote
{
return
a
.
nodeVote
(
config
)
}
else
{
return
nil
,
pt
.
ErrParaUnSupportNodeOper
}
}
//NodeConfig support super account node config
func
(
a
*
action
)
NodeGroupConfig
(
config
*
pt
.
ParaNodeGroupApply
)
(
*
types
.
Receipt
,
error
)
{
err
:=
a
.
checkConfig
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
config
.
Addrs
)
==
0
{
return
nil
,
types
.
ErrInvalidParam
}
if
config
.
Op
==
pt
.
ParacrossNodeGroupApply
{
if
!
strings
.
Contains
(
config
.
Addrs
,
a
.
fromaddr
)
{
clog
.
Error
(
"node group apply fromaddr not one of apply addrs"
,
"addr"
,
a
.
fromaddr
,
"apply"
,
config
.
Addrs
)
return
nil
,
types
.
ErrNotAllow
}
err
:=
a
.
checkNodeGroupExist
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
return
a
.
nodeGroupApply
(
config
)
}
else
if
config
.
Op
==
pt
.
ParacrossNodeGroupApprove
{
err
:=
a
.
checkNodeGroupExist
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
return
a
.
nodeGroupApprove
(
config
)
}
else
if
config
.
Op
==
pt
.
ParacrossNodeGroupQuit
{
if
!
strings
.
Contains
(
config
.
Addrs
,
a
.
fromaddr
)
{
clog
.
Error
(
"node group apply fromaddr not one of apply addrs"
,
"addr"
,
a
.
fromaddr
,
"apply"
,
config
.
Addrs
)
return
nil
,
types
.
ErrNotAllow
}
return
a
.
nodeGroupQuit
(
config
)
}
else
{
return
nil
,
pt
.
ErrParaUnSupportNodeOper
}
}
func
getAddrGroup
(
addr
string
)
[]
string
{
if
strings
.
Contains
(
addr
,
","
)
{
...
...
@@ -799,3 +722,68 @@ func (a *action) nodeGroupCreate(title string, nodes []string, coinFrozen int64)
}
return
receipt
,
nil
}
//NodeConfig support super account node config
func
(
a
*
action
)
NodeGroupConfig
(
config
*
pt
.
ParaNodeGroupApply
)
(
*
types
.
Receipt
,
error
)
{
if
!
validTitle
(
config
.
Title
)
{
return
nil
,
pt
.
ErrInvalidTitle
}
if
len
(
config
.
Addrs
)
==
0
{
return
nil
,
types
.
ErrInvalidParam
}
if
config
.
Op
==
pt
.
ParacrossNodeGroupApply
{
if
!
strings
.
Contains
(
config
.
Addrs
,
a
.
fromaddr
)
{
clog
.
Error
(
"node group apply fromaddr not one of apply addrs"
,
"addr"
,
a
.
fromaddr
,
"apply"
,
config
.
Addrs
)
return
nil
,
types
.
ErrNotAllow
}
err
:=
a
.
checkNodeGroupExist
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
return
a
.
nodeGroupApply
(
config
)
}
else
if
config
.
Op
==
pt
.
ParacrossNodeGroupApprove
{
err
:=
a
.
checkNodeGroupExist
(
config
.
Title
)
if
err
!=
nil
{
return
nil
,
err
}
return
a
.
nodeGroupApprove
(
config
)
}
else
if
config
.
Op
==
pt
.
ParacrossNodeGroupQuit
{
if
!
strings
.
Contains
(
config
.
Addrs
,
a
.
fromaddr
)
{
clog
.
Error
(
"node group apply fromaddr not one of apply addrs"
,
"addr"
,
a
.
fromaddr
,
"apply"
,
config
.
Addrs
)
return
nil
,
types
.
ErrNotAllow
}
return
a
.
nodeGroupQuit
(
config
)
}
else
{
return
nil
,
pt
.
ErrParaUnSupportNodeOper
}
}
//NodeConfig support super account node config
func
(
a
*
action
)
NodeConfig
(
config
*
pt
.
ParaNodeAddrConfig
)
(
*
types
.
Receipt
,
error
)
{
if
!
validTitle
(
config
.
Title
)
{
return
nil
,
pt
.
ErrInvalidTitle
}
if
config
.
Op
==
pt
.
ParaNodeJoin
{
if
config
.
Addr
!=
a
.
fromaddr
{
return
nil
,
types
.
ErrFromAddr
}
return
a
.
nodeJoin
(
config
)
}
else
if
config
.
Op
==
pt
.
ParaNodeQuit
{
if
config
.
Addr
!=
a
.
fromaddr
{
return
nil
,
types
.
ErrFromAddr
}
return
a
.
nodeQuit
(
config
)
}
else
if
config
.
Op
==
pt
.
ParaNodeVote
{
return
a
.
nodeVote
(
config
)
}
else
{
return
nil
,
pt
.
ErrParaUnSupportNodeOper
}
}
plugin/dapp/paracross/executor/superaccount_test.go
View file @
e7a77cac
...
...
@@ -23,8 +23,13 @@ var (
PrivKey14K
=
"CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
// 14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
Account14K
=
"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
Account1MC
=
"1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
applyAddrs
=
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4, 1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR, 1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
Account12Q
=
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
PrivKey12Q
=
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
)
type
NodeManageTestSuite
struct
{
suite
.
Suite
stateDB
dbm
.
KV
...
...
@@ -32,6 +37,7 @@ type NodeManageTestSuite struct {
api
*
apimock
.
QueueProtocolAPI
exec
*
Paracross
//title string
}
func
(
suite
*
NodeManageTestSuite
)
SetupSuite
()
{
...
...
@@ -57,6 +63,7 @@ func (suite *NodeManageTestSuite) SetupSuite() {
//}
types
.
S
(
"config.consensus.sub.para.MainForkParacrossCommitTx"
,
int64
(
1
))
types
.
S
(
"config.exec.sub.manage.superManager"
,[]
interface
{}{
Account12Q
})
// TODO, more fields
// setup block
...
...
@@ -65,16 +72,6 @@ func (suite *NodeManageTestSuite) SetupSuite() {
}
MainBlockHash10
=
blockDetail
.
Block
.
Hash
()
// setup title nodes : len = 4
nodeConfigKey
:=
calcManageConfigNodesKey
(
Title
)
nodeValue
:=
makeNodeInfo
(
Title
,
Title
,
4
)
suite
.
stateDB
.
Set
(
nodeConfigKey
,
types
.
Encode
(
nodeValue
))
value
,
err
:=
suite
.
stateDB
.
Get
(
nodeConfigKey
)
if
err
!=
nil
{
suite
.
T
()
.
Error
(
"get setup title failed"
,
err
)
return
}
assert
.
Equal
(
suite
.
T
(),
value
,
types
.
Encode
(
nodeValue
))
}
...
...
@@ -104,6 +101,37 @@ func nodeCommitImpl(suite suite.Suite, exec *Paracross, privkeyStr string, tx *t
return
}
func
checkGroupApplyReceipt
(
suite
*
NodeManageTestSuite
,
receipt
*
types
.
Receipt
)
{
assert
.
Equal
(
suite
.
T
(),
receipt
.
Ty
,
int32
(
types
.
ExecOk
))
assert
.
Len
(
suite
.
T
(),
receipt
.
KV
,
1
)
assert
.
Len
(
suite
.
T
(),
receipt
.
Logs
,
1
)
var
stat
pt
.
ParaNodeAddrStatus
err
:=
types
.
Decode
(
receipt
.
KV
[
0
]
.
Value
,
&
stat
)
assert
.
Nil
(
suite
.
T
(),
err
,
"decode ParaNodeAddrStatus failed"
)
//suite.T().Log("titleHeight", titleHeight)
assert
.
Equal
(
suite
.
T
(),
int32
(
pt
.
TyLogParaNodeGroupApply
),
receipt
.
Logs
[
0
]
.
Ty
)
assert
.
Equal
(
suite
.
T
(),
int32
(
pt
.
ParacrossNodeGroupApply
),
stat
.
Status
)
}
func
checkGroupApproveReceipt
(
suite
*
NodeManageTestSuite
,
receipt
*
types
.
Receipt
)
{
assert
.
Equal
(
suite
.
T
(),
receipt
.
Ty
,
int32
(
types
.
ExecOk
))
assert
.
Len
(
suite
.
T
(),
receipt
.
KV
,
6
)
assert
.
Len
(
suite
.
T
(),
receipt
.
Logs
,
6
)
len
:=
len
(
receipt
.
KV
)
var
stat
pt
.
ParaNodeAddrStatus
err
:=
types
.
Decode
(
receipt
.
KV
[
len
-
1
]
.
Value
,
&
stat
)
assert
.
Nil
(
suite
.
T
(),
err
,
"decode ParaNodeAddrStatus failed"
)
//suite.T().Log("titleHeight", titleHeight)
assert
.
Equal
(
suite
.
T
(),
int32
(
pt
.
TyLogParaNodeGroupApprove
),
receipt
.
Logs
[
len
-
1
]
.
Ty
)
assert
.
Equal
(
suite
.
T
(),
int32
(
pt
.
ParacrossNodeGroupApprove
),
stat
.
Status
)
}
func
checkJoinReceipt
(
suite
*
NodeManageTestSuite
,
receipt
*
types
.
Receipt
)
{
assert
.
Equal
(
suite
.
T
(),
receipt
.
Ty
,
int32
(
types
.
ExecOk
))
assert
.
Len
(
suite
.
T
(),
receipt
.
KV
,
1
)
...
...
@@ -190,23 +218,37 @@ func voteTest(suite *NodeManageTestSuite, addr string, join bool) {
checkVoteDoneReceipt
(
suite
,
receipt
,
3
,
join
)
}
func
(
suite
*
NodeManageTestSuite
)
TestExec
()
{
//t
akeover
config
:=
&
pt
.
ParaNode
AddrConfig
{
Op
:
pt
.
ParaNodeTakeover
,
Addr
:
Account14K
,
func
(
suite
*
NodeManageTestSuite
)
testNodeGroupConfig
()
{
//t
itle := types.GetTitle()
config
:=
&
pt
.
ParaNode
GroupApply
{
Addrs
:
applyAddrs
,
Op
:
pt
.
ParacrossNodeGroupApply
,
}
tx
,
err
:=
pt
.
CreateRawNodeConfigTx
(
config
)
tx
,
err
:=
pt
.
CreateRawNodeGroupApplyTx
(
config
)
suite
.
Nil
(
err
)
receipt
:=
nodeCommit
(
suite
,
PrivKeyB
,
tx
)
checkGroupApplyReceipt
(
suite
,
receipt
)
config
=
&
pt
.
ParaNodeGroupApply
{
Addrs
:
applyAddrs
,
Op
:
pt
.
ParacrossNodeGroupApprove
,
}
tx
,
err
=
pt
.
CreateRawNodeGroupApplyTx
(
config
)
suite
.
Nil
(
err
)
nodeCommit
(
suite
,
PrivKey14K
,
tx
)
//checkJoinReceipt(suite, receipt)
receipt
=
nodeCommit
(
suite
,
PrivKey12Q
,
tx
)
checkGroupApproveReceipt
(
suite
,
receipt
)
}
func
(
suite
*
NodeManageTestSuite
)
testNodeConfig
()
{
//Join test
config
=
&
pt
.
ParaNodeAddrConfig
{
config
:
=
&
pt
.
ParaNodeAddrConfig
{
Op
:
pt
.
ParaNodeJoin
,
Addr
:
Account14K
,
}
tx
,
err
=
pt
.
CreateRawNodeConfigTx
(
config
)
tx
,
err
:
=
pt
.
CreateRawNodeConfigTx
(
config
)
suite
.
Nil
(
err
)
receipt
:=
nodeCommit
(
suite
,
PrivKey14K
,
tx
)
...
...
@@ -227,6 +269,11 @@ func (suite *NodeManageTestSuite) TestExec() {
//vote test
voteTest
(
suite
,
Account1MC
,
false
)
}
func
(
s
*
NodeManageTestSuite
)
TestExec
()
{
s
.
testNodeGroupConfig
()
s
.
testNodeConfig
()
}
...
...
@@ -238,3 +285,7 @@ func TestNodeManageSuite(t *testing.T) {
types
.
SetTitleOnlyForTest
(
tempTitle
)
}
func
(
s
*
NodeManageTestSuite
)
TearDownSuite
()
{
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment