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
8584c38f
Unverified
Commit
8584c38f
authored
Jun 04, 2019
by
vipwzw
Committed by
GitHub
Jun 04, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #483 from zzh33cn/guess-rpc-test
Guess rpc test
parents
e3d68c56
029eadd5
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
359 additions
and
2 deletions
+359
-2
dapp-test-common.sh
build/dapp-test-common.sh
+26
-1
docker-compose.sh
build/docker-compose.sh
+2
-1
Makefile
plugin/dapp/guess/cmd/Makefile
+4
-0
build.sh
plugin/dapp/guess/cmd/build.sh
+15
-0
test-rpc.sh
plugin/dapp/guess/cmd/build/test-rpc.sh
+307
-0
guess.go
plugin/dapp/guess/executor/guess.go
+5
-0
No files found.
build/dapp-test-common.sh
View file @
8584c38f
...
@@ -106,7 +106,7 @@ chain33_ImportPrivkey() {
...
@@ -106,7 +106,7 @@ chain33_ImportPrivkey() {
local
req
=
'"method":"Chain33.ImportPrivkey", "params":[{"privkey":"'
"
$pri
"
'", "label":"'
"
$label
"
'"}]'
local
req
=
'"method":"Chain33.ImportPrivkey", "params":[{"privkey":"'
"
$pri
"
'", "label":"'
"
$label
"
'"}]'
resp
=
$(
curl
-ksd
"{
$req
}"
"
$MAIN_HTTP
"
)
resp
=
$(
curl
-ksd
"{
$req
}"
"
$MAIN_HTTP
"
)
ok
=
$(
jq
'(
.error|not) and (.result.label=="'
"
$label
"
'") and (.result.acc.addr == "'
"
$acc
"
'"
)'
<<<
"
$resp
"
)
ok
=
$(
jq
'(
((.error|not) and (.result.label=="'
"
$label
"
'") and (.result.acc.addr == "'
"
$acc
"
'")) or (.error=="ErrPrivkeyExist")
)'
<<<
"
$resp
"
)
[
"
$ok
"
==
true
]
[
"
$ok
"
==
true
]
}
}
...
@@ -125,3 +125,28 @@ chain33_SignRawTx() {
...
@@ -125,3 +125,28 @@ chain33_SignRawTx() {
echo
"signedTx null error"
echo
"signedTx null error"
fi
fi
}
}
chain33_QueryBalance
()
{
local
addr
=
$1
local
MAIN_HTTP
=
$2
req
=
'"method":"Chain33.GetAllExecBalance","params":[{"addr":"'
"
${
addr
}
"
'"}]'
#echo "#request: $req"
resp
=
$(
curl
-ksd
"{
$req
}"
"
${
MAIN_HTTP
}
"
)
echo
"#response:
$resp
"
ok
=
$(
jq
'(.error|not) and (.result != "")'
<<<
"
$resp
"
)
[
"
$ok
"
==
true
]
echo
"
$resp
"
| jq
-r
".result"
}
chain33_QueryExecBalance
()
{
local
addr
=
$1
local exec
=
$2
local
MAIN_HTTP
=
$3
req
=
'{"method":"Chain33.GetBalance", "params":[{"addresses" : ["'
"
${
addr
}
"
'"], "execer" : "'
"
${
exec
}
"
'"}]}'
resp
=
$(
curl
-ksd
"
$req
"
"
${
MAIN_HTTP
}
"
)
echo
"#response:
$resp
"
ok
=
$(
jq
'(.error|not) and (.result[0] | [has("balance", "frozen"), true] | unique | length == 1)'
<<<
"
$resp
"
)
[
"
$ok
"
==
true
]
}
build/docker-compose.sh
View file @
8584c38f
...
@@ -398,7 +398,8 @@ function main() {
...
@@ -398,7 +398,8 @@ function main() {
dapp_run config
dapp_run config
### test cases ###
### test cases ###
ip
=
$(${
CLI
}
net info | jq
-r
".externalAddr[0:10]"
)
ip
=
$(${
CLI
}
net info | jq
-r
".externalAddr"
)
ip
=
$(
echo
"
$ip
"
|
cut
-d
':'
-f
1
)
dapp_run
test
"
${
ip
}
"
dapp_run
test
"
${
ip
}
"
### rpc test ###
### rpc test ###
...
...
plugin/dapp/guess/cmd/Makefile
0 → 100644
View file @
8584c38f
all
:
chmod
+x ./build.sh
./build.sh
$(OUT)
$(FLAG)
\ No newline at end of file
plugin/dapp/guess/cmd/build.sh
0 → 100755
View file @
8584c38f
#!/usr/bin/env bash
strpwd
=
$(
pwd
)
strcmd
=
${
strpwd
##*dapp/
}
strapp
=
${
strcmd
%/cmd*
}
OUT_DIR
=
"
${
1
}
/
$strapp
"
#FLAG=$2
mkdir
-p
"
${
OUT_DIR
}
"
cp
./build/
*
"
${
OUT_DIR
}
"
OUT_TESTDIR
=
"
${
1
}
/dapptest/
$strapp
"
mkdir
-p
"
${
OUT_TESTDIR
}
"
chmod
+x ./build/test-rpc.sh
cp
./build/test-rpc.sh
"
${
OUT_TESTDIR
}
"
plugin/dapp/guess/cmd/build/test-rpc.sh
0 → 100755
View file @
8584c38f
#!/usr/bin/env bash
# shellcheck disable=SC2128
set
-e
set
-o
pipefail
MAIN_HTTP
=
""
# shellcheck source=/dev/null
source
../dapp-test-common.sh
MAIN_HTTP
=
""
CASE_ERR
=
""
guess_admin_addr
=
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
guess_user1_addr
=
1PUiGcbsccfxW3zuvHXZBJfznziph5miAo
guess_user2_addr
=
1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX
guess_addr
=
""
guess_exec
=
""
eventId
=
""
txhash
=
""
#color
RED
=
'\033[1;31m'
GRE
=
'\033[1;32m'
NOC
=
'\033[0m'
guess_game_start
()
{
echo
"========== # guess start tx begin =========="
tx
=
$(
curl
-ksd
'{"method":"Chain33.CreateTransaction","params":[{"execer":"guess","actionName":"Start", "payload":{"topic":"WorldCup Final","options":"A:France;B:Claodia","category":"football","maxBetsOneTime":10000000000,"maxBetsNumber":100000000000,"devFeeFactor":5,"devFeeAddr":"1D6RFZNp2rh6QdbcZ1d7RWuBUz61We6SD7","platFeeFactor":5,"platFeeAddr":"1PHtChNt3UcfssR7v7trKSk3WJtAWjKjjX"}}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
data
=
$(
curl
-ksd
'{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'
"
$tx
"
'"}]}'
${
MAIN_HTTP
}
| jq
-r
".result.txs[0]"
)
ok
=
$(
jq
'(.execer != "")'
<<<
"
$data
"
)
[
"
$ok
"
==
true
]
echo_rst
"
$FUNCNAME
"
"
$?
"
chain33_SignRawTx
"
$tx
"
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
${
MAIN_HTTP
}
eventId
=
"
${
txhash
}
"
echo
"eventId
$eventId
"
echo
"========== # guess start tx end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
}
guess_game_bet
()
{
local
priv
=
$1
local
opt
=
$2
echo
"========== # guess bet tx begin =========="
tx
=
$(
curl
-ksd
'{"method":"Chain33.CreateTransaction","params":[{"execer":"guess","actionName":"Bet", "payload":{"gameID":"'
"
${
eventId
}
"
'","option":"'
"
${
opt
}
"
'", "betsNum":500000000}}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
data
=
$(
curl
-ksd
'{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'
"
$tx
"
'"}]}'
${
MAIN_HTTP
}
| jq
-r
".result.txs[0]"
)
ok
=
$(
jq
'(.execer != "")'
<<<
"
$data
"
)
[
"
$ok
"
==
true
]
echo_rst
"
$FUNCNAME
"
"
$?
"
chain33_SignRawTx
"
$tx
"
"
${
priv
}
"
${
MAIN_HTTP
}
echo
"========== # guess bet tx end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
}
guess_game_stop
()
{
echo
"========== # guess stop tx begin =========="
tx
=
$(
curl
-ksd
'{"method":"Chain33.CreateTransaction","params":[{"execer":"guess","actionName":"StopBet", "payload":{"gameID":"'
"
${
eventId
}
"
'"}}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
data
=
$(
curl
-ksd
'{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'
"
$tx
"
'"}]}'
${
MAIN_HTTP
}
| jq
-r
".result.txs[0]"
)
ok
=
$(
jq
'(.execer != "")'
<<<
"
$data
"
)
[
"
$ok
"
==
true
]
echo_rst
"
$FUNCNAME
"
"
$?
"
chain33_SignRawTx
"
$tx
"
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
${
MAIN_HTTP
}
echo
"========== # guess stop tx end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
}
guess_game_publish
()
{
echo
"========== # guess publish tx begin =========="
tx
=
$(
curl
-ksd
'{"method":"Chain33.CreateTransaction","params":[{"execer":"guess","actionName":"Publish", "payload":{"gameID":"'
"
${
eventId
}
"
'","result":"A"}}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
data
=
$(
curl
-ksd
'{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'
"
$tx
"
'"}]}'
${
MAIN_HTTP
}
| jq
-r
".result.txs[0]"
)
ok
=
$(
jq
'(.execer != "")'
<<<
"
$data
"
)
[
"
$ok
"
==
true
]
echo_rst
"
$FUNCNAME
"
"
$?
"
chain33_SignRawTx
"
$tx
"
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
${
MAIN_HTTP
}
echo
"========== # guess publish tx end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
}
guess_game_abort
()
{
echo
"========== # guess abort tx begin =========="
tx
=
$(
curl
-ksd
'{"method":"Chain33.CreateTransaction","params":[{"execer":"guess","actionName":"Abort", "payload":{"gameID":"'
"
${
eventId
}
"
'"}}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
data
=
$(
curl
-ksd
'{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'
"
$tx
"
'"}]}'
${
MAIN_HTTP
}
| jq
-r
".result.txs[0]"
)
ok
=
$(
jq
'(.execer != "")'
<<<
"
$data
"
)
[
"
$ok
"
==
true
]
echo_rst
"
$FUNCNAME
"
"
$?
"
chain33_SignRawTx
"
$tx
"
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
${
MAIN_HTTP
}
echo
"========== # guess abort tx end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
}
guess_QueryGameByID
()
{
local
event_id
=
$1
local
status
=
$2
echo
"========== # guess QueryGameByID begin =========="
local
req
=
'"method":"Chain33.Query", "params":[{"execer":"guess","funcName":"QueryGameByID","payload":{"gameID":"'
"
$event_id
"
'"}}]'
#echo "#request: $req"
resp
=
$(
curl
-ksd
"{
$req
}"
${
MAIN_HTTP
})
echo
"#response:
$resp
"
ok
=
$(
jq
'(.result|has("game")) and (.result.game.status == '
"
$status
"
')'
<<<
"
$resp
"
)
[
"
$ok
"
==
true
]
rst
=
$?
echo_rst
"
$FUNCNAME
"
"
$rst
"
echo
"========== # guess QueryGameByID end =========="
}
init
()
{
ispara
=
$(
echo
'"'
"
${
MAIN_HTTP
}
"
'"'
| jq
'.|contains("8901")'
)
echo
"ipara=
$ispara
"
if
[
"
$ispara
"
==
true
]
;
then
guess_addr
=
$(
curl
-ksd
'{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.guess"}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
guess_exec
=
"user.p.para.guess"
else
guess_addr
=
$(
curl
-ksd
'{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"guess"}]}'
${
MAIN_HTTP
}
| jq
-r
".result"
)
guess_exec
=
"guess"
fi
echo
"guess_addr=
$guess_addr
"
local
from
=
"1PUiGcbsccfxW3zuvHXZBJfznziph5miAo"
chain33_SendToAddress
"
$from
"
"
$guess_addr
"
10000000000
${
MAIN_HTTP
}
from
=
"1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX"
chain33_SendToAddress
"
$from
"
"
$guess_addr
"
10000000000
${
MAIN_HTTP
}
chain33_BlockWait 1
"
${
MAIN_HTTP
}
"
}
function
run_test
()
{
#导入地址私钥
chain33_ImportPrivkey
"56942AD84CCF4788ED6DACBC005A1D0C4F91B63BCF0C99A02BE03C8DEAE71138"
"1PUiGcbsccfxW3zuvHXZBJfznziph5miAo"
"user1"
"
$MAIN_HTTP
"
chain33_ImportPrivkey
"2116459C0EC8ED01AA0EEAE35CAC5C96F94473F7816F114873291217303F6989"
"1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX"
"user2"
"
$MAIN_HTTP
"
chain33_ImportPrivkey
"4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01"
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
"admin"
"
$MAIN_HTTP
"
chain33_QueryBalance
"
${
guess_admin_addr
}
"
"
$MAIN_HTTP
"
chain33_QueryBalance
"
${
guess_user1_addr
}
"
"
$MAIN_HTTP
"
chain33_QueryBalance
"
${
guess_user2_addr
}
"
"
$MAIN_HTTP
"
chain33_QueryExecBalance
"
${
guess_user1_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
chain33_QueryExecBalance
"
${
guess_user2_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
#场景1:start -> bet -> bet -> stop -> publish
#管理员创建游戏
guess_game_start
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
11
#用户1下注
guess_game_bet
"56942AD84CCF4788ED6DACBC005A1D0C4F91B63BCF0C99A02BE03C8DEAE71138"
"A"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#用户2下注
guess_game_bet
"2116459C0EC8ED01AA0EEAE35CAC5C96F94473F7816F114873291217303F6989"
"B"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#管理员停止下注
guess_game_stop
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
13
#管理员发布结果
guess_game_publish
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
15
#查询余额
chain33_QueryExecBalance
"
${
guess_user1_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
chain33_QueryExecBalance
"
${
guess_user2_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
#场景2:start->stop->abort
guess_game_start
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
11
#管理员停止下注
guess_game_stop
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
13
#管理员发布结果
guess_game_abort
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
14
#场景3:start->abort
guess_game_start
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
11
#管理员发布结果
guess_game_abort
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
14
#场景4:start->bet->abort
#管理员创建游戏
guess_game_start
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
11
#用户1下注
guess_game_bet
"56942AD84CCF4788ED6DACBC005A1D0C4F91B63BCF0C99A02BE03C8DEAE71138"
"A"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#用户2下注
guess_game_bet
"2116459C0EC8ED01AA0EEAE35CAC5C96F94473F7816F114873291217303F6989"
"B"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#管理员发布结果
guess_game_abort
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
14
#场景5:start->bet->stop->abort
#管理员创建游戏
guess_game_start
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
11
#用户1下注
guess_game_bet
"56942AD84CCF4788ED6DACBC005A1D0C4F91B63BCF0C99A02BE03C8DEAE71138"
"A"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#用户2下注
guess_game_bet
"2116459C0EC8ED01AA0EEAE35CAC5C96F94473F7816F114873291217303F6989"
"B"
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
12
#管理员停止下注
guess_game_stop
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
13
#管理员发布结果
guess_game_abort
#查询游戏状态
guess_QueryGameByID
"
$eventId
"
14
#查询余额
chain33_QueryExecBalance
"
${
guess_user1_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
chain33_QueryExecBalance
"
${
guess_user2_addr
}
"
"
${
guess_exec
}
"
"
$MAIN_HTTP
"
}
function
main
()
{
MAIN_HTTP
=
"
$1
"
echo
"main_ip=
$MAIN_HTTP
"
init
echo
"=========== # guess rpc test start============="
run_test
if
[
-n
"
$CASE_ERR
"
]
;
then
echo
-e
"
${
RED
}
=============Guess Rpc Test Fail=============
${
NOC
}
"
exit
1
else
echo
-e
"
${
GRE
}
=============Guess Rpc Test Pass==============
${
NOC
}
"
fi
echo
"=========== # guess rpc test end============="
}
main
"
$1
"
plugin/dapp/guess/executor/guess.go
View file @
8584c38f
...
@@ -47,6 +47,11 @@ func GetName() string {
...
@@ -47,6 +47,11 @@ func GetName() string {
return
newGuessGame
()
.
GetName
()
return
newGuessGame
()
.
GetName
()
}
}
//ExecutorOrder Exec 的时候 同时执行 ExecLocal
func
(
g
*
Guess
)
ExecutorOrder
()
int64
{
return
drivers
.
ExecLocalSameTime
}
//GetDriverName 获取Guess执行器的名称
//GetDriverName 获取Guess执行器的名称
func
(
g
*
Guess
)
GetDriverName
()
string
{
func
(
g
*
Guess
)
GetDriverName
()
string
{
return
gty
.
GuessX
return
gty
.
GuessX
...
...
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