@@ -398,16 +398,60 @@ func Test_core_PodStatus_to_v1_PodStatus(t *testing.T) {
398
398
}
399
399
}
400
400
func Test_v1_PodStatus_to_core_PodStatus (t * testing.T ) {
401
- // fail
402
- v1FailTestInputs := []v1.PodStatus {
401
+ asymmetricInputs := []struct {
402
+ name string
403
+ in v1.PodStatus
404
+ out core.PodStatus
405
+ }{
403
406
{
404
- PodIP : "1.1.2.1" , // fail becaue PodIP != PodIPs[0]
405
- PodIPs : []v1.PodIP {
406
- {IP : "1.1.1.1" },
407
- {IP : "2.2.2.2" },
407
+ name : "mismatched podIP" ,
408
+ in : v1.PodStatus {
409
+ PodIP : "1.1.2.1" , // Older field takes precedence for compatibility with patch by older clients
410
+ PodIPs : []v1.PodIP {
411
+ {IP : "1.1.1.1" },
412
+ {IP : "2.2.2.2" },
413
+ },
414
+ },
415
+ out : core.PodStatus {
416
+ PodIPs : []core.PodIP {
417
+ {IP : "1.1.2.1" },
418
+ },
419
+ },
420
+ },
421
+ {
422
+ name : "matching podIP" ,
423
+ in : v1.PodStatus {
424
+ PodIP : "1.1.1.1" ,
425
+ PodIPs : []v1.PodIP {
426
+ {IP : "1.1.1.1" },
427
+ {IP : "2.2.2.2" },
428
+ },
429
+ },
430
+ out : core.PodStatus {
431
+ PodIPs : []core.PodIP {
432
+ {IP : "1.1.1.1" },
433
+ {IP : "2.2.2.2" },
434
+ },
435
+ },
436
+ },
437
+ {
438
+ name : "empty podIP" ,
439
+ in : v1.PodStatus {
440
+ PodIP : "" ,
441
+ PodIPs : []v1.PodIP {
442
+ {IP : "1.1.1.1" },
443
+ {IP : "2.2.2.2" },
444
+ },
445
+ },
446
+ out : core.PodStatus {
447
+ PodIPs : []core.PodIP {
448
+ {IP : "1.1.1.1" },
449
+ {IP : "2.2.2.2" },
450
+ },
408
451
},
409
452
},
410
453
}
454
+
411
455
// success
412
456
v1TestInputs := []v1.PodStatus {
413
457
// only Primary IP Provided
@@ -451,12 +495,18 @@ func Test_v1_PodStatus_to_core_PodStatus(t *testing.T) {
451
495
},
452
496
},
453
497
}
454
- // run failed cases
455
- for i , failedTest := range v1FailTestInputs {
498
+
499
+ // run asymmetric cases
500
+ for _ , tc := range asymmetricInputs {
501
+ testInput := tc .in
502
+
456
503
corePodStatus := core.PodStatus {}
457
504
// convert..
458
- if err := corev1 .Convert_v1_PodStatus_To_core_PodStatus (& failedTest , & corePodStatus , nil ); err == nil {
459
- t .Errorf ("%v: Convert v1.PodStatus to core.PodStatus should have failed for input %+v" , i , failedTest )
505
+ if err := corev1 .Convert_v1_PodStatus_To_core_PodStatus (& testInput , & corePodStatus , nil ); err != nil {
506
+ t .Errorf ("%s: Convert v1.PodStatus to core.PodStatus failed with error:%v for input %+v" , tc .name , err .Error (), testInput )
507
+ }
508
+ if ! reflect .DeepEqual (corePodStatus , tc .out ) {
509
+ t .Errorf ("%s: expected %#v, got %#v" , tc .name , tc .out .PodIPs , corePodStatus .PodIPs )
460
510
}
461
511
}
462
512
@@ -541,10 +591,40 @@ func Test_core_NodeSpec_to_v1_NodeSpec(t *testing.T) {
541
591
}
542
592
543
593
func Test_v1_NodeSpec_to_core_NodeSpec (t * testing.T ) {
544
- failInputs := []v1.NodeSpec {
545
- { // fail PodCIDRs[0] != PodCIDR
546
- PodCIDR : "10.0.0.0/24" ,
547
- PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
594
+ asymmetricInputs := []struct {
595
+ name string
596
+ in v1.NodeSpec
597
+ out core.NodeSpec
598
+ }{
599
+ {
600
+ name : "mismatched podCIDR" ,
601
+ in : v1.NodeSpec {
602
+ PodCIDR : "10.0.0.0/24" ,
603
+ PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
604
+ },
605
+ out : core.NodeSpec {
606
+ PodCIDRs : []string {"10.0.0.0/24" },
607
+ },
608
+ },
609
+ {
610
+ name : "unset podCIDR" ,
611
+ in : v1.NodeSpec {
612
+ PodCIDR : "" ,
613
+ PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
614
+ },
615
+ out : core.NodeSpec {
616
+ PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
617
+ },
618
+ },
619
+ {
620
+ name : "matching podCIDR" ,
621
+ in : v1.NodeSpec {
622
+ PodCIDR : "10.0.1.0/24" ,
623
+ PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
624
+ },
625
+ out : core.NodeSpec {
626
+ PodCIDRs : []string {"10.0.1.0/24" , "ace:cab:deca::/8" },
627
+ },
548
628
},
549
629
}
550
630
@@ -591,11 +671,17 @@ func Test_v1_NodeSpec_to_core_NodeSpec(t *testing.T) {
591
671
},
592
672
}
593
673
594
- // fail cases
595
- for i , failInput := range failInputs {
674
+ // run asymmetric cases
675
+ for _ , tc := range asymmetricInputs {
676
+ testInput := tc .in
677
+
596
678
coreNodeSpec := core.NodeSpec {}
597
- if err := corev1 .Convert_v1_NodeSpec_To_core_NodeSpec (& failInput , & coreNodeSpec , nil ); err == nil {
598
- t .Errorf ("%v: Convert v1.NodeSpec to core.NodeSpec failed. Expected an error when coreNodeSpec.PodCIDR != coreNodeSpec.PodCIDRs[0]" , i )
679
+ // convert..
680
+ if err := corev1 .Convert_v1_NodeSpec_To_core_NodeSpec (& testInput , & coreNodeSpec , nil ); err != nil {
681
+ t .Errorf ("%s: Convert v1.NodeSpec to core.NodeSpec failed with error:%v for input %+v" , tc .name , err .Error (), testInput )
682
+ }
683
+ if ! reflect .DeepEqual (coreNodeSpec , tc .out ) {
684
+ t .Errorf ("%s: expected %#v, got %#v" , tc .name , tc .out .PodCIDRs , coreNodeSpec .PodCIDRs )
599
685
}
600
686
}
601
687
0 commit comments