@@ -7,6 +7,7 @@ SPDX-License-Identifier: Apache-2.0
77package endpoint
88
99import (
10+ "fmt"
1011 "testing"
1112 "time"
1213
@@ -16,6 +17,23 @@ import (
1617 mspmocks "github.com/hyperledger/fabric-sdk-go/pkg/msp/test/mockmsp"
1718)
1819
20+ const (
21+ url1 = "p1.test.com:9051"
22+ url2 = "p2.test.com:9051"
23+ url3 = "p3.test.com:9051"
24+ )
25+
26+ var p1 = fabmocks .NewMockPeer ("p1" , url1 )
27+ var p2 = fabmocks .NewMockPeer ("p2" , url2 )
28+ var p3 = fabmocks .NewMockPeer ("p3" , url3 )
29+
30+ var pc1 = core.PeerConfig {URL : url1 }
31+ var pc2 = core.PeerConfig {URL : url2 }
32+ var pc3 = core.PeerConfig {URL : url3 }
33+
34+ var peers = []fab.Peer {p1 , p2 , p3 }
35+ var peerConfigs = []core.PeerConfig {pc1 , pc2 , pc3 }
36+
1937func TestEndpoint (t * testing.T ) {
2038 expectedEventURL := "localhost:7053"
2139 expectedAllowInsecure := true
@@ -69,71 +87,119 @@ func TestEndpoint(t *testing.T) {
6987
7088func TestDiscoveryProvider (t * testing.T ) {
7189 ctx := newMockContext ()
90+
91+ expectedNumPeers := len (peers )
92+
7293 discoveryProvider := NewDiscoveryProvider (ctx )
7394
7495 discoveryService , err := discoveryProvider .CreateDiscoveryService ("testchannel" )
7596 if err != nil {
7697 t .Fatalf ("error creating discovery service: %s" , err )
7798 }
78- _ , err = discoveryService .GetPeers ()
99+ peers , err = discoveryService .GetPeers ()
79100 if err != nil {
80101 t .Fatalf ("error getting peers: %s" , err )
81102 }
82-
103+ if len (peers ) != expectedNumPeers {
104+ t .Fatalf ("expecting %d peers but got %d" , expectedNumPeers , len (peers ))
105+ }
83106}
84107
85108func TestDiscoveryProviderWithTargetFilter (t * testing.T ) {
86109 ctx := newMockContext ()
87110
88- var numTimesCalled int
89- expectedNumTimesCalled := 1
111+ expectedNumPeers := len (peers ) - 1
112+
113+ discoveryProvider := NewDiscoveryProvider (ctx , WithTargetFilter (newMockFilter (p3 )))
114+
115+ discoveryService , err := discoveryProvider .CreateDiscoveryService ("testchannel" )
116+ if err != nil {
117+ t .Fatalf ("error creating discovery service: %s" , err )
118+ }
119+ peers , err = discoveryService .GetPeers ()
120+ if err != nil {
121+ t .Fatalf ("error getting peers: %s" , err )
122+ }
123+ if len (peers ) != expectedNumPeers {
124+ t .Fatalf ("expecting %d peers but got %d" , expectedNumPeers , len (peers ))
125+ }
126+ }
127+
128+ func TestDiscoveryProviderWithEventSource (t * testing.T ) {
129+ ctx := newMockContext ()
130+
131+ chPeer2 := core.ChannelPeer {}
132+ chPeer2 .URL = p2 .URL ()
133+ chPeer2 .EventSource = false
134+ ctx .SetConfig (newMockConfig (chPeer2 ))
90135
91- discoveryProvider := NewDiscoveryProvider (ctx , WithTargetFilter (newMockFilter (& numTimesCalled )))
136+ expectedNumPeers := len (peers ) - 1
137+
138+ discoveryProvider := NewDiscoveryProvider (ctx )
92139
93140 discoveryService , err := discoveryProvider .CreateDiscoveryService ("testchannel" )
94141 if err != nil {
95142 t .Fatalf ("error creating discovery service: %s" , err )
96143 }
97- _ , err = discoveryService .GetPeers ()
144+ peers , err = discoveryService .GetPeers ()
98145 if err != nil {
99146 t .Fatalf ("error getting peers: %s" , err )
100147 }
101- if numTimesCalled != expectedNumTimesCalled {
102- t .Fatalf ("expecting target filter to be called %d time(s) but was called %d time(s) " , expectedNumTimesCalled , numTimesCalled )
148+ if len ( peers ) != expectedNumPeers {
149+ t .Fatalf ("expecting %d peers but got %d " , expectedNumPeers , len ( peers ) )
103150 }
104151}
105152
106153type mockConfig struct {
107154 core.Config
155+ channelPeers []core.ChannelPeer
108156}
109157
110- func newMockConfig () * mockConfig {
158+ func newMockConfig (channelPeers ... core. ChannelPeer ) * mockConfig {
111159 return & mockConfig {
112- Config : fabmocks .NewMockConfig (),
160+ Config : fabmocks .NewMockConfig (),
161+ channelPeers : channelPeers ,
113162 }
114163}
115164
116165func (c * mockConfig ) PeerConfigByURL (url string ) (* core.PeerConfig , error ) {
117- return & core.PeerConfig {}, nil
166+ for _ , pc := range peerConfigs {
167+ if pc .URL == url {
168+ return & pc , nil
169+ }
170+ }
171+ return nil , nil
172+ }
173+
174+ func (c * mockConfig ) ChannelPeers (name string ) ([]core.ChannelPeer , error ) {
175+ fmt .Printf ("mockConfig.ChannelPeers - returning %#v" , c .channelPeers )
176+ return c .channelPeers , nil
118177}
119178
120179func newMockContext () * fabmocks.MockContext {
121- ctx := fabmocks .NewMockContext (
180+ discoveryProvider , _ := fabmocks .NewMockDiscoveryProvider (nil , peers )
181+
182+ ctx := fabmocks .NewMockContextWithCustomDiscovery (
122183 mspmocks .NewMockSigningIdentity ("user1" , "Org1MSP" ),
184+ discoveryProvider ,
123185 )
124186 ctx .SetConfig (newMockConfig ())
125187 return ctx
126188}
127189
128190type mockFilter struct {
129- numTimesCalled * int
191+ excludePeers []fab. Peer
130192}
131193
132- func newMockFilter (numTimesCalled * int ) * mockFilter {
133- return & mockFilter {numTimesCalled : numTimesCalled }
194+ func newMockFilter (excludePeers ... fab. Peer ) * mockFilter {
195+ return & mockFilter {excludePeers : excludePeers }
134196}
135197
136198func (f * mockFilter ) Accept (peer fab.Peer ) bool {
137- * f .numTimesCalled ++
199+ for _ , p := range f .excludePeers {
200+ if p .URL () == peer .URL () {
201+ return false
202+ }
203+ }
138204 return true
139205}
0 commit comments