Commit 2ba66c02 authored by mdj33's avatar mdj33 Committed by 33cn

add ut

parent 4c276e65
......@@ -519,49 +519,10 @@ out:
continue
}
var status *pt.ParacrossStatus
if isParaSelfConsensusForked(block.MainHeight) {
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
})
if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
continue
}
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
continue
}
status = resp
} else {
//获取主链共识高度
reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitleByHash",
Param: types.Encode(&pt.ReqParacrossTitleHash{Title: types.GetTitle(), BlockHash: block.MainHash}),
})
if err != nil {
plog.Error("getMainConsensusHeight", "err", err.Error())
continue
}
if !reply.GetIsOk() {
plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg())
continue
}
var result pt.ParacrossStatus
err = types.Decode(reply.Msg, &result)
if err != nil {
plog.Error("getMainConsensusHeight decode", "err", err.Error())
continue
}
status = &result
status, err := client.getConsensusStatus(block)
if err != nil {
continue
}
consensusRst <- status
}
}
......@@ -569,6 +530,49 @@ out:
client.paraClient.wg.Done()
}
func (client *commitMsgClient) getConsensusStatus(block *types.Block) (*pt.ParacrossStatus, error) {
//获取主链共识高度
if !isParaSelfConsensusForked(block.MainHeight) {
reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitleByHash",
Param: types.Encode(&pt.ReqParacrossTitleHash{Title: types.GetTitle(), BlockHash: block.MainHash}),
})
if err != nil {
plog.Error("getMainConsensusHeight", "err", err.Error())
return nil, err
}
if !reply.GetIsOk() {
plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg())
return nil, err
}
var result pt.ParacrossStatus
err = types.Decode(reply.Msg, &result)
if err != nil {
plog.Error("getMainConsensusHeight decode", "err", err.Error())
return nil, err
}
return &result, nil
}
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
})
if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
return nil, err
}
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
return nil, err
}
return resp, nil
}
func (client *commitMsgClient) fetchPrivacyKey(ch chan crypto.PrivKey) {
defer client.paraClient.wg.Done()
if client.paraClient.authAccount == "" {
......
......@@ -246,3 +246,34 @@ func TestCalcCommitMsgTxs(t *testing.T) {
assert.NotNil(t, tx)
}
func TestGetConsensusStatus(t *testing.T) {
para := new(client)
para.GetAPI()
grpcClient := &typesmocks.Chain33Client{}
//grpcClient.On("GetFork", mock.Anything, &types.ReqKey{Key: []byte("ForkBlockHash")}).Return(&types.Int64{Data: 1}, errors.New("err")).Once()
para.grpcClient = grpcClient
commitCli := new(commitMsgClient)
commitCli.paraClient = para
block := &types.Block{
Height: 1,
MainHeight: 10,
}
status := &pt.ParacrossStatus{
Height: 1,
}
reply := &types.Reply{
IsOk: true,
Msg: types.Encode(status),
}
grpcClient.On("QueryChain", mock.Anything, mock.Anything).Return(reply, nil).Once()
ret, err := commitCli.getConsensusStatus(block)
assert.Nil(t, err)
assert.Equal(t, int64(1), ret.Height)
mainParaSelfConsensusForkHeight = 1
}
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