Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit aafbea2

Browse files
committed
[FAB-6767] mock utils in SDK-GO
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>
1 parent 22e666e commit aafbea2

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

pkg/fabric-client/mocks/mockendorserserver.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ import (
1313
rwsetutil "github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil"
1414
kvrwset "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
1515

16+
"fmt"
17+
"net"
18+
1619
pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
20+
"google.golang.org/grpc"
1721
)
1822

1923
// MockEndorserServer mock endoreser server to process endorsement proposals
@@ -68,3 +72,17 @@ func (m *MockEndorserServer) createProposalResponsePayload() []byte {
6872
}
6973
return prpBytes
7074
}
75+
76+
//StartEndorserServer starts mock server for unit testing purpose
77+
func StartEndorserServer(endorserTestURL string) *MockEndorserServer {
78+
grpcServer := grpc.NewServer()
79+
lis, err := net.Listen("tcp", endorserTestURL)
80+
if err != nil {
81+
panic(fmt.Sprintf("Error starting endorser server: %s", err))
82+
}
83+
endorserServer := &MockEndorserServer{}
84+
pb.RegisterEndorserServer(grpcServer, endorserServer)
85+
fmt.Printf("Test endorser server started\n")
86+
go grpcServer.Serve(lis)
87+
return endorserServer
88+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
Copyright SecureKey Technologies Inc. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package mocks
8+
9+
import (
10+
"fmt"
11+
"net"
12+
13+
"github.com/golang/protobuf/proto"
14+
pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
15+
"google.golang.org/grpc"
16+
)
17+
18+
// MockEventServer ...
19+
type MockEventServer struct {
20+
server pb.Events_ChatServer
21+
grpcServer *grpc.Server
22+
channel chan *pb.Event
23+
}
24+
25+
// StartMockEventServer will start mock event server for unit testing purpose
26+
func StartMockEventServer(testAddress string) (*MockEventServer, error) {
27+
grpcServer := grpc.NewServer()
28+
grpcServer.GetServiceInfo()
29+
lis, err := net.Listen("tcp", testAddress)
30+
if err != nil {
31+
return nil, fmt.Errorf("Error starting test server %s", err)
32+
}
33+
eventServer := &MockEventServer{grpcServer: grpcServer}
34+
pb.RegisterEventsServer(grpcServer, eventServer)
35+
fmt.Printf("Starting test server\n")
36+
go grpcServer.Serve(lis)
37+
38+
return eventServer, nil
39+
}
40+
41+
// Chat for event chatting
42+
func (m *MockEventServer) Chat(srv pb.Events_ChatServer) error {
43+
m.server = srv
44+
m.channel = make(chan *pb.Event)
45+
in, _ := srv.Recv()
46+
evt := &pb.Event{}
47+
err := proto.Unmarshal(in.EventBytes, evt)
48+
if err != nil {
49+
return fmt.Errorf("error unmarshaling the event bytes in the SignedEvent: %s", err)
50+
}
51+
switch evt.Event.(type) {
52+
case *pb.Event_Register:
53+
srv.Send(&pb.Event{Event: &pb.Event_Register{Register: &pb.Register{}}})
54+
}
55+
for {
56+
event := <-m.channel
57+
srv.Send(event)
58+
}
59+
}
60+
61+
// SendMockEvent used for sending mock events to event server
62+
func (m *MockEventServer) SendMockEvent(event *pb.Event) {
63+
m.channel <- event
64+
}
65+
66+
// Stop mock event
67+
func (m *MockEventServer) Stop() {
68+
m.grpcServer.Stop()
69+
}

0 commit comments

Comments
 (0)