83 lines
2.6 KiB
Go
83 lines
2.6 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package privdata_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hyperledger/fabric/gossip/privdata"
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGlobalConfig(t *testing.T) {
|
|
viper.Reset()
|
|
// Capture the configuration from viper
|
|
viper.Set("peer.gossip.pvtData.reconcileSleepInterval", "10s")
|
|
viper.Set("peer.gossip.pvtData.reconcileBatchSize", 10)
|
|
viper.Set("peer.gossip.pvtData.reconciliationEnabled", true)
|
|
viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", 2)
|
|
viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount", 3)
|
|
|
|
coreConfig := privdata.GlobalConfig()
|
|
|
|
expectedConfig := &privdata.PrivdataConfig{
|
|
ReconcileSleepInterval: 10 * time.Second,
|
|
ReconcileBatchSize: 10,
|
|
ReconciliationEnabled: true,
|
|
ImplicitCollDisseminationPolicy: privdata.ImplicitCollectionDisseminationPolicy{
|
|
RequiredPeerCount: 2,
|
|
MaxPeerCount: 3,
|
|
},
|
|
}
|
|
|
|
require.Equal(t, coreConfig, expectedConfig)
|
|
}
|
|
|
|
func TestGlobalConfigDefaults(t *testing.T) {
|
|
viper.Reset()
|
|
|
|
coreConfig := privdata.GlobalConfig()
|
|
|
|
expectedConfig := &privdata.PrivdataConfig{
|
|
ReconcileSleepInterval: time.Minute,
|
|
ReconcileBatchSize: 10,
|
|
ReconciliationEnabled: false,
|
|
ImplicitCollDisseminationPolicy: privdata.ImplicitCollectionDisseminationPolicy{
|
|
RequiredPeerCount: 0,
|
|
MaxPeerCount: 1,
|
|
},
|
|
}
|
|
|
|
require.Equal(t, coreConfig, expectedConfig)
|
|
}
|
|
|
|
func TestGlobalConfigPanic(t *testing.T) {
|
|
viper.Reset()
|
|
// Capture the configuration from viper
|
|
viper.Set("peer.gossip.pvtData.reconcileSleepInterval", "10s")
|
|
viper.Set("peer.gossip.pvtData.reconcileBatchSize", 10)
|
|
viper.Set("peer.gossip.pvtData.reconciliationEnabled", true)
|
|
viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", 2)
|
|
viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount", 1)
|
|
require.PanicsWithValue(
|
|
t,
|
|
"peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount (1) cannot be less than requiredPeerCount (2)",
|
|
func() { privdata.GlobalConfig() },
|
|
"A panic should occur because maxPeerCount is less than requiredPeerCount",
|
|
)
|
|
|
|
viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", -1)
|
|
require.PanicsWithValue(
|
|
t,
|
|
"peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount (-1) cannot be less than zero",
|
|
func() { privdata.GlobalConfig() },
|
|
"A panic should occur because requiredPeerCount is less than zero",
|
|
)
|
|
}
|