@@ -36,18 +36,41 @@ func init() {
36
36
logging .SetLevel (logging .DEBUG , "" )
37
37
}
38
38
39
+ func TestConfigSet (t * testing.T ) {
40
+ config := loadConfig ()
41
+
42
+ testKeys := []string {
43
+ "general.mode" ,
44
+ "general.N" ,
45
+ "general.f" ,
46
+ "general.K" ,
47
+ "general.logmultiplier" ,
48
+ "general.batchsize" ,
49
+ "general.byzantine" ,
50
+ "general.viewchangeperiod" ,
51
+ "general.timeout.batch" ,
52
+ "general.timeout.request" ,
53
+ "general.timeout.viewchange" ,
54
+ "general.timeout.resendviewchange" ,
55
+ "general.timeout.nullrequest" ,
56
+ "general.timeout.broadcast" ,
57
+ "executor.queuesize" ,
58
+ }
59
+
60
+ for _ , key := range testKeys {
61
+ if ok := config .IsSet (key ); ! ok {
62
+ t .Errorf ("Cannot test env override because \" %s\" does not seem to be set" , key )
63
+ }
64
+ }
65
+ }
66
+
39
67
func TestEnvOverride (t * testing.T ) {
40
68
config := loadConfig ()
41
69
42
70
key := "general.mode" // for a key that exists
43
71
envName := "CORE_PBFT_GENERAL_MODE" // env override name
44
72
overrideValue := "overide_test" // value to override default value with
45
73
46
- // test key
47
- if ok := config .IsSet ("general.mode" ); ! ok {
48
- t .Fatalf ("Cannot test env override because \" %s\" does not seem to be set" , key )
49
- }
50
-
51
74
os .Setenv (envName , overrideValue )
52
75
// The override config value will cause other calls to fail unless unset.
53
76
defer func () {
@@ -66,6 +89,104 @@ func TestEnvOverride(t *testing.T) {
66
89
67
90
}
68
91
92
+ func TestIntEnvOverride (t * testing.T ) {
93
+ config := loadConfig ()
94
+
95
+ tests := []struct {
96
+ key string
97
+ envName string
98
+ overrideValue string
99
+ expectValue int
100
+ }{
101
+ {"general.N" , "CORE_PBFT_GENERAL_N" , "8" , 8 },
102
+ {"general.f" , "CORE_PBFT_GENERAL_F" , "2" , 2 },
103
+ {"general.K" , "CORE_PBFT_GENERAL_K" , "20" , 20 },
104
+ {"general.logmultiplier" , "CORE_PBFT_GENERAL_LOGMULTIPLIER" , "6" , 6 },
105
+ {"general.batchsize" , "CORE_PBFT_GENERAL_BATCHSIZE" , "200" , 200 },
106
+ {"general.viewchangeperiod" , "CORE_PBFT_GENERAL_VIEWCHANGEPERIOD" , "5" , 5 },
107
+ {"executor.queuesize" , "CORE_PBFT_EXECUTOR_QUEUESIZE" , "50" , 50 },
108
+ }
109
+
110
+ for _ , test := range tests {
111
+ os .Setenv (test .envName , test .overrideValue )
112
+
113
+ if ok := config .IsSet (test .key ); ! ok {
114
+ t .Errorf ("Env override in place, and key \" %s\" is not set" , test .key )
115
+ }
116
+
117
+ configVal := config .GetInt (test .key )
118
+ if configVal != test .expectValue {
119
+ t .Errorf ("Env override in place, expected key \" %s\" to be \" %v\" but instead got \" %d\" " , test .key , test .expectValue , configVal )
120
+ }
121
+
122
+ os .Unsetenv (test .envName )
123
+ }
124
+ }
125
+
126
+ func TestDurationEnvOverride (t * testing.T ) {
127
+ config := loadConfig ()
128
+
129
+ tests := []struct {
130
+ key string
131
+ envName string
132
+ overrideValue string
133
+ expectValue time.Duration
134
+ }{
135
+ {"general.timeout.batch" , "CORE_PBFT_GENERAL_TIMEOUT_BATCH" , "2s" , 2 * time .Second },
136
+ {"general.timeout.request" , "CORE_PBFT_GENERAL_TIMEOUT_REQUEST" , "4s" , 4 * time .Second },
137
+ {"general.timeout.viewchange" , "CORE_PBFT_GENERAL_TIMEOUT_VIEWCHANGE" , "5s" , 5 * time .Second },
138
+ {"general.timeout.resendviewchange" , "CORE_PBFT_GENERAL_TIMEOUT_RESENDVIEWCHANGE" , "200ms" , 200 * time .Millisecond },
139
+ {"general.timeout.nullrequest" , "CORE_PBFT_GENERAL_TIMEOUT_NULLREQUEST" , "1s" , time .Second },
140
+ {"general.timeout.broadcast" , "CORE_PBFT_GENERAL_TIMEOUT_BROADCAST" , "1m" , time .Minute },
141
+ }
142
+
143
+ for _ , test := range tests {
144
+ os .Setenv (test .envName , test .overrideValue )
145
+
146
+ if ok := config .IsSet (test .key ); ! ok {
147
+ t .Errorf ("Env override in place, and key \" %s\" is not set" , test .key )
148
+ }
149
+
150
+ configVal := config .GetDuration (test .key )
151
+ if configVal != test .expectValue {
152
+ t .Errorf ("Env override in place, expected key \" %s\" to be \" %v\" but instead got \" %v\" " , test .key , test .expectValue , configVal )
153
+ }
154
+
155
+ os .Unsetenv (test .envName )
156
+ }
157
+ }
158
+
159
+ func TestBoolEnvOverride (t * testing.T ) {
160
+ config := loadConfig ()
161
+
162
+ tests := []struct {
163
+ key string
164
+ envName string
165
+ overrideValue string
166
+ expectValue bool
167
+ }{
168
+ {"general.byzantine" , "CORE_PBFT_GENERAL_BYZANTINE" , "false" , false },
169
+ {"general.byzantine" , "CORE_PBFT_GENERAL_BYZANTINE" , "0" , false },
170
+ {"general.byzantine" , "CORE_PBFT_GENERAL_BYZANTINE" , "true" , true },
171
+ {"general.byzantine" , "CORE_PBFT_GENERAL_BYZANTINE" , "1" , true },
172
+ }
173
+
174
+ for i , test := range tests {
175
+ os .Setenv (test .envName , test .overrideValue )
176
+
177
+ if ok := config .IsSet (test .key ); ! ok {
178
+ t .Errorf ("Env override in place, and key \" %s\" is not set" , test .key )
179
+ }
180
+
181
+ configVal := config .GetBool (test .key )
182
+ if configVal != test .expectValue {
183
+ t .Errorf ("Test %d Env override in place, expected key \" %s\" to be \" %v\" but instead got \" %v\" " , i , test .key , test .expectValue , configVal )
184
+ }
185
+
186
+ os .Unsetenv (test .envName )
187
+ }
188
+ }
189
+
69
190
func TestMaliciousPrePrepare (t * testing.T ) {
70
191
mock := & omniProto {
71
192
broadcastImpl : func (msgPayload []byte ) {
0 commit comments