github.com/myafeier/fabric@v1.0.1-0.20170722181825-3a4b1f2bce86/gossip/filter/filter_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package filter 8 9 import ( 10 "testing" 11 12 "github.com/hyperledger/fabric/gossip/common" 13 "github.com/hyperledger/fabric/gossip/discovery" 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestSelectPolicies(t *testing.T) { 18 assert.True(t, SelectAllPolicy(discovery.NetworkMember{})) 19 assert.False(t, SelectNonePolicy(discovery.NetworkMember{})) 20 } 21 22 func TestCombineRoutingFilters(t *testing.T) { 23 nm := discovery.NetworkMember{ 24 Endpoint: "a", 25 InternalEndpoint: "b", 26 } 27 // Ensure that combine routing filter is a logical AND 28 a := func(nm discovery.NetworkMember) bool { 29 return nm.Endpoint == "a" 30 } 31 b := func(nm discovery.NetworkMember) bool { 32 return nm.InternalEndpoint == "b" 33 } 34 assert.True(t, CombineRoutingFilters(a, b)(nm)) 35 assert.False(t, CombineRoutingFilters(CombineRoutingFilters(a, b), SelectNonePolicy)(nm)) 36 assert.False(t, CombineRoutingFilters(a, b)(discovery.NetworkMember{InternalEndpoint: "b"})) 37 } 38 39 func TestSelectPeers(t *testing.T) { 40 a := func(nm discovery.NetworkMember) bool { 41 return nm.Endpoint == "a" 42 } 43 b := func(nm discovery.NetworkMember) bool { 44 return nm.InternalEndpoint == "b" 45 } 46 nm1 := discovery.NetworkMember{ 47 Endpoint: "a", 48 InternalEndpoint: "b", 49 PKIid: common.PKIidType("a"), 50 } 51 nm2 := discovery.NetworkMember{ 52 Endpoint: "a", 53 InternalEndpoint: "b", 54 PKIid: common.PKIidType("b"), 55 } 56 nm3 := discovery.NetworkMember{ 57 Endpoint: "d", 58 InternalEndpoint: "b", 59 PKIid: common.PKIidType("c"), 60 } 61 assert.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, CombineRoutingFilters(a, b)), 2) 62 assert.Len(t, SelectPeers(1, []discovery.NetworkMember{nm1, nm2, nm3}, CombineRoutingFilters(a, b)), 1) 63 }