Commit 1e3095ef authored by liuyuhang's avatar liuyuhang Committed by 33cn

add comment test and rpc test

parent 2138931a
...@@ -97,7 +97,7 @@ func (a *Autonomy) Exec_Transfer(payload *auty.TransferFund, tx *types.Transacti ...@@ -97,7 +97,7 @@ func (a *Autonomy) Exec_Transfer(payload *auty.TransferFund, tx *types.Transacti
} }
// Exec_Comment 评论提案 // Exec_Comment 评论提案
func (a *Autonomy) Exec_Comment(payload *auty.Comment, tx *types.Transaction, index int) (*types.Receipt, error) { func (a *Autonomy) Exec_CommentProp(payload *auty.Comment, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(a, tx, int32(index)) action := newAction(a, tx, int32(index))
return action.comment(payload) return action.commentProp(payload)
} }
\ No newline at end of file
...@@ -78,6 +78,6 @@ func (a *Autonomy) ExecDelLocal_TmintPropRule(payload *auty.TerminateProposalRul ...@@ -78,6 +78,6 @@ func (a *Autonomy) ExecDelLocal_TmintPropRule(payload *auty.TerminateProposalRul
} }
// ExecDelLocal_TmintPropRule 终止提案规则 // ExecDelLocal_TmintPropRule 终止提案规则
func (a *Autonomy) ExecDelLocal_Comment(payload *auty.Comment, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (a *Autonomy) ExecDelLocal_CommentProp(payload *auty.Comment, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return a.execDelLocalComment(receiptData) return a.execDelLocalCommentProp(receiptData)
} }
\ No newline at end of file
...@@ -78,6 +78,6 @@ func (a *Autonomy) ExecLocal_TmintPropRule(payload *auty.TerminateProposalRule, ...@@ -78,6 +78,6 @@ func (a *Autonomy) ExecLocal_TmintPropRule(payload *auty.TerminateProposalRule,
} }
// ExecLocal_Comment 评论提案 // ExecLocal_Comment 评论提案
func (a *Autonomy) ExecLocal_Comment(payload *auty.Comment, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (a *Autonomy) ExecLocal_CommentProp(payload *auty.Comment, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return a.execLocalComment(receiptData) return a.execLocalCommentProp(receiptData)
} }
\ No newline at end of file
...@@ -147,7 +147,7 @@ func (a *Autonomy) listProposalRule(req *auty.ReqQueryProposalRule) (types.Messa ...@@ -147,7 +147,7 @@ func (a *Autonomy) listProposalRule(req *auty.ReqQueryProposalRule) (types.Messa
return &rep, nil return &rep, nil
} }
func (a *Autonomy) execLocalComment(receiptData *types.ReceiptData) (*types.LocalDBSet, error) { func (a *Autonomy) execLocalCommentProp(receiptData *types.ReceiptData) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
var set []*types.KeyValue var set []*types.KeyValue
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
...@@ -173,12 +173,17 @@ func (a *Autonomy) execLocalComment(receiptData *types.ReceiptData) (*types.Loca ...@@ -173,12 +173,17 @@ func (a *Autonomy) execLocalComment(receiptData *types.ReceiptData) (*types.Loca
func saveCommentHeightIndex(res *auty.ReceiptProposalComment) (kvs []*types.KeyValue) { func saveCommentHeightIndex(res *auty.ReceiptProposalComment) (kvs []*types.KeyValue) {
kv := &types.KeyValue{} kv := &types.KeyValue{}
kv.Key = calcCommentHeight(res.Cmt.ProposalID, dapp.HeightIndexStr(res.Height, int64(res.Index))) kv.Key = calcCommentHeight(res.Cmt.ProposalID, dapp.HeightIndexStr(res.Height, int64(res.Index)))
kv.Value = types.Encode(&auty.RelationCmt{RepCmtHash: res.Cmt.RepCmtHash, Comment: res.Cmt.Comment}) kv.Value = types.Encode(&auty.RelationCmt{
RepCmtHash: res.Cmt.RepCmtHash,
Comment: res.Cmt.Comment,
Height: res.Height,
Index: res.Index,
})
kvs = append(kvs, kv) kvs = append(kvs, kv)
return kvs return kvs
} }
func (a *Autonomy) execDelLocalComment(receiptData *types.ReceiptData) (*types.LocalDBSet, error) { func (a *Autonomy) execDelLocalCommentProp(receiptData *types.ReceiptData) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
var set []*types.KeyValue var set []*types.KeyValue
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
......
...@@ -259,4 +259,163 @@ func TestListProposalRule(t *testing.T) { ...@@ -259,4 +259,163 @@ func TestListProposalRule(t *testing.T) {
require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[0].Index, int32(testcase2[1].index)) require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[0].Index, int32(testcase2[1].index))
require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[1].Height, testcase2[0].height) require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[1].Height, testcase2[0].height)
require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[1].Index, int32(testcase2[0].index)) require.Equal(t, rsp.(*auty.ReplyQueryProposalRule).PropRules[1].Index, int32(testcase2[0].index))
} }
\ No newline at end of file
func TestExecLocalCommentProp(t *testing.T) {
au := &Autonomy{}
propID := "11111111111111"
Repcmt := "2222222222"
comment := "3333333333"
receiptCmt := &auty.ReceiptProposalComment {
Cmt: &auty.Comment{
ProposalID: propID,
RepCmtHash:Repcmt,
Comment:comment,
},
Height: 11,
Index: 1,
}
receipt := &types.ReceiptData{
Logs: []*types.ReceiptLog{
{Ty: auty.TyLogCommentProp, Log:types.Encode(receiptCmt)},
},
}
set, err := au.execLocalCommentProp(receipt)
require.NoError(t, err)
require.NotNil(t, set)
require.Equal(t, set.KV[0].Key, calcCommentHeight(propID,
dapp.HeightIndexStr(receiptCmt.Height, int64(receiptCmt.Index))))
require.NotNil(t, set.KV[0].Value)
}
func TestExecDelLocalCommentProp(t *testing.T) {
au := &Autonomy{}
propID := "11111111111111"
Repcmt := "2222222222"
comment := "3333333333"
receiptCmt := &auty.ReceiptProposalComment {
Cmt: &auty.Comment{
ProposalID: propID,
RepCmtHash:Repcmt,
Comment:comment,
},
Height: 11,
Index: 1,
}
receipt := &types.ReceiptData{
Logs: []*types.ReceiptLog{
{Ty: auty.TyLogCommentProp, Log:types.Encode(receiptCmt)},
},
}
set, err := au.execDelLocalCommentProp(receipt)
require.NoError(t, err)
require.NotNil(t, set)
require.Equal(t, set.KV[0].Key, calcCommentHeight(propID,
dapp.HeightIndexStr(receiptCmt.Height, int64(receiptCmt.Index))))
require.Nil(t, set.KV[0].Value)
}
func TestListProposalComment(t *testing.T) {
au := &Autonomy{
dapp.DriverBase{},
}
_, _, kvdb := util.CreateTestDB()
au.SetLocalDB(kvdb)
type statu struct {
propId string
height int64
index int64
}
propID := "3333333333"
propID1 := "2222222"
propID2 := "111111111111"
testcase1 := []statu{
{propID, 10, 2},
{propID1, 15, 1},
{propID, 20, 1},
}
testcase2 := []statu{
{propID2, 10, 1},
{propID2, 20, 2},
{propID2, 20, 5},
}
var testcase []statu
testcase = append(testcase, testcase1...)
testcase = append(testcase, testcase2...)
cur := &auty.RelationCmt{
RepCmtHash:"aaaaaa",
Comment:"bbbbbbbbbb",
}
for _, tcase := range testcase {
key := calcCommentHeight(tcase.propId,
dapp.HeightIndexStr(tcase.height, int64(tcase.index)))
cur.Height = tcase.height
cur.Index = int32(tcase.index)
value := types.Encode(cur)
kvdb.Set(key, value)
}
// 反向查找
req := &auty.ReqQueryProposalComment{
ProposalID:propID2,
Count:10,
Direction:0,
Index: -1,
}
rsp, err := au.listProposalComment(req)
require.NoError(t, err)
require.Equal(t, len(rsp.(*auty.ReplyQueryProposalComment).RltCmt), len(testcase2))
k := 2
for _, tcase := range testcase2 {
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[k].Height, tcase.height)
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[k].Index, int32(tcase.index))
k--
}
// 正向查找
req = &auty.ReqQueryProposalComment{
ProposalID:propID2,
Count:10,
Direction:1,
Index: -1,
}
rsp, err = au.listProposalComment(req)
require.NoError(t, err)
require.Equal(t, len(rsp.(*auty.ReplyQueryProposalComment).RltCmt), len(testcase2))
for i, tcase := range testcase2 {
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[i].Height, tcase.height)
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[i].Index, int32(tcase.index))
}
// 翻页查找
req = &auty.ReqQueryProposalComment{
ProposalID:propID2,
Count:1,
Direction:0,
Index: -1,
}
rsp, err = au.listProposalComment(req)
require.NoError(t, err)
require.Equal(t, len(rsp.(*auty.ReplyQueryProposalComment).RltCmt), 1)
height := rsp.(*auty.ReplyQueryProposalComment).RltCmt[0].Height
index := rsp.(*auty.ReplyQueryProposalComment).RltCmt[0].Index
require.Equal(t, height, testcase2[2].height)
require.Equal(t, index, int32(testcase2[2].index))
//
Index := height*types.MaxTxsPerBlock + int64(index)
req = &auty.ReqQueryProposalComment{
ProposalID:propID2,
Count:10,
Direction:0,
Index: Index,
}
rsp, err = au.listProposalComment(req)
require.Equal(t, len(rsp.(*auty.ReplyQueryProposalComment).RltCmt), 2)
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[0].Height, testcase2[1].height)
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[0].Index, int32(testcase2[1].index))
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[1].Height, testcase2[0].height)
require.Equal(t, rsp.(*auty.ReplyQueryProposalComment).RltCmt[1].Index, int32(testcase2[0].index))
}
...@@ -325,10 +325,10 @@ func (a *action) transfer(tf *auty.TransferFund) (*types.Receipt, error) { ...@@ -325,10 +325,10 @@ func (a *action) transfer(tf *auty.TransferFund) (*types.Receipt, error) {
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
} }
func (a *action) comment(cm *auty.Comment) (*types.Receipt, error) { func (a *action) commentProp(cm *auty.Comment) (*types.Receipt, error) {
if cm.Comment == "" || cm.ProposalID == "" { if cm.Comment == "" || cm.ProposalID == "" {
err := types.ErrInvalidParam err := types.ErrInvalidParam
alog.Error("autonomy comment ", "addr", a.fromaddr, "execaddr", a.execaddr, "Comment or proposalID empty", err) alog.Error("autonomy commentProp ", "addr", a.fromaddr, "execaddr", a.execaddr, "Comment or proposalID empty", err)
return nil, err return nil, err
} }
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
......
...@@ -473,4 +473,97 @@ func TestUpgradeRule(t *testing.T) { ...@@ -473,4 +473,97 @@ func TestUpgradeRule(t *testing.T) {
require.Equal(t, new.ProposalAmount , modify.ProposalAmount) require.Equal(t, new.ProposalAmount , modify.ProposalAmount)
require.Equal(t, new.LargeProjectAmount, modify.LargeProjectAmount) require.Equal(t, new.LargeProjectAmount, modify.LargeProjectAmount)
require.Equal(t, new.PublicPeriod, modify.PublicPeriod) require.Equal(t, new.PublicPeriod, modify.PublicPeriod)
}
func TestTransfer(t *testing.T) {
env, exec, stateDB, _ := InitEnv()
opt1 := &auty.TransferFund{
Amount: types.Coin * 190,
}
pbtx, err := transferFundTx(opt1)
require.NoError(t, err)
pbtx, err = signTx(pbtx, PrivKeyA)
require.NoError(t, err)
exec.SetEnv(env.blockHeight, env.blockTime, env.difficulty)
receipt, err := exec.Exec(pbtx, int(1))
require.NoError(t, err)
require.NotNil(t, receipt)
for _, kv := range receipt.KV {
stateDB.Set(kv.Key, kv.Value)
}
// check
accCoin := account.NewCoinsAccount()
accCoin.SetDB(stateDB)
account := accCoin.LoadExecAccount(AddrA, address.ExecAddress(auty.AutonomyX))
require.Equal(t, total - types.Coin * 190, account.Balance)
account = accCoin.LoadExecAccount(autonomyFundAddr, address.ExecAddress(auty.AutonomyX))
require.Equal(t, types.Coin * 190, account.Balance)
}
func transferFundTx(parm *auty.TransferFund) (*types.Transaction, error) {
if parm == nil {
return nil, types.ErrInvalidParam
}
val := &auty.AutonomyAction{
Ty: auty.AutonomyActionTransfer,
Value: &auty.AutonomyAction_Transfer{Transfer: parm},
}
return types.CreateFormatTx(types.ExecName(auty.AutonomyX), types.Encode(val))
}
func TestComment(t *testing.T) {
env, exec, stateDB, kvdb := InitEnv()
propID := "11111111111111"
Repcmt := "2222222222"
comment := "3333333333"
opt1 := &auty.Comment{
ProposalID: propID,
RepCmtHash: Repcmt,
Comment:comment,
}
pbtx, err := commentPropTx(opt1)
require.NoError(t, err)
pbtx, err = signTx(pbtx, PrivKeyA)
require.NoError(t, err)
exec.SetEnv(env.blockHeight, env.blockTime, env.difficulty)
receipt, err := exec.Exec(pbtx, int(1))
require.NoError(t, err)
require.NotNil(t, receipt)
for _, kv := range receipt.KV {
stateDB.Set(kv.Key, kv.Value)
}
receiptData := &types.ReceiptData{Ty: receipt.Ty, Logs: receipt.Logs}
set, err := exec.ExecLocal(pbtx, receiptData, int(1))
require.NoError(t, err)
require.NotNil(t, set)
for _, kv := range set.KV {
kvdb.Set(kv.Key, kv.Value)
}
// check
value, err := kvdb.Get(calcCommentHeight(propID, drivers.HeightIndexStr(env.blockHeight, 1)))
require.NoError(t, err)
cmt := &auty.RelationCmt{}
err = types.Decode(value, cmt)
require.NoError(t, err)
require.Equal(t, cmt.Comment, comment)
require.Equal(t, cmt.RepCmtHash, Repcmt)
}
func commentPropTx(parm *auty.Comment) (*types.Transaction, error) {
if parm == nil {
return nil, types.ErrInvalidParam
}
val := &auty.AutonomyAction{
Ty: auty.AutonomyActionCommentProp,
Value: &auty.AutonomyAction_CommentProp{CommentProp: parm},
}
return types.CreateFormatTx(types.ExecName(auty.AutonomyX), types.Encode(val))
} }
\ No newline at end of file
...@@ -101,6 +101,8 @@ message ReqQueryProposalComment { ...@@ -101,6 +101,8 @@ message ReqQueryProposalComment {
message RelationCmt { message RelationCmt {
string repCmtHash = 1; string repCmtHash = 1;
string comment = 2; string comment = 2;
int64 height = 3;
int32 index = 4;
} }
message ReplyQueryProposalComment { message ReplyQueryProposalComment {
......
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package rpc_test
import (
"testing"
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
_ "github.com/33cn/chain33/system"
_ "github.com/33cn/plugin/plugin"
)
func testPropBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.ProposalBoard{}
var res string
return jrpc.Call("autonomy.PropBoardTx", params, &res)
}
func testRevokeProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.RevokeProposalBoard{}
var res string
return jrpc.Call("autonomy.RevokeProposalBoardTx", params, &res)
}
func testVoteProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.VoteProposalBoard{}
var res string
return jrpc.Call("autonomy.VoteProposalBoardTx", params, &res)
}
func testTerminateProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.TerminateProposalBoard{}
var res string
return jrpc.Call("autonomy.TerminateProposalBoardTx", params, &res)
}
func testGetProposalBoardCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &types.ReqString{}
params.FuncName = auty.GetProposalBoard
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalBoard{}
return jrpc.Call("Chain33.Query", params, rep)
}
func testListProposalBoardCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &auty.ReqQueryProposalBoard{}
params.FuncName = auty.ListProposalBoard
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalBoard{}
return jrpc.Call("Chain33.Query", params, rep)
}
...@@ -10,10 +10,8 @@ import ( ...@@ -10,10 +10,8 @@ import (
commonlog "github.com/33cn/chain33/common/log" commonlog "github.com/33cn/chain33/common/log"
"github.com/33cn/chain33/rpc/jsonclient" "github.com/33cn/chain33/rpc/jsonclient"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
"github.com/33cn/chain33/util/testnode" "github.com/33cn/chain33/util/testnode"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
_ "github.com/33cn/chain33/system" _ "github.com/33cn/chain33/system"
...@@ -43,6 +41,26 @@ func TestJRPCChannel(t *testing.T) { ...@@ -43,6 +41,26 @@ func TestJRPCChannel(t *testing.T) {
{fn: testVoteProposalBoardTxCmd}, {fn: testVoteProposalBoardTxCmd},
{fn: testTerminateProposalBoardTxCmd}, {fn: testTerminateProposalBoardTxCmd},
{fn: testGetProposalBoardCmd}, {fn: testGetProposalBoardCmd},
{fn: testListProposalBoardCmd},
{fn: testPropProjectTxCmd},
{fn: testRevokeProposalProjectTxCmd},
{fn: testVoteProposalProjectTxCmd},
{fn: testPubVoteProposalProjectTxCmd},
{fn: testTerminateProposalProjectTxCmd},
{fn: testGetProposalProjectCmd},
{fn: testListProposalProjectCmd},
{fn: testPropRuleTxCmd},
{fn: testRevokeProposalRuleTxCmd},
{fn: testVoteProposalRuleTxCmd},
{fn: testTerminateProposalRuleTxCmd},
{fn: testGetProposalRuleCmd},
{fn: testListProposalRuleCmd},
{fn: testTransferFundTxCmd},
{fn: testCommentProposalTxCmd},
{fn: testListProposalCommentCmd},
} }
for index, testCase := range testCases { for index, testCase := range testCases {
err := testCase.fn(t, jrpcClient) err := testCase.fn(t, jrpcClient)
...@@ -55,37 +73,3 @@ func TestJRPCChannel(t *testing.T) { ...@@ -55,37 +73,3 @@ func TestJRPCChannel(t *testing.T) {
} }
} }
} }
func testPropBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.ProposalBoard{}
var res string
return jrpc.Call("autonomy.PropBoardTx", params, &res)
}
func testRevokeProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.RevokeProposalBoard{}
var res string
return jrpc.Call("autonomy.RevokeProposalBoardTx", params, &res)
}
func testVoteProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.VoteProposalBoard{}
var res string
return jrpc.Call("autonomy.VoteProposalBoardTx", params, &res)
}
func testTerminateProposalBoardTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.TerminateProposalBoard{}
var res string
return jrpc.Call("autonomy.TerminateProposalBoardTx", params, &res)
}
func testGetProposalBoardCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &auty.ReqQueryProposalBoard{}
params.FuncName = auty.GetProposalBoard
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalBoard{}
return jrpc.Call("Chain33.Query", params, rep)
}
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package rpc_test
import (
"testing"
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
_ "github.com/33cn/chain33/system"
_ "github.com/33cn/plugin/plugin"
)
func testPropProjectTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.ProposalProject{}
var res string
return jrpc.Call("autonomy.PropProjectTx", params, &res)
}
func testRevokeProposalProjectTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.RevokeProposalProject{}
var res string
return jrpc.Call("autonomy.RevokeProposalProjectTx", params, &res)
}
func testVoteProposalProjectTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.VoteProposalProject{}
var res string
return jrpc.Call("autonomy.VoteProposalProjectTx", params, &res)
}
func testPubVoteProposalProjectTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.PubVoteProposalProject{}
var res string
return jrpc.Call("autonomy.PubVoteProposalProjectTx", params, &res)
}
func testTerminateProposalProjectTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.TerminateProposalProject{}
var res string
return jrpc.Call("autonomy.TerminateProposalProjectTx", params, &res)
}
func testGetProposalProjectCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &types.ReqString{}
params.FuncName = auty.GetProposalProject
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalProject{}
return jrpc.Call("Chain33.Query", params, rep)
}
func testListProposalProjectCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &auty.ReqQueryProposalProject{}
params.FuncName = auty.ListProposalProject
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalProject{}
return jrpc.Call("Chain33.Query", params, rep)
}
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package rpc_test
import (
"testing"
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
_ "github.com/33cn/chain33/system"
_ "github.com/33cn/plugin/plugin"
)
func testPropRuleTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.ProposalRule{}
var res string
return jrpc.Call("autonomy.PropRuleTx", params, &res)
}
func testRevokeProposalRuleTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.RevokeProposalRule{}
var res string
return jrpc.Call("autonomy.RevokeProposalRuleTx", params, &res)
}
func testVoteProposalRuleTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.VoteProposalRule{}
var res string
return jrpc.Call("autonomy.VoteProposalRuleTx", params, &res)
}
func testTerminateProposalRuleTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.TerminateProposalRule{}
var res string
return jrpc.Call("autonomy.TerminateProposalRuleTx", params, &res)
}
func testGetProposalRuleCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &types.ReqString{}
params.FuncName = auty.GetProposalRule
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalRule{}
return jrpc.Call("Chain33.Query", params, rep)
}
func testListProposalRuleCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &auty.ReqQueryProposalRule{}
params.FuncName = auty.ListProposalRule
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalRule{}
return jrpc.Call("Chain33.Query", params, rep)
}
func testTransferFundTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.TransferFund{}
var res string
return jrpc.Call("autonomy.TransferFundTx", params, &res)
}
func testCommentProposalTxCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &auty.Comment{}
var res string
return jrpc.Call("autonomy.CommentProposalTx", params, &res)
}
func testListProposalCommentCmd(t *testing.T, jrpc *jsonclient.JSONClient) error {
var rep interface{}
var params rpctypes.Query4Jrpc
req := &auty.ReqQueryProposalComment{}
params.FuncName = auty.ListProposalComment
params.Payload = types.MustPBToJSON(req)
rep = &auty.ReplyQueryProposalComment{}
return jrpc.Call("Chain33.Query", params, rep)
}
\ No newline at end of file
...@@ -442,6 +442,8 @@ func (m *ReqQueryProposalComment) GetIndex() int64 { ...@@ -442,6 +442,8 @@ func (m *ReqQueryProposalComment) GetIndex() int64 {
type RelationCmt struct { type RelationCmt struct {
RepCmtHash string `protobuf:"bytes,1,opt,name=repCmtHash" json:"repCmtHash,omitempty"` RepCmtHash string `protobuf:"bytes,1,opt,name=repCmtHash" json:"repCmtHash,omitempty"`
Comment string `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"` Comment string `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"`
Height int64 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"`
Index int32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
} }
func (m *RelationCmt) Reset() { *m = RelationCmt{} } func (m *RelationCmt) Reset() { *m = RelationCmt{} }
...@@ -463,6 +465,20 @@ func (m *RelationCmt) GetComment() string { ...@@ -463,6 +465,20 @@ func (m *RelationCmt) GetComment() string {
return "" return ""
} }
func (m *RelationCmt) GetHeight() int64 {
if m != nil {
return m.Height
}
return 0
}
func (m *RelationCmt) GetIndex() int32 {
if m != nil {
return m.Index
}
return 0
}
type ReplyQueryProposalComment struct { type ReplyQueryProposalComment struct {
RltCmt []*RelationCmt `protobuf:"bytes,1,rep,name=rltCmt" json:"rltCmt,omitempty"` RltCmt []*RelationCmt `protobuf:"bytes,1,rep,name=rltCmt" json:"rltCmt,omitempty"`
} }
...@@ -500,47 +516,48 @@ func init() { ...@@ -500,47 +516,48 @@ func init() {
func init() { proto.RegisterFile("rule.proto", fileDescriptor4) } func init() { proto.RegisterFile("rule.proto", fileDescriptor4) }
var fileDescriptor4 = []byte{ var fileDescriptor4 = []byte{
// 671 bytes of a gzipped FileDescriptorProto // 678 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4d, 0x6f, 0xd3, 0x4a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4d, 0x6f, 0xdb, 0x38,
0x14, 0x95, 0xe3, 0x38, 0xa9, 0x6f, 0xfb, 0xaa, 0x76, 0x9a, 0xd7, 0xe7, 0xd7, 0xf7, 0x54, 0x45, 0x10, 0x85, 0x2c, 0xcb, 0x8e, 0x26, 0xd9, 0x20, 0x61, 0xbc, 0x59, 0x6d, 0x5a, 0x04, 0x86, 0x0e,
0x5e, 0xa0, 0xa8, 0x48, 0x41, 0x7c, 0xa9, 0x82, 0x1d, 0x04, 0x68, 0x91, 0xba, 0x80, 0xa1, 0x62, 0x85, 0x91, 0x02, 0x2e, 0xfa, 0x85, 0xa0, 0xbd, 0xb5, 0xee, 0x47, 0x0a, 0xe4, 0xd0, 0xb2, 0x41,
0x3f, 0xd8, 0xb7, 0x8d, 0x55, 0x7b, 0xc6, 0x8c, 0xc7, 0x51, 0xb3, 0x60, 0xc5, 0x82, 0x1f, 0xcd, 0xef, 0xac, 0x34, 0x89, 0x85, 0x48, 0xa4, 0x4a, 0x51, 0x46, 0x7c, 0xe8, 0xa9, 0x87, 0xfe, 0xe8,
0x06, 0xcd, 0x78, 0xdc, 0xd8, 0x49, 0xd4, 0x52, 0x89, 0x9d, 0xcf, 0x9d, 0x33, 0x1f, 0xe7, 0xcc, 0x5e, 0x0a, 0x52, 0x54, 0x2c, 0xd9, 0x46, 0xd2, 0x00, 0xbd, 0x69, 0x86, 0x8f, 0xe4, 0xbc, 0x37,
0xb9, 0x63, 0x00, 0x59, 0xa6, 0x38, 0xce, 0xa5, 0x50, 0x82, 0x78, 0x6a, 0x9e, 0x63, 0x71, 0xf0, 0x6f, 0x28, 0x00, 0x59, 0xa6, 0x38, 0xce, 0xa5, 0x50, 0x82, 0x78, 0x6a, 0x9e, 0x63, 0x71, 0xf0,
0x57, 0x1a, 0x89, 0x2c, 0x13, 0xbc, 0xaa, 0x86, 0x3f, 0x3a, 0x30, 0x78, 0x55, 0x2a, 0xc1, 0x45, 0x4f, 0x1a, 0x89, 0x2c, 0x13, 0xbc, 0xca, 0x86, 0x3f, 0x3b, 0x30, 0x78, 0x55, 0x2a, 0xc1, 0x45,
0x36, 0xff, 0x20, 0x45, 0x2e, 0x0a, 0x96, 0xd2, 0x32, 0x45, 0xf2, 0x08, 0x36, 0x72, 0x29, 0x72, 0x36, 0xff, 0x28, 0x45, 0x2e, 0x0a, 0x96, 0xd2, 0x32, 0x45, 0xf2, 0x08, 0x36, 0x72, 0x29, 0x72,
0xfd, 0x1d, 0x38, 0x43, 0x67, 0xb4, 0xf9, 0x64, 0x6f, 0x6c, 0x56, 0x18, 0x37, 0x69, 0xf4, 0x86, 0xfd, 0x1d, 0x38, 0x43, 0x67, 0xb4, 0xf9, 0x64, 0x6f, 0x6c, 0x4e, 0x18, 0x37, 0x61, 0xf4, 0x1a,
0x44, 0x1e, 0x42, 0x3f, 0x2a, 0xa5, 0xe1, 0x77, 0x0c, 0x7f, 0xd7, 0xf2, 0x75, 0x69, 0x22, 0xf8, 0x44, 0x1e, 0x42, 0x3f, 0x2a, 0xa5, 0xc1, 0x77, 0x0c, 0x7e, 0xd7, 0xe2, 0x75, 0x6a, 0x22, 0xf8,
0x45, 0x72, 0x49, 0x6b, 0x06, 0x79, 0x0c, 0x30, 0x13, 0x0a, 0x29, 0x16, 0x65, 0xaa, 0x02, 0xb7, 0x79, 0x72, 0x41, 0x6b, 0x04, 0x79, 0x0c, 0x30, 0x13, 0x0a, 0x29, 0x16, 0x65, 0xaa, 0x02, 0xb7,
0xc5, 0xff, 0x7c, 0x33, 0x40, 0x1b, 0x24, 0xb2, 0x0f, 0xbd, 0x42, 0x31, 0x55, 0x16, 0x41, 0x77, 0x85, 0xff, 0x72, 0xbd, 0x40, 0x1b, 0x20, 0xb2, 0x0f, 0xbd, 0x42, 0x31, 0x55, 0x16, 0x41, 0x77,
0xe8, 0x8c, 0x3c, 0x6a, 0x11, 0x09, 0xa0, 0xcf, 0xe2, 0x58, 0x62, 0x51, 0x04, 0xde, 0xd0, 0x19, 0xe8, 0x8c, 0x3c, 0x6a, 0x23, 0x12, 0x40, 0x9f, 0xc5, 0xb1, 0xc4, 0xa2, 0x08, 0xbc, 0xa1, 0x33,
0xf9, 0xb4, 0x86, 0x7a, 0xc6, 0x14, 0x93, 0xcb, 0xa9, 0x0a, 0x7a, 0x43, 0x67, 0xe4, 0x52, 0x8b, 0xf2, 0x69, 0x1d, 0xea, 0x1d, 0x53, 0x4c, 0x2e, 0xa6, 0x2a, 0xe8, 0x0d, 0x9d, 0x91, 0x4b, 0x6d,
0xc8, 0x00, 0xbc, 0x84, 0xc7, 0x78, 0x1d, 0xf4, 0xcd, 0x42, 0x15, 0x08, 0x7f, 0x3a, 0xb0, 0xd5, 0x44, 0x06, 0xe0, 0x25, 0x3c, 0xc6, 0xab, 0xa0, 0x6f, 0x0e, 0xaa, 0x82, 0xf0, 0x97, 0x03, 0x5b,
0x72, 0x80, 0x40, 0x77, 0x8e, 0x4c, 0x1a, 0xf5, 0x1e, 0x35, 0xdf, 0x7a, 0x6a, 0x26, 0xb8, 0x9a, 0x2d, 0x05, 0x08, 0x74, 0xe7, 0xc8, 0xa4, 0x61, 0xef, 0x51, 0xf3, 0xad, 0xb7, 0x66, 0x82, 0xab,
0x1a, 0x89, 0x1e, 0xad, 0x00, 0xd9, 0x01, 0x37, 0x66, 0x73, 0x23, 0xc3, 0xa3, 0xfa, 0x53, 0x9b, 0xa9, 0xa1, 0xe8, 0xd1, 0x2a, 0x20, 0x3b, 0xe0, 0xc6, 0x6c, 0x6e, 0x68, 0x78, 0x54, 0x7f, 0x6a,
0xa1, 0xad, 0x9f, 0x5c, 0x5c, 0x9a, 0xd3, 0xae, 0x37, 0xc3, 0x32, 0xc8, 0x11, 0xec, 0x14, 0x8a, 0x31, 0xb4, 0xf4, 0x93, 0xf3, 0x0b, 0x53, 0xed, 0x7a, 0x31, 0x2c, 0x82, 0x1c, 0xc1, 0x4e, 0xa1,
0x49, 0xf5, 0x3a, 0x15, 0xd1, 0xd5, 0x69, 0x75, 0x62, 0xcf, 0x9c, 0x78, 0xa5, 0x4e, 0x1e, 0xc0, 0x98, 0x54, 0xaf, 0x53, 0x11, 0x5d, 0x9e, 0x54, 0x15, 0x7b, 0xa6, 0xe2, 0x95, 0x3c, 0x79, 0x00,
0x36, 0xf2, 0xb8, 0xc9, 0xac, 0xb4, 0x2d, 0x55, 0xc9, 0x18, 0x88, 0x44, 0x96, 0xbe, 0x6d, 0x73, 0xdb, 0xc8, 0xe3, 0x26, 0xb2, 0xe2, 0xb6, 0x94, 0x25, 0x63, 0x20, 0x12, 0x59, 0xfa, 0xb6, 0x8d,
0xfb, 0x86, 0xbb, 0x66, 0x24, 0x7c, 0x06, 0x84, 0xe2, 0x4c, 0x5c, 0x61, 0xcb, 0x82, 0x43, 0x80, 0xed, 0x1b, 0xec, 0x9a, 0x95, 0xf0, 0x19, 0x10, 0x8a, 0x33, 0x71, 0x89, 0x2d, 0x09, 0x0e, 0x01,
0xdc, 0xe2, 0xf7, 0x6f, 0x8c, 0x11, 0x3e, 0x6d, 0x54, 0xc2, 0x33, 0xd8, 0xd1, 0xb7, 0x75, 0x9f, 0x72, 0x1b, 0x7f, 0x78, 0x63, 0x84, 0xf0, 0x69, 0x23, 0x13, 0x9e, 0xc2, 0x8e, 0xee, 0xd6, 0x5d,
0x39, 0xe6, 0xbe, 0xf2, 0x5c, 0x8a, 0x59, 0x95, 0x93, 0x0d, 0x5a, 0xc3, 0xf0, 0x18, 0xfe, 0x3e, 0xf6, 0x98, 0x7e, 0xe5, 0xb9, 0x14, 0xb3, 0xca, 0x27, 0x1b, 0xb4, 0x0e, 0xc3, 0x63, 0xf8, 0xf7,
0x47, 0x99, 0x25, 0x9c, 0xdd, 0x6f, 0xc9, 0xf0, 0x1b, 0xec, 0x51, 0x8c, 0x30, 0xc9, 0xd5, 0x52, 0x0c, 0x65, 0x96, 0x70, 0x76, 0xb7, 0x23, 0xc3, 0xef, 0xb0, 0x47, 0x31, 0xc2, 0x24, 0x57, 0x4b,
0x84, 0xbb, 0xb9, 0xc4, 0x99, 0x8d, 0xef, 0x7f, 0xf6, 0x06, 0xd6, 0xa5, 0x9d, 0x1a, 0x22, 0x79, 0x16, 0xee, 0xe6, 0x12, 0x67, 0xd6, 0xbe, 0xf7, 0x6c, 0x07, 0xd6, 0xb9, 0x9d, 0x1a, 0x20, 0x79,
0x6e, 0x22, 0x2c, 0x91, 0x2b, 0x1b, 0xe1, 0x5b, 0xe7, 0xd4, 0xdc, 0x70, 0x0a, 0xbb, 0x67, 0x22, 0x6e, 0x2c, 0x2c, 0x91, 0x2b, 0x6b, 0xe1, 0x1b, 0xf7, 0xd4, 0xd8, 0x70, 0x0a, 0xbb, 0xa7, 0x22,
0x62, 0x69, 0x6b, 0xf3, 0xe3, 0x95, 0xfe, 0xb9, 0x75, 0xb1, 0x45, 0x1f, 0x1d, 0xc0, 0x86, 0xee, 0x62, 0x69, 0xeb, 0xf2, 0xe3, 0x95, 0xf9, 0xb9, 0xf1, 0xb0, 0xc5, 0x1c, 0x1d, 0xc0, 0x86, 0x9e,
0x50, 0xe4, 0xaa, 0x08, 0x3a, 0x43, 0x77, 0xe4, 0xd3, 0x1b, 0x1c, 0x5e, 0xc3, 0x80, 0xe2, 0xd7, 0x50, 0xe4, 0xaa, 0x08, 0x3a, 0x43, 0x77, 0xe4, 0xd3, 0xeb, 0x38, 0xbc, 0x82, 0x01, 0xc5, 0x6f,
0x8f, 0x25, 0xca, 0x76, 0xb3, 0x2e, 0x7a, 0xc3, 0x69, 0xf5, 0xc6, 0x00, 0xbc, 0x48, 0x94, 0x56, 0x9f, 0x4a, 0x94, 0xed, 0x61, 0x5d, 0xcc, 0x86, 0xd3, 0x9a, 0x8d, 0x01, 0x78, 0x91, 0x28, 0x2d,
0x8e, 0x47, 0x2b, 0x40, 0xfe, 0x07, 0x3f, 0x4e, 0x24, 0x46, 0x2a, 0x11, 0xdc, 0x86, 0x76, 0x51, 0x1d, 0x8f, 0x56, 0x01, 0xb9, 0x0f, 0x7e, 0x9c, 0x48, 0x8c, 0x54, 0x22, 0xb8, 0x35, 0xed, 0x22,
0x58, 0x74, 0x47, 0xd7, 0x84, 0xc5, 0x76, 0xc7, 0x27, 0xd8, 0xa7, 0x98, 0xa7, 0xf3, 0xd5, 0xbd, 0xb1, 0x98, 0x8e, 0xae, 0x31, 0x8b, 0x9d, 0x8e, 0xcf, 0xb0, 0x4f, 0x31, 0x4f, 0xe7, 0xab, 0x77,
0x5f, 0x80, 0x5f, 0x9f, 0x5d, 0x6f, 0xef, 0xde, 0xa5, 0x74, 0xc1, 0x0e, 0x5f, 0xc2, 0xd6, 0xb9, 0xbf, 0x00, 0xbf, 0xae, 0x5d, 0x5f, 0xef, 0xde, 0xc6, 0x74, 0x81, 0x0e, 0x5f, 0xc2, 0xd6, 0x99,
0x64, 0xbc, 0xb8, 0x40, 0xf9, 0xae, 0xe4, 0xb1, 0x96, 0xc1, 0x32, 0x73, 0x5e, 0xa7, 0x6a, 0xd8, 0x64, 0xbc, 0x38, 0x47, 0xf9, 0xae, 0xe4, 0xb1, 0xa6, 0xc1, 0x32, 0x53, 0xaf, 0x53, 0x0d, 0x6c,
0x0a, 0xe9, 0x4e, 0xe4, 0x42, 0x55, 0x79, 0xf1, 0xa9, 0xf9, 0x0e, 0x23, 0xe8, 0x4f, 0x2a, 0x5b, 0x15, 0xe9, 0x49, 0xe4, 0x42, 0x55, 0x7e, 0xf1, 0xa9, 0xf9, 0x0e, 0x23, 0xe8, 0x4f, 0x2a, 0x59,
0xee, 0x4c, 0xdc, 0x21, 0x80, 0xc4, 0x7c, 0x92, 0xa9, 0x53, 0x56, 0x4c, 0xed, 0x22, 0x8d, 0x8a, 0x6e, 0x75, 0xdc, 0x21, 0x80, 0xc4, 0x7c, 0x92, 0xa9, 0x13, 0x56, 0x4c, 0xed, 0x21, 0x8d, 0x8c,
0x4e, 0xa4, 0x75, 0xd8, 0xb8, 0xe1, 0xd3, 0x1a, 0x86, 0x53, 0xad, 0xba, 0x15, 0xac, 0x7a, 0xcf, 0x76, 0xa4, 0x55, 0xd8, 0xa8, 0xe1, 0xd3, 0x3a, 0x0c, 0xa7, 0x9a, 0x75, 0xcb, 0x58, 0xf5, 0x9d,
0x21, 0xb8, 0x51, 0xa6, 0xec, 0xcd, 0x6e, 0x5b, 0xbd, 0x76, 0x90, 0xea, 0xa1, 0xc6, 0xeb, 0xd3, 0x43, 0x70, 0xa3, 0x4c, 0xd9, 0xce, 0x6e, 0x5b, 0xbe, 0x76, 0x91, 0xea, 0xa5, 0xc6, 0xeb, 0xd3,
0x59, 0xff, 0xfa, 0xb8, 0xcd, 0xd7, 0xe7, 0xbb, 0x03, 0xff, 0x2c, 0x5f, 0xed, 0xef, 0xea, 0xfb, 0x59, 0xff, 0xfa, 0xb8, 0xcd, 0xd7, 0xe7, 0x87, 0x03, 0xff, 0x2d, 0xb7, 0xf6, 0x4f, 0xf9, 0xfd,
0x73, 0xb7, 0x7c, 0x02, 0x9b, 0x14, 0x53, 0xa6, 0x19, 0x93, 0x4c, 0x2d, 0x19, 0xe7, 0xdc, 0x66, 0xbd, 0x2e, 0x97, 0xb0, 0x49, 0x31, 0x65, 0x1a, 0x31, 0xc9, 0xd4, 0x92, 0x70, 0xce, 0x4d, 0xc2,
0x5c, 0xa7, 0x6d, 0xdc, 0x09, 0xfc, 0xbb, 0x1a, 0x97, 0x5a, 0xcf, 0x11, 0xf4, 0x64, 0xaa, 0x26, 0x75, 0x5a, 0xc2, 0x35, 0xc8, 0xbb, 0xeb, 0xc9, 0x77, 0x9b, 0xe4, 0xdf, 0xc3, 0xff, 0xab, 0xe6,
0xc6, 0x3e, 0x1d, 0x17, 0x52, 0xbf, 0x8d, 0x8b, 0xad, 0xa9, 0x65, 0x7c, 0xe9, 0x99, 0xdf, 0xd4, 0xaa, 0xd9, 0x1f, 0x41, 0x4f, 0xa6, 0x6a, 0x62, 0xc4, 0xd6, 0xe6, 0x22, 0xf5, 0x4b, 0xba, 0x28,
0xd3, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x28, 0x01, 0x71, 0xa1, 0xca, 0x06, 0x00, 0x00, 0x94, 0x5a, 0xc4, 0xd7, 0x9e, 0xf9, 0xa9, 0x3d, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x03,
0xbb, 0x1b, 0xf8, 0x06, 0x00, 0x00,
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment