Skip to content

Commit

Permalink
add unit test for common/deliverclient/blocksprovider/delivery_reques…
Browse files Browse the repository at this point in the history
…ter (hyperledger#4798)

* add unit test for common/deliverclient/blocksprovider/delivery_requester

Signed-off-by: Amrit Prakash <amritdevil1st@gmail.com>

* fix runtime errors

Signed-off-by: Amrit Prakash <amritdevil1st@gmail.com>

---------

Signed-off-by: Amrit Prakash <amritdevil1st@gmail.com>
  • Loading branch information
solo-daemon authored Apr 17, 2024
1 parent 21d6460 commit 559a3dc
Showing 1 changed file with 198 additions and 0 deletions.
198 changes: 198 additions & 0 deletions common/deliverclient/blocksprovider/delivery_requester_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package blocksprovider_test

import (
"testing"

"github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric/common/deliverclient/blocksprovider"
"github.com/hyperledger/fabric/common/deliverclient/blocksprovider/fake"
"github.com/hyperledger/fabric/common/deliverclient/orderers"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc"
"google.golang.org/grpc/connectivity"
"google.golang.org/grpc/credentials/insecure"
)

func TestDeliveryRequester_Connect_Success(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.NoError(t, err)
assert.NotNil(t, deliverClient)
assert.NotNil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DialerError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
dialError := errors.New("dialer-error")
fakeDialer.DialReturns(nil, dialError)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DeliverStreamerError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
fakeDialer.DialStub = func(string, [][]byte) (*grpc.ClientConn, error) {
cc, err := grpc.Dial("localhost:6005", grpc.WithTransportCredentials(insecure.NewCredentials()))
require.NoError(t, err)
require.NotEqual(t, connectivity.Shutdown, cc.GetState())

return cc, nil
}

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
deliverStreamerError := errors.New("deliver-streamer-error")
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, deliverStreamerError)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DeliverClientError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
fakeDialer.DialStub = func(string, [][]byte) (*grpc.ClientConn, error) {
cc, err := grpc.Dial("localhost:6005", grpc.WithTransportCredentials(insecure.NewCredentials()))
require.NoError(t, err)
require.NotEqual(t, connectivity.Shutdown, cc.GetState())

return cc, nil
}

fakeDeliverClient := &fake.DeliverClient{}
deliverClientError := errors.New("deliver-client-error")
fakeDeliverClient.SendReturns(deliverClientError)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_SeekInfoBlocksFrom(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

envelope, err := dr.SeekInfoBlocksFrom(1000)
assert.NoError(t, err)
assert.NotNil(t, envelope)
}

func TestDeliveryRequester_SeekInfoHeadersFrom(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

envelope, err := dr.SeekInfoHeadersFrom(1000)
assert.NoError(t, err)
assert.NotNil(t, envelope)
}

0 comments on commit 559a3dc

Please sign in to comment.