@@ -10812,6 +10812,9 @@ func TestValidateReplicationController(t *testing.T) {
10812
10812
}
10813
10813
10814
10814
func TestValidateNode (t * testing.T ) {
10815
+ opts := NodeValidationOptions {
10816
+ ValidateSingleHugePageResource : true ,
10817
+ }
10815
10818
validSelector := map [string ]string {"a" : "b" }
10816
10819
invalidSelector := map [string ]string {"NoUppercaseOrSpecialCharsLike=Equals" : "b" }
10817
10820
successCases := []core.Node {
@@ -10918,7 +10921,7 @@ func TestValidateNode(t *testing.T) {
10918
10921
},
10919
10922
}
10920
10923
for _ , successCase := range successCases {
10921
- if errs := ValidateNode (& successCase ); len (errs ) != 0 {
10924
+ if errs := ValidateNode (& successCase , opts ); len (errs ) != 0 {
10922
10925
t .Errorf ("expected success: %v" , errs )
10923
10926
}
10924
10927
}
@@ -11142,7 +11145,7 @@ func TestValidateNode(t *testing.T) {
11142
11145
},
11143
11146
}
11144
11147
for k , v := range errorCases {
11145
- errs := ValidateNode (& v )
11148
+ errs := ValidateNode (& v , opts )
11146
11149
if len (errs ) == 0 {
11147
11150
t .Errorf ("expected failure for %s" , k )
11148
11151
}
@@ -11169,7 +11172,134 @@ func TestValidateNode(t *testing.T) {
11169
11172
}
11170
11173
}
11171
11174
11175
+ func TestNodeValidationOptions (t * testing.T ) {
11176
+ updateTests := []struct {
11177
+ oldNode core.Node
11178
+ node core.Node
11179
+ opts NodeValidationOptions
11180
+ valid bool
11181
+ }{
11182
+ {core.Node {
11183
+ ObjectMeta : metav1.ObjectMeta {
11184
+ Name : "validate-single-hugepages" ,
11185
+ },
11186
+ Status : core.NodeStatus {
11187
+ Capacity : core.ResourceList {
11188
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11189
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("0" ),
11190
+ },
11191
+ },
11192
+ }, core.Node {
11193
+ ObjectMeta : metav1.ObjectMeta {
11194
+ Name : "validate-single-hugepages" ,
11195
+ },
11196
+ Status : core.NodeStatus {
11197
+ Capacity : core.ResourceList {
11198
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11199
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("2Gi" ),
11200
+ },
11201
+ },
11202
+ }, NodeValidationOptions {ValidateSingleHugePageResource : true }, false },
11203
+ {core.Node {
11204
+ ObjectMeta : metav1.ObjectMeta {
11205
+ Name : "validate-single-hugepages" ,
11206
+ },
11207
+ Status : core.NodeStatus {
11208
+ Capacity : core.ResourceList {
11209
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11210
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("1Gi" ),
11211
+ },
11212
+ },
11213
+ }, core.Node {
11214
+ ObjectMeta : metav1.ObjectMeta {
11215
+ Name : "validate-single-hugepages" ,
11216
+ },
11217
+ Status : core.NodeStatus {
11218
+ Capacity : core.ResourceList {
11219
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11220
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("1Gi" ),
11221
+ },
11222
+ },
11223
+ }, NodeValidationOptions {ValidateSingleHugePageResource : true }, false },
11224
+ {core.Node {
11225
+ ObjectMeta : metav1.ObjectMeta {
11226
+ Name : "not-validate-single-hugepages" ,
11227
+ },
11228
+ Status : core.NodeStatus {
11229
+ Capacity : core.ResourceList {
11230
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11231
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("0" ),
11232
+ },
11233
+ },
11234
+ }, core.Node {
11235
+ ObjectMeta : metav1.ObjectMeta {
11236
+ Name : "not-validate-single-hugepages" ,
11237
+ },
11238
+ Status : core.NodeStatus {
11239
+ Capacity : core.ResourceList {
11240
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11241
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("2Gi" ),
11242
+ },
11243
+ },
11244
+ }, NodeValidationOptions {ValidateSingleHugePageResource : false }, true },
11245
+ }
11246
+ for i , test := range updateTests {
11247
+ test .oldNode .ObjectMeta .ResourceVersion = "1"
11248
+ test .node .ObjectMeta .ResourceVersion = "1"
11249
+ errs := ValidateNodeUpdate (& test .node , & test .oldNode , test .opts )
11250
+ if test .valid && len (errs ) > 0 {
11251
+ t .Errorf ("%d: Unexpected error: %v" , i , errs )
11252
+ t .Logf ("%#v vs %#v" , test .oldNode .ObjectMeta , test .node .ObjectMeta )
11253
+ }
11254
+ if ! test .valid && len (errs ) == 0 {
11255
+ t .Errorf ("%d: Unexpected non-error" , i )
11256
+ t .Logf ("%#v vs %#v" , test .oldNode .ObjectMeta , test .node .ObjectMeta )
11257
+ }
11258
+ }
11259
+ nodeTests := []struct {
11260
+ node core.Node
11261
+ opts NodeValidationOptions
11262
+ valid bool
11263
+ }{
11264
+ {core.Node {
11265
+ ObjectMeta : metav1.ObjectMeta {
11266
+ Name : "validate-single-hugepages" ,
11267
+ },
11268
+ Status : core.NodeStatus {
11269
+ Capacity : core.ResourceList {
11270
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11271
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("2Gi" ),
11272
+ },
11273
+ },
11274
+ }, NodeValidationOptions {ValidateSingleHugePageResource : true }, false },
11275
+ {core.Node {
11276
+ ObjectMeta : metav1.ObjectMeta {
11277
+ Name : "not-validate-single-hugepages" ,
11278
+ },
11279
+ Status : core.NodeStatus {
11280
+ Capacity : core.ResourceList {
11281
+ core .ResourceName ("hugepages-2Mi" ): resource .MustParse ("1Gi" ),
11282
+ core .ResourceName ("hugepages-1Gi" ): resource .MustParse ("2Gi" ),
11283
+ core .ResourceName ("hugepages-64Ki" ): resource .MustParse ("2Gi" ),
11284
+ },
11285
+ },
11286
+ }, NodeValidationOptions {ValidateSingleHugePageResource : false }, true },
11287
+ }
11288
+ for i , test := range nodeTests {
11289
+ test .node .ObjectMeta .ResourceVersion = "1"
11290
+ errs := ValidateNode (& test .node , test .opts )
11291
+ if test .valid && len (errs ) > 0 {
11292
+ t .Errorf ("%d: Unexpected error: %v" , i , errs )
11293
+ }
11294
+ if ! test .valid && len (errs ) == 0 {
11295
+ t .Errorf ("%d: Unexpected non-error" , i )
11296
+ }
11297
+ }
11298
+ }
11172
11299
func TestValidateNodeUpdate (t * testing.T ) {
11300
+ opts := NodeValidationOptions {
11301
+ ValidateSingleHugePageResource : true ,
11302
+ }
11173
11303
tests := []struct {
11174
11304
oldNode core.Node
11175
11305
node core.Node
@@ -11593,7 +11723,7 @@ func TestValidateNodeUpdate(t *testing.T) {
11593
11723
for i , test := range tests {
11594
11724
test .oldNode .ObjectMeta .ResourceVersion = "1"
11595
11725
test .node .ObjectMeta .ResourceVersion = "1"
11596
- errs := ValidateNodeUpdate (& test .node , & test .oldNode )
11726
+ errs := ValidateNodeUpdate (& test .node , & test .oldNode , opts )
11597
11727
if test .valid && len (errs ) > 0 {
11598
11728
t .Errorf ("%d: Unexpected error: %v" , i , errs )
11599
11729
t .Logf ("%#v vs %#v" , test .oldNode .ObjectMeta , test .node .ObjectMeta )
@@ -14779,6 +14909,9 @@ func makeNode(nodeName string, podCIDRs []string) core.Node {
14779
14909
}
14780
14910
}
14781
14911
func TestValidateNodeCIDRs (t * testing.T ) {
14912
+ opts := NodeValidationOptions {
14913
+ ValidateSingleHugePageResource : true ,
14914
+ }
14782
14915
testCases := []struct {
14783
14916
expectError bool
14784
14917
node core.Node
@@ -14839,7 +14972,7 @@ func TestValidateNodeCIDRs(t *testing.T) {
14839
14972
},
14840
14973
}
14841
14974
for _ , testCase := range testCases {
14842
- errs := ValidateNode (& testCase .node )
14975
+ errs := ValidateNode (& testCase .node , opts )
14843
14976
if len (errs ) == 0 && testCase .expectError {
14844
14977
t .Errorf ("expected failure for %s, but there were none" , testCase .node .Name )
14845
14978
return
0 commit comments