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

add ut

parent 4c276e65
...@@ -519,27 +519,20 @@ out: ...@@ -519,27 +519,20 @@ out:
continue continue
} }
var status *pt.ParacrossStatus status, err := client.getConsensusStatus(block)
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 { if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
continue continue
} }
resp, ok := ret.(*pt.ParacrossStatus) consensusRst <- status
if !ok { }
plog.Error("getConsensusHeight ParacrossStatus nok")
continue
} }
status = resp
} else { 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{ reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
Driver: "paracross", Driver: "paracross",
FuncName: "GetTitleByHash", FuncName: "GetTitleByHash",
...@@ -547,26 +540,37 @@ out: ...@@ -547,26 +540,37 @@ out:
}) })
if err != nil { if err != nil {
plog.Error("getMainConsensusHeight", "err", err.Error()) plog.Error("getMainConsensusHeight", "err", err.Error())
continue return nil, err
} }
if !reply.GetIsOk() { if !reply.GetIsOk() {
plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg()) plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg())
continue return nil, err
} }
var result pt.ParacrossStatus var result pt.ParacrossStatus
err = types.Decode(reply.Msg, &result) err = types.Decode(reply.Msg, &result)
if err != nil { if err != nil {
plog.Error("getMainConsensusHeight decode", "err", err.Error()) plog.Error("getMainConsensusHeight decode", "err", err.Error())
continue return nil, err
} }
status = &result return &result, nil
} }
consensusRst <- status //从本地查询共识高度
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
client.paraClient.wg.Done()
} }
func (client *commitMsgClient) fetchPrivacyKey(ch chan crypto.PrivKey) { func (client *commitMsgClient) fetchPrivacyKey(ch chan crypto.PrivKey) {
......
...@@ -246,3 +246,34 @@ func TestCalcCommitMsgTxs(t *testing.T) { ...@@ -246,3 +246,34 @@ func TestCalcCommitMsgTxs(t *testing.T) {
assert.NotNil(t, tx) 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