go_study/fabric-main/internal/peer/node/config_test.go

168 lines
5.8 KiB
Go

/*
Copyright IBM Corp. 2016 All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package node
import (
"testing"
"time"
"github.com/hyperledger/fabric/core/ledger"
"github.com/spf13/viper"
"github.com/stretchr/testify/require"
)
func TestLedgerConfig(t *testing.T) {
defer viper.Reset()
tests := []struct {
name string
config map[string]interface{}
expected *ledger.Config
}{
{
name: "goleveldb",
config: map[string]interface{}{
"peer.fileSystemPath": "/peerfs",
"ledger.state.stateDatabase": "goleveldb",
},
expected: &ledger.Config{
RootFSPath: "/peerfs/ledgersData",
StateDBConfig: &ledger.StateDBConfig{
StateDatabase: "goleveldb",
CouchDB: &ledger.CouchDBConfig{},
},
PrivateDataConfig: &ledger.PrivateDataConfig{
MaxBatchSize: 5000,
BatchesInterval: 1000,
PurgeInterval: 100,
DeprioritizedDataReconcilerInterval: 60 * time.Minute,
PurgedKeyAuditLogging: true,
},
HistoryDBConfig: &ledger.HistoryDBConfig{
Enabled: false,
},
SnapshotsConfig: &ledger.SnapshotsConfig{
RootDir: "/peerfs/snapshots",
},
},
},
{
name: "CouchDB Defaults",
config: map[string]interface{}{
"peer.fileSystemPath": "/peerfs",
"ledger.state.stateDatabase": "CouchDB",
"ledger.state.couchDBConfig.couchDBAddress": "localhost:5984",
"ledger.state.couchDBConfig.username": "username",
"ledger.state.couchDBConfig.password": "password",
"ledger.state.couchDBConfig.maxRetries": 3,
"ledger.state.couchDBConfig.maxRetriesOnStartup": 10,
"ledger.state.couchDBConfig.requestTimeout": "30s",
"ledger.state.couchDBConfig.createGlobalChangesDB": true,
"ledger.state.couchDBConfig.cacheSize": 64,
},
expected: &ledger.Config{
RootFSPath: "/peerfs/ledgersData",
StateDBConfig: &ledger.StateDBConfig{
StateDatabase: "CouchDB",
CouchDB: &ledger.CouchDBConfig{
Address: "localhost:5984",
Username: "username",
Password: "password",
MaxRetries: 3,
MaxRetriesOnStartup: 10,
RequestTimeout: 30 * time.Second,
InternalQueryLimit: 1000,
MaxBatchUpdateSize: 500,
CreateGlobalChangesDB: true,
RedoLogPath: "/peerfs/ledgersData/couchdbRedoLogs",
UserCacheSizeMBs: 64,
},
},
PrivateDataConfig: &ledger.PrivateDataConfig{
MaxBatchSize: 5000,
BatchesInterval: 1000,
PurgeInterval: 100,
DeprioritizedDataReconcilerInterval: 60 * time.Minute,
PurgedKeyAuditLogging: true,
},
HistoryDBConfig: &ledger.HistoryDBConfig{
Enabled: false,
},
SnapshotsConfig: &ledger.SnapshotsConfig{
RootDir: "/peerfs/snapshots",
},
},
},
{
name: "CouchDB Explicit",
config: map[string]interface{}{
"peer.fileSystemPath": "/peerfs",
"ledger.state.stateDatabase": "CouchDB",
"ledger.state.couchDBConfig.couchDBAddress": "localhost:5984",
"ledger.state.couchDBConfig.username": "username",
"ledger.state.couchDBConfig.password": "password",
"ledger.state.couchDBConfig.maxRetries": 3,
"ledger.state.couchDBConfig.maxRetriesOnStartup": 10,
"ledger.state.couchDBConfig.requestTimeout": "30s",
"ledger.state.couchDBConfig.internalQueryLimit": 500,
"ledger.state.couchDBConfig.maxBatchUpdateSize": 600,
"ledger.state.couchDBConfig.createGlobalChangesDB": true,
"ledger.state.couchDBConfig.cacheSize": 64,
"ledger.pvtdataStore.collElgProcMaxDbBatchSize": 50000,
"ledger.pvtdataStore.collElgProcDbBatchesInterval": 10000,
"ledger.pvtdataStore.purgeInterval": 1000,
"ledger.pvtdataStore.purgedKeyAuditLogging": false,
"ledger.pvtdataStore.deprioritizedDataReconcilerInterval": "180m",
"ledger.history.enableHistoryDatabase": true,
"ledger.snapshots.rootDir": "/peerfs/customLocationForsnapshots",
},
expected: &ledger.Config{
RootFSPath: "/peerfs/ledgersData",
StateDBConfig: &ledger.StateDBConfig{
StateDatabase: "CouchDB",
CouchDB: &ledger.CouchDBConfig{
Address: "localhost:5984",
Username: "username",
Password: "password",
MaxRetries: 3,
MaxRetriesOnStartup: 10,
RequestTimeout: 30 * time.Second,
InternalQueryLimit: 500,
MaxBatchUpdateSize: 600,
CreateGlobalChangesDB: true,
RedoLogPath: "/peerfs/ledgersData/couchdbRedoLogs",
UserCacheSizeMBs: 64,
},
},
PrivateDataConfig: &ledger.PrivateDataConfig{
MaxBatchSize: 50000,
BatchesInterval: 10000,
PurgeInterval: 1000,
DeprioritizedDataReconcilerInterval: 180 * time.Minute,
PurgedKeyAuditLogging: false,
},
HistoryDBConfig: &ledger.HistoryDBConfig{
Enabled: true,
},
SnapshotsConfig: &ledger.SnapshotsConfig{
RootDir: "/peerfs/customLocationForsnapshots",
},
},
},
}
for _, test := range tests {
_test := test
t.Run(_test.name, func(t *testing.T) {
for k, v := range _test.config {
viper.Set(k, v)
}
conf := ledgerConfig()
require.EqualValues(t, _test.expected, conf)
})
}
}