github.com/true-sqn/fabric@v2.1.1+incompatible/gossip/privdata/config_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package privdata_test
     8  
     9  import (
    10  	"testing"
    11  	"time"
    12  
    13  	"github.com/hyperledger/fabric/gossip/privdata"
    14  	"github.com/spf13/viper"
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestGlobalConfig(t *testing.T) {
    19  	viper.Reset()
    20  	// Capture the configuration from viper
    21  	viper.Set("peer.gossip.pvtData.reconcileSleepInterval", "10s")
    22  	viper.Set("peer.gossip.pvtData.reconcileBatchSize", 10)
    23  	viper.Set("peer.gossip.pvtData.reconciliationEnabled", true)
    24  	viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", 2)
    25  	viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount", 3)
    26  
    27  	coreConfig := privdata.GlobalConfig()
    28  
    29  	expectedConfig := &privdata.PrivdataConfig{
    30  		ReconcileSleepInterval: 10 * time.Second,
    31  		ReconcileBatchSize:     10,
    32  		ReconciliationEnabled:  true,
    33  		ImplicitCollDisseminationPolicy: privdata.ImplicitCollectionDisseminationPolicy{
    34  			RequiredPeerCount: 2,
    35  			MaxPeerCount:      3,
    36  		},
    37  	}
    38  
    39  	assert.Equal(t, coreConfig, expectedConfig)
    40  }
    41  
    42  func TestGlobalConfigDefaults(t *testing.T) {
    43  	viper.Reset()
    44  
    45  	coreConfig := privdata.GlobalConfig()
    46  
    47  	expectedConfig := &privdata.PrivdataConfig{
    48  		ReconcileSleepInterval: time.Minute,
    49  		ReconcileBatchSize:     10,
    50  		ReconciliationEnabled:  false,
    51  		ImplicitCollDisseminationPolicy: privdata.ImplicitCollectionDisseminationPolicy{
    52  			RequiredPeerCount: 0,
    53  			MaxPeerCount:      1,
    54  		},
    55  	}
    56  
    57  	assert.Equal(t, coreConfig, expectedConfig)
    58  }
    59  
    60  func TestGlobalConfigPanic(t *testing.T) {
    61  	viper.Reset()
    62  	// Capture the configuration from viper
    63  	viper.Set("peer.gossip.pvtData.reconcileSleepInterval", "10s")
    64  	viper.Set("peer.gossip.pvtData.reconcileBatchSize", 10)
    65  	viper.Set("peer.gossip.pvtData.reconciliationEnabled", true)
    66  	viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", 2)
    67  	viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount", 1)
    68  	assert.PanicsWithValue(
    69  		t,
    70  		"peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount (1) cannot be less than requiredPeerCount (2)",
    71  		func() { privdata.GlobalConfig() },
    72  		"A panic should occur because maxPeerCount is less than requiredPeerCount",
    73  	)
    74  
    75  	viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", -1)
    76  	assert.PanicsWithValue(
    77  		t,
    78  		"peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount (-1) cannot be less than zero",
    79  		func() { privdata.GlobalConfig() },
    80  		"A panic should occur because requiredPeerCount is less than zero",
    81  	)
    82  }