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  }