github.com/lzy4123/fabric@v2.1.1+incompatible/internal/peer/node/config_test.go (about) 1 /* 2 Copyright IBM Corp. 2016 All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package node 8 9 import ( 10 "testing" 11 "time" 12 13 "github.com/hyperledger/fabric/core/ledger" 14 "github.com/hyperledger/fabric/core/ledger/util/couchdb" 15 "github.com/spf13/viper" 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestLedgerConfig(t *testing.T) { 20 defer viper.Set("ledger.state.stateDatabase", "goleveldb") 21 var tests = []struct { 22 name string 23 config map[string]interface{} 24 expected *ledger.Config 25 }{ 26 { 27 name: "goleveldb", 28 config: map[string]interface{}{ 29 "peer.fileSystemPath": "/peerfs", 30 "ledger.state.stateDatabase": "goleveldb", 31 }, 32 expected: &ledger.Config{ 33 RootFSPath: "/peerfs/ledgersData", 34 StateDBConfig: &ledger.StateDBConfig{ 35 StateDatabase: "goleveldb", 36 CouchDB: &couchdb.Config{}, 37 }, 38 PrivateDataConfig: &ledger.PrivateDataConfig{ 39 MaxBatchSize: 5000, 40 BatchesInterval: 1000, 41 PurgeInterval: 100, 42 }, 43 HistoryDBConfig: &ledger.HistoryDBConfig{ 44 Enabled: false, 45 }, 46 }, 47 }, 48 { 49 name: "CouchDB Defaults", 50 config: map[string]interface{}{ 51 "peer.fileSystemPath": "/peerfs", 52 "ledger.state.stateDatabase": "CouchDB", 53 "ledger.state.couchDBConfig.couchDBAddress": "localhost:5984", 54 "ledger.state.couchDBConfig.username": "username", 55 "ledger.state.couchDBConfig.password": "password", 56 "ledger.state.couchDBConfig.maxRetries": 3, 57 "ledger.state.couchDBConfig.maxRetriesOnStartup": 10, 58 "ledger.state.couchDBConfig.requestTimeout": "30s", 59 "ledger.state.couchDBConfig.createGlobalChangesDB": true, 60 "ledger.state.couchDBConfig.cacheSize": 64, 61 }, 62 expected: &ledger.Config{ 63 RootFSPath: "/peerfs/ledgersData", 64 StateDBConfig: &ledger.StateDBConfig{ 65 StateDatabase: "CouchDB", 66 CouchDB: &couchdb.Config{ 67 Address: "localhost:5984", 68 Username: "username", 69 Password: "password", 70 MaxRetries: 3, 71 MaxRetriesOnStartup: 10, 72 RequestTimeout: 30 * time.Second, 73 InternalQueryLimit: 1000, 74 MaxBatchUpdateSize: 500, 75 WarmIndexesAfterNBlocks: 1, 76 CreateGlobalChangesDB: true, 77 RedoLogPath: "/peerfs/ledgersData/couchdbRedoLogs", 78 UserCacheSizeMBs: 64, 79 }, 80 }, 81 PrivateDataConfig: &ledger.PrivateDataConfig{ 82 MaxBatchSize: 5000, 83 BatchesInterval: 1000, 84 PurgeInterval: 100, 85 }, 86 HistoryDBConfig: &ledger.HistoryDBConfig{ 87 Enabled: false, 88 }, 89 }, 90 }, 91 { 92 name: "CouchDB Explicit", 93 config: map[string]interface{}{ 94 "peer.fileSystemPath": "/peerfs", 95 "ledger.state.stateDatabase": "CouchDB", 96 "ledger.state.couchDBConfig.couchDBAddress": "localhost:5984", 97 "ledger.state.couchDBConfig.username": "username", 98 "ledger.state.couchDBConfig.password": "password", 99 "ledger.state.couchDBConfig.maxRetries": 3, 100 "ledger.state.couchDBConfig.maxRetriesOnStartup": 10, 101 "ledger.state.couchDBConfig.requestTimeout": "30s", 102 "ledger.state.couchDBConfig.internalQueryLimit": 500, 103 "ledger.state.couchDBConfig.maxBatchUpdateSize": 600, 104 "ledger.state.couchDBConfig.warmIndexesAfterNBlocks": 5, 105 "ledger.state.couchDBConfig.createGlobalChangesDB": true, 106 "ledger.state.couchDBConfig.cacheSize": 64, 107 "ledger.pvtdataStore.collElgProcMaxDbBatchSize": 50000, 108 "ledger.pvtdataStore.collElgProcDbBatchesInterval": 10000, 109 "ledger.pvtdataStore.purgeInterval": 1000, 110 "ledger.history.enableHistoryDatabase": true, 111 }, 112 expected: &ledger.Config{ 113 RootFSPath: "/peerfs/ledgersData", 114 StateDBConfig: &ledger.StateDBConfig{ 115 StateDatabase: "CouchDB", 116 CouchDB: &couchdb.Config{ 117 Address: "localhost:5984", 118 Username: "username", 119 Password: "password", 120 MaxRetries: 3, 121 MaxRetriesOnStartup: 10, 122 RequestTimeout: 30 * time.Second, 123 InternalQueryLimit: 500, 124 MaxBatchUpdateSize: 600, 125 WarmIndexesAfterNBlocks: 5, 126 CreateGlobalChangesDB: true, 127 RedoLogPath: "/peerfs/ledgersData/couchdbRedoLogs", 128 UserCacheSizeMBs: 64, 129 }, 130 }, 131 PrivateDataConfig: &ledger.PrivateDataConfig{ 132 MaxBatchSize: 50000, 133 BatchesInterval: 10000, 134 PurgeInterval: 1000, 135 }, 136 HistoryDBConfig: &ledger.HistoryDBConfig{ 137 Enabled: true, 138 }, 139 }, 140 }, 141 } 142 143 for _, test := range tests { 144 _test := test 145 t.Run(_test.name, func(t *testing.T) { 146 for k, v := range _test.config { 147 viper.Set(k, v) 148 } 149 conf := ledgerConfig() 150 assert.EqualValues(t, _test.expected, conf) 151 }) 152 } 153 }