forked from hyperledger/fabric
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_util.go
96 lines (83 loc) · 2.67 KB
/
test_util.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package testutil
import (
"flag"
"fmt"
mathRand "math/rand"
"regexp"
"strings"
"time"
"github.com/hyperledger/fabric/core/config/configtest"
"github.com/spf13/viper"
)
// TestRandomNumberGenerator a random number generator for testing
type TestRandomNumberGenerator struct {
rand *mathRand.Rand
maxNumber int
}
// NewTestRandomNumberGenerator constructs a new `TestRandomNumberGenerator`
func NewTestRandomNumberGenerator(maxNumber int) *TestRandomNumberGenerator {
return &TestRandomNumberGenerator{
mathRand.New(mathRand.NewSource(time.Now().UnixNano())),
maxNumber,
}
}
// Next generates next random number
func (randNumGenerator *TestRandomNumberGenerator) Next() int {
return randNumGenerator.rand.Intn(randNumGenerator.maxNumber)
}
// SetupTestConfig sets up configurations for tetsing
func SetupTestConfig() {
viper.AddConfigPath(".")
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AutomaticEnv()
viper.SetDefault("peer.ledger.test.loadYAML", true)
loadYAML := viper.GetBool("peer.ledger.test.loadYAML")
if loadYAML {
viper.SetConfigName("test")
err := viper.ReadInConfig()
if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
}
}
// SetupCoreYAMLConfig sets up configurations for testing
func SetupCoreYAMLConfig() {
viper.SetConfigName("core")
viper.SetEnvPrefix("CORE")
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AutomaticEnv()
err := configtest.AddDevConfigPath(nil)
if err != nil {
panic(fmt.Errorf("Fatal error adding dev dir: %s \n", err))
}
err = viper.ReadInConfig()
if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
}
// ResetConfigToDefaultValues resets configurations optins back to defaults
func ResetConfigToDefaultValues() {
//reset to defaults
viper.Set("ledger.state.totalQueryLimit", 10000)
viper.Set("ledger.state.couchDBConfig.internalQueryLimit", 1000)
viper.Set("ledger.state.stateDatabase", "goleveldb")
viper.Set("ledger.history.enableHistoryDatabase", false)
viper.Set("ledger.state.couchDBConfig.autoWarmIndexes", true)
viper.Set("ledger.state.couchDBConfig.warmIndexesAfterNBlocks", 1)
viper.Set("peer.fileSystemPath", "/var/hyperledger/production")
}
// ParseTestParams parses tests params
func ParseTestParams() []string {
testParams := flag.String("testParams", "", "Test specific parameters")
flag.Parse()
regex, err := regexp.Compile(",(\\s+)?")
if err != nil {
panic(fmt.Errorf("err = %s\n", err))
}
paramsArray := regex.Split(*testParams, -1)
return paramsArray
}