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

Commit d9ca5ec

Browse files
committed
[FAB-11063] default peer/orderer for url search
Change-Id: Iddff12d8ec8112100282dc869ec45711a8c1ad2f Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
1 parent 227d4ed commit d9ca5ec

File tree

5 files changed

+151
-66
lines changed

5 files changed

+151
-66
lines changed

pkg/core/config/lookup/lookup_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,11 @@ func TestUnmarshalWithMultipleBackend(t *testing.T) {
289289

290290
//EntityMatchers
291291
assert.Equal(t, len(entityMatchers.matchers), 4)
292-
assert.Equal(t, len(entityMatchers.matchers["peer"]), 8)
292+
assert.Equal(t, len(entityMatchers.matchers["peer"]), 10)
293293
assert.Equal(t, entityMatchers.matchers["peer"][0].MappedHost, "local.peer0.org1.example.com")
294-
assert.Equal(t, len(entityMatchers.matchers["orderer"]), 4)
294+
assert.Equal(t, len(entityMatchers.matchers["orderer"]), 6)
295295
assert.Equal(t, entityMatchers.matchers["orderer"][0].MappedHost, "local.orderer.example.com")
296-
assert.Equal(t, len(entityMatchers.matchers["certificateauthority"]), 2)
296+
assert.Equal(t, len(entityMatchers.matchers["certificateauthority"]), 3)
297297
assert.Equal(t, entityMatchers.matchers["certificateauthority"][0].MappedHost, "local.ca.org1.example.com")
298298
assert.Equal(t, len(entityMatchers.matchers["channel"]), 1)
299299
assert.Equal(t, entityMatchers.matchers["channel"][0].MappedName, "ch1")

pkg/fab/endpointconfig.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,14 +1112,13 @@ func (c *EndpointConfig) tryMatchingPeerConfig(peerSearchKey string, searchByURL
11121112
}
11131113
}
11141114

1115-
//TODO : for search by URL, return default if no result found
1116-
//if strings.Contains(peerSearchKey, ":") {
1117-
// return &fab.PeerConfig{
1118-
// URL: peerSearchKey,
1119-
// GRPCOptions: c.defaultPeerConfig.GRPCOptions,
1120-
// TLSCACert: c.defaultPeerConfig.TLSCACert,
1121-
// }
1122-
//}
1115+
if searchByURL && strings.Contains(peerSearchKey, ":") {
1116+
return &fab.PeerConfig{
1117+
URL: peerSearchKey,
1118+
GRPCOptions: c.defaultPeerConfig.GRPCOptions,
1119+
TLSCACert: c.defaultPeerConfig.TLSCACert,
1120+
}, true
1121+
}
11231122

11241123
return nil, false
11251124
}
@@ -1216,14 +1215,14 @@ func (c *EndpointConfig) tryMatchingOrdererConfig(ordererSearchKey string, searc
12161215
}
12171216
}
12181217

1219-
//TODO : for search by URL, return default if no result found
1220-
//if strings.Contains(ordererSearchKey, ":") {
1221-
// return &fab.OrdererConfig{
1222-
// URL: ordererSearchKey,
1223-
// GRPCOptions: c.defaultOrdererConfig.GRPCOptions,
1224-
// TLSCACert: c.defaultOrdererConfig.TLSCACert,
1225-
// }
1226-
//}
1218+
//In case of URL search, return default orderer config where URL=SearchKey
1219+
if searchByURL && strings.Contains(ordererSearchKey, ":") {
1220+
return &fab.OrdererConfig{
1221+
URL: ordererSearchKey,
1222+
GRPCOptions: c.defaultOrdererConfig.GRPCOptions,
1223+
TLSCACert: c.defaultOrdererConfig.TLSCACert,
1224+
}, true
1225+
}
12271226

12281227
return nil, false
12291228
}

pkg/fab/matchers_test.go

Lines changed: 80 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -353,46 +353,86 @@ func getBackendsFromFiles(files ...string) ([]core.ConfigBackend, error) {
353353
return backends, nil
354354
}
355355

356-
//TODO to be enabled once default search result for peerConfig search by URL is available
357-
//func TestDefaultPeerForNonExistingURL(t *testing.T) {
358-
// backends, err := getBackendsFromFiles(sampleMatchersDefaultConfigs, configTestFilePath)
359-
// assert.Nil(t, err, "not supposed to get error")
360-
// assert.Equal(t, 2, len(backends))
361-
//
362-
// config, err := ConfigFromBackend(backends...)
363-
// assert.Nil(t, err, "not supposed to get error")
364-
// assert.NotNil(t, config)
365-
//
366-
// //PeerConfig Search Based on unmatched URL, default peerconfig with searchkey as URL should be returned
367-
// peerConfig, ok := config.PeerConfig("ABC.XYZ:2222")
368-
// assert.True(t, ok, "supposed to find peer config")
369-
// assert.Equal(t, "ABC.XYZ:2222", peerConfig.URL)
370-
// assert.Equal(t, "", peerConfig.EventURL)
371-
// assert.Equal(t, nil, peerConfig.GRPCOptions["ssl-target-name-override"])
372-
// assert.NotNil(t, peerConfig.TLSCACert)
373-
//
374-
// assert.Equal(t, "1s", peerConfig.GRPCOptions["keep-alive-time"])
375-
// assert.Equal(t, nil, peerConfig.GRPCOptions["ssl-target-name-override"])
376-
// assert.Equal(t, "21s", peerConfig.GRPCOptions["keep-alive-timeout"])
377-
// assert.Equal(t, true, peerConfig.GRPCOptions["keep-alive-permit"])
378-
// assert.Equal(t, true, peerConfig.GRPCOptions["fail-fast"])
379-
// assert.Equal(t, true, peerConfig.GRPCOptions["allow-insecure"])
380-
//
381-
// //make sure map has all the expected grpc opts keys
382-
// _, ok = peerConfig.GRPCOptions["keep-alive-time"]
383-
// assert.True(t, ok)
384-
// _, ok = peerConfig.GRPCOptions["ssl-target-name-override"]
385-
// assert.False(t, ok)
386-
// _, ok = peerConfig.GRPCOptions["keep-alive-timeout"]
387-
// assert.True(t, ok)
388-
// _, ok = peerConfig.GRPCOptions["keep-alive-permit"]
389-
// assert.True(t, ok)
390-
// _, ok = peerConfig.GRPCOptions["fail-fast"]
391-
// assert.True(t, ok)
392-
// _, ok = peerConfig.GRPCOptions["allow-insecure"]
393-
// assert.True(t, ok)
394-
//
395-
//}
356+
//TestDefaultPeerForNonExistingURL tests default peerConfig result for search by URL scenario
357+
func TestDefaultPeerForNonExistingURL(t *testing.T) {
358+
backends, err := getBackendsFromFiles(sampleMatchersDefaultConfigs, configTestFilePath)
359+
assert.Nil(t, err, "not supposed to get error")
360+
assert.Equal(t, 2, len(backends))
361+
362+
config, err := ConfigFromBackend(backends...)
363+
assert.Nil(t, err, "not supposed to get error")
364+
assert.NotNil(t, config)
365+
366+
//PeerConfig Search Based on unmatched URL, default peerconfig with searchkey as URL should be returned
367+
peerConfig, ok := config.PeerConfig("ABC.XYZ:2222")
368+
assert.True(t, ok, "supposed to find peer config")
369+
assert.Equal(t, "ABC.XYZ:2222", peerConfig.URL)
370+
assert.Equal(t, "", peerConfig.EventURL)
371+
assert.Equal(t, nil, peerConfig.GRPCOptions["ssl-target-name-override"])
372+
assert.NotNil(t, peerConfig.TLSCACert)
373+
374+
assert.Equal(t, "1s", peerConfig.GRPCOptions["keep-alive-time"])
375+
assert.Equal(t, nil, peerConfig.GRPCOptions["ssl-target-name-override"])
376+
assert.Equal(t, "21s", peerConfig.GRPCOptions["keep-alive-timeout"])
377+
assert.Equal(t, true, peerConfig.GRPCOptions["keep-alive-permit"])
378+
assert.Equal(t, true, peerConfig.GRPCOptions["fail-fast"])
379+
assert.Equal(t, true, peerConfig.GRPCOptions["allow-insecure"])
380+
381+
//make sure map has all the expected grpc opts keys
382+
_, ok = peerConfig.GRPCOptions["keep-alive-time"]
383+
assert.True(t, ok)
384+
_, ok = peerConfig.GRPCOptions["ssl-target-name-override"]
385+
assert.False(t, ok)
386+
_, ok = peerConfig.GRPCOptions["keep-alive-timeout"]
387+
assert.True(t, ok)
388+
_, ok = peerConfig.GRPCOptions["keep-alive-permit"]
389+
assert.True(t, ok)
390+
_, ok = peerConfig.GRPCOptions["fail-fast"]
391+
assert.True(t, ok)
392+
_, ok = peerConfig.GRPCOptions["allow-insecure"]
393+
assert.True(t, ok)
394+
395+
}
396+
397+
//TestDefaultOrdererForNonExistingURL tests default ordererConfig result for search by URL scenario
398+
func TestDefaultOrdererForNonExistingURL(t *testing.T) {
399+
backends, err := getBackendsFromFiles(sampleMatchersDefaultConfigs, configTestFilePath)
400+
assert.Nil(t, err, "not supposed to get error")
401+
assert.Equal(t, 2, len(backends))
402+
403+
config, err := ConfigFromBackend(backends...)
404+
assert.Nil(t, err, "not supposed to get error")
405+
assert.NotNil(t, config)
406+
407+
//PeerConfig Search Based on unmatched URL, default peerconfig with searchkey as URL should be returned
408+
ordererConfig, ok := config.OrdererConfig("ABC.XYZ:2222")
409+
assert.True(t, ok, "supposed to find peer config")
410+
assert.Equal(t, "ABC.XYZ:2222", ordererConfig.URL)
411+
assert.Equal(t, nil, ordererConfig.GRPCOptions["ssl-target-name-override"])
412+
assert.NotNil(t, ordererConfig.TLSCACert)
413+
414+
assert.Equal(t, "1s", ordererConfig.GRPCOptions["keep-alive-time"])
415+
assert.Equal(t, nil, ordererConfig.GRPCOptions["ssl-target-name-override"])
416+
assert.Equal(t, "21s", ordererConfig.GRPCOptions["keep-alive-timeout"])
417+
assert.Equal(t, true, ordererConfig.GRPCOptions["keep-alive-permit"])
418+
assert.Equal(t, true, ordererConfig.GRPCOptions["fail-fast"])
419+
assert.Equal(t, true, ordererConfig.GRPCOptions["allow-insecure"])
420+
421+
//make sure map has all the expected grpc opts keys
422+
_, ok = ordererConfig.GRPCOptions["keep-alive-time"]
423+
assert.True(t, ok)
424+
_, ok = ordererConfig.GRPCOptions["ssl-target-name-override"]
425+
assert.False(t, ok)
426+
_, ok = ordererConfig.GRPCOptions["keep-alive-timeout"]
427+
assert.True(t, ok)
428+
_, ok = ordererConfig.GRPCOptions["keep-alive-permit"]
429+
assert.True(t, ok)
430+
_, ok = ordererConfig.GRPCOptions["fail-fast"]
431+
assert.True(t, ok)
432+
_, ok = ordererConfig.GRPCOptions["allow-insecure"]
433+
assert.True(t, ok)
434+
435+
}
396436

397437
//TestMatchersIgnoreEndpoint tests entity matcher ignore endpoint feature
398438
// If marked as `IgnoreEndpoint: true` then config for,

test/fixtures/config/config_e2e_multiorg_bootstrap.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,11 @@ entityMatchers:
195195
- pattern: (\w+).org1.example.com:(\d+)
196196
urlSubstitutionExp: $1.org1.example.com:$2
197197
sslTargetOverrideUrlSubstitutionExp: $1.org1.example.com
198-
mappedHost: peer0.org1.example.com
198+
mappedHost: peer0.org1.example.com
199+
200+
## TODO added below peer to ignore list, to avoid these revoked peer to conflict with bootstrap test
201+
- pattern: peer1.org2.example.com:(\d+)
202+
ignoreEndpoint: true
203+
204+
- pattern: peer1.org2.example.com
205+
ignoreEndpoint: true

test/fixtures/config/config_test_endpoints.yaml

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,26 @@ channels:
136136
# Default: true
137137
eventSource: true
138138

139+
peer1.org1.example.com:
140+
# [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
141+
# have the chaincode installed. The app can also use this property to decide which peers
142+
# to send the chaincode install request. Default: true
143+
endorsingPeer: false
144+
145+
# [Optional]. will this peer be sent query proposals? The peer must have the chaincode
146+
# installed. The app can also use this property to decide which peers to send the
147+
# chaincode install request. Default: true
148+
chaincodeQuery: false
149+
150+
# [Optional]. will this peer be sent query proposals that do not require chaincodes, like
151+
# queryBlock(), queryTransaction(), etc. Default: true
152+
ledgerQuery: false
153+
154+
# [Optional]. will this peer be the target of the SDK's listener registration? All peers can
155+
# produce events but the app typically only needs to connect to one to listen to events.
156+
# Default: true
157+
eventSource: true
158+
139159
#
140160
# list of participating organizations in this network
141161
#
@@ -148,6 +168,7 @@ organizations:
148168

149169
peers:
150170
- peer0.org1.example.com
171+
- peer1.org1.example.com
151172

152173
# Orderer Org name
153174
ordererorg:
@@ -189,14 +210,10 @@ orderers:
189210
# and event listener registration.
190211
#
191212
peers:
192-
peer0.org1.example.com:
193-
# this URL is used to send endorsement and query requests
194-
url: peer0.org1.example.com:7051
195-
# eventUrl is only needed when using eventhub (default is delivery service)
196-
eventUrl: peer0.org1.example.com:7053
197213

214+
default:
215+
#common grpc options between all the peers
198216
grpcOptions:
199-
ssl-target-name-override: peer0.org1.example.com
200217
# These parameters should be set in coordination with the keepalive policy on the server,
201218
# as incompatible settings can result in closing of connection.
202219
# When duration of the 'keep-alive-time' is set to 0 or less the keep alive client parameters are disabled
@@ -207,6 +224,28 @@ peers:
207224
# allow-insecure will be taken into consideration if address has no protocol defined, if true then grpc or else grpcs
208225
allow-insecure: false
209226

227+
peer0.org1.example.com:
228+
# this URL is used to send endorsement and query requests
229+
url: peer0.org1.example.com:7051
230+
# eventUrl is only needed when using eventhub (default is delivery service)
231+
eventUrl: peer0.org1.example.com:7053
232+
233+
grpcOptions:
234+
ssl-target-name-override: peer0.org1.example.com
235+
236+
tlsCACerts:
237+
# Certificate location absolute path
238+
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
239+
240+
peer1.org1.example.com:
241+
# this URL is used to send endorsement and query requests
242+
url: peer1.org1.example.com:7151
243+
# eventUrl is only needed when using eventhub (default is delivery service)
244+
eventUrl: peer1.org1.example.com:7153
245+
246+
grpcOptions:
247+
ssl-target-name-override: peer1.org1.example.com
248+
210249
tlsCACerts:
211250
# Certificate location absolute path
212251
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem

0 commit comments

Comments
 (0)