go_study/fabric-main/orderer/consensus/etcdraft/dispatcher_test.go

74 lines
2.2 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package etcdraft_test
import (
"testing"
"github.com/hyperledger/fabric-protos-go/orderer"
"github.com/hyperledger/fabric/common/flogging"
"github.com/hyperledger/fabric/orderer/consensus/etcdraft"
"github.com/hyperledger/fabric/orderer/consensus/etcdraft/mocks"
"github.com/pkg/errors"
"github.com/stretchr/testify/require"
)
func TestDispatchConsensus(t *testing.T) {
expectedRequest := &orderer.ConsensusRequest{
Channel: "ignored value",
}
mr := &mocks.MessageReceiver{}
mr.On("Consensus", expectedRequest, uint64(1)).Return(nil).Once()
rg := &mocks.ReceiverGetter{}
rg.On("ReceiverByChain", "mychannel").Return(mr).Once()
rg.On("ReceiverByChain", "notmychannel").Return(nil).Once()
disp := &etcdraft.Dispatcher{ChainSelector: rg, Logger: flogging.MustGetLogger("test")}
t.Run("Channel exists", func(t *testing.T) {
err := disp.OnConsensus("mychannel", 1, expectedRequest)
require.NoError(t, err)
})
t.Run("Channel does not exist", func(t *testing.T) {
err := disp.OnConsensus("notmychannel", 1, expectedRequest)
require.EqualError(t, err, "channel notmychannel doesn't exist")
})
}
func TestDispatchSubmit(t *testing.T) {
expectedRequest := &orderer.SubmitRequest{
Channel: "ignored value - success",
}
expectedRequestForBackendError := &orderer.SubmitRequest{
Channel: "ignored value - backend error",
}
mr := &mocks.MessageReceiver{}
mr.On("Submit", expectedRequest, uint64(1)).Return(nil).Once()
mr.On("Submit", expectedRequestForBackendError, uint64(1)).Return(errors.New("backend error")).Once()
rg := &mocks.ReceiverGetter{}
rg.On("ReceiverByChain", "mychannel").Return(mr).Twice()
rg.On("ReceiverByChain", "notmychannel").Return(nil).Once()
disp := &etcdraft.Dispatcher{ChainSelector: rg, Logger: flogging.MustGetLogger("test")}
t.Run("Channel exists", func(t *testing.T) {
err := disp.OnSubmit("mychannel", 1, expectedRequest)
require.NoError(t, err)
})
t.Run("Channel does not exist", func(t *testing.T) {
err := disp.OnSubmit("notmychannel", 1, expectedRequest)
require.EqualError(t, err, "channel notmychannel doesn't exist")
})
}