Skip to content

Commit

Permalink
[FAB-6767] mock utils in SDK-GO
Browse files Browse the repository at this point in the history
Reason:
1.) Relieving fabric-ext and snaps from some dependencies added for the sake of in unit-tests
2.) Duplicate mock codes between sdk-go, snaps and ext

Change-Id: I5524780e05885269732329d62267206400e36875
Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
  • Loading branch information
sudeshrshetty committed Oct 26, 2017
1 parent 22e666e commit aafbea2
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
18 changes: 18 additions & 0 deletions pkg/fabric-client/mocks/mockendorserserver.go
Expand Up @@ -13,7 +13,11 @@ import (
rwsetutil "github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil"
kvrwset "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"

"fmt"
"net"

pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
"google.golang.org/grpc"
)

// MockEndorserServer mock endoreser server to process endorsement proposals
Expand Down Expand Up @@ -68,3 +72,17 @@ func (m *MockEndorserServer) createProposalResponsePayload() []byte {
}
return prpBytes
}

//StartEndorserServer starts mock server for unit testing purpose
func StartEndorserServer(endorserTestURL string) *MockEndorserServer {
grpcServer := grpc.NewServer()
lis, err := net.Listen("tcp", endorserTestURL)
if err != nil {
panic(fmt.Sprintf("Error starting endorser server: %s", err))
}
endorserServer := &MockEndorserServer{}
pb.RegisterEndorserServer(grpcServer, endorserServer)
fmt.Printf("Test endorser server started\n")
go grpcServer.Serve(lis)
return endorserServer
}
69 changes: 69 additions & 0 deletions pkg/fabric-client/mocks/mockeventserver.go
@@ -0,0 +1,69 @@
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package mocks

import (
"fmt"
"net"

"github.com/golang/protobuf/proto"
pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
"google.golang.org/grpc"
)

// MockEventServer ...
type MockEventServer struct {
server pb.Events_ChatServer
grpcServer *grpc.Server
channel chan *pb.Event
}

// StartMockEventServer will start mock event server for unit testing purpose
func StartMockEventServer(testAddress string) (*MockEventServer, error) {
grpcServer := grpc.NewServer()
grpcServer.GetServiceInfo()
lis, err := net.Listen("tcp", testAddress)
if err != nil {
return nil, fmt.Errorf("Error starting test server %s", err)
}
eventServer := &MockEventServer{grpcServer: grpcServer}
pb.RegisterEventsServer(grpcServer, eventServer)
fmt.Printf("Starting test server\n")
go grpcServer.Serve(lis)

return eventServer, nil
}

// Chat for event chatting
func (m *MockEventServer) Chat(srv pb.Events_ChatServer) error {
m.server = srv
m.channel = make(chan *pb.Event)
in, _ := srv.Recv()
evt := &pb.Event{}
err := proto.Unmarshal(in.EventBytes, evt)
if err != nil {
return fmt.Errorf("error unmarshaling the event bytes in the SignedEvent: %s", err)
}
switch evt.Event.(type) {
case *pb.Event_Register:
srv.Send(&pb.Event{Event: &pb.Event_Register{Register: &pb.Register{}}})
}
for {
event := <-m.channel
srv.Send(event)
}
}

// SendMockEvent used for sending mock events to event server
func (m *MockEventServer) SendMockEvent(event *pb.Event) {
m.channel <- event
}

// Stop mock event
func (m *MockEventServer) Stop() {
m.grpcServer.Stop()
}

0 comments on commit aafbea2

Please sign in to comment.