@@ -445,22 +445,32 @@ func shuffle(statuses []v1.ContainerStatus) []v1.ContainerStatus {
445
445
}
446
446
447
447
func TestStatusEquality (t * testing.T ) {
448
- pod := v1.Pod {
449
- Spec : v1.PodSpec {},
450
- }
451
- containerStatus := []v1. ContainerStatus {}
452
- for i := 0 ; i < 10 ; i ++ {
453
- s := v1.ContainerStatus {
454
- Name : fmt . Sprintf ( "container%d" , i ),
448
+ getContainersAndStatuses := func () ([] v1.Container , []v1. ContainerStatus ) {
449
+ var containers [] v1.Container
450
+ var containerStatuses []v1. ContainerStatus
451
+ for i := 0 ; i < 10 ; i ++ {
452
+ containerName := fmt . Sprintf ( "container%d" , i )
453
+ containers = append ( containers , v1.Container { Name : containerName })
454
+ containerStatuses = append ( containerStatuses , v1. ContainerStatus { Name : containerName })
455
455
}
456
- containerStatus = append (containerStatus , s )
456
+ return containers , containerStatuses
457
+ }
458
+ containers , containerStatuses := getContainersAndStatuses ()
459
+ pod := v1.Pod {
460
+ Spec : v1.PodSpec {
461
+ InitContainers : containers ,
462
+ },
457
463
}
458
464
podStatus := v1.PodStatus {
459
- ContainerStatuses : containerStatus ,
465
+ ContainerStatuses : containerStatuses ,
466
+ InitContainerStatuses : containerStatuses ,
467
+ EphemeralContainerStatuses : containerStatuses ,
460
468
}
461
469
for i := 0 ; i < 10 ; i ++ {
462
470
oldPodStatus := v1.PodStatus {
463
- ContainerStatuses : shuffle (podStatus .ContainerStatuses ),
471
+ ContainerStatuses : shuffle (podStatus .ContainerStatuses ),
472
+ InitContainerStatuses : shuffle (podStatus .InitContainerStatuses ),
473
+ EphemeralContainerStatuses : shuffle (podStatus .EphemeralContainerStatuses ),
464
474
}
465
475
normalizeStatus (& pod , & oldPodStatus )
466
476
normalizeStatus (& pod , & podStatus )
@@ -504,8 +514,9 @@ func TestStatusNormalizationEnforcesMaxBytes(t *testing.T) {
504
514
containerStatus = append (containerStatus , s )
505
515
}
506
516
podStatus := v1.PodStatus {
507
- InitContainerStatuses : containerStatus [:24 ],
508
- ContainerStatuses : containerStatus [24 :],
517
+ InitContainerStatuses : containerStatus [:16 ],
518
+ ContainerStatuses : containerStatus [16 :32 ],
519
+ EphemeralContainerStatuses : containerStatus [32 :],
509
520
}
510
521
result := normalizeStatus (& pod , & podStatus )
511
522
count := 0
@@ -521,6 +532,49 @@ func TestStatusNormalizationEnforcesMaxBytes(t *testing.T) {
521
532
}
522
533
}
523
534
535
+ func TestStatusNormalizeTimeStamp (t * testing.T ) {
536
+ pod := v1.Pod {
537
+ Spec : v1.PodSpec {},
538
+ }
539
+
540
+ now := metav1 .Now ()
541
+ podStatus := v1.PodStatus {
542
+ ContainerStatuses : []v1.ContainerStatus {
543
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : now }}},
544
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : now , FinishedAt : now }}},
545
+ },
546
+ InitContainerStatuses : []v1.ContainerStatus {
547
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : now }}},
548
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : now , FinishedAt : now }}},
549
+ },
550
+ EphemeralContainerStatuses : []v1.ContainerStatus {
551
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : now }}},
552
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : now , FinishedAt : now }}},
553
+ },
554
+ }
555
+
556
+ expectedTime := now .DeepCopy ().Rfc3339Copy ()
557
+ expectedPodStatus := v1.PodStatus {
558
+ ContainerStatuses : []v1.ContainerStatus {
559
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : expectedTime }}},
560
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : expectedTime , FinishedAt : expectedTime }}},
561
+ },
562
+ InitContainerStatuses : []v1.ContainerStatus {
563
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : expectedTime }}},
564
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : expectedTime , FinishedAt : expectedTime }}},
565
+ },
566
+ EphemeralContainerStatuses : []v1.ContainerStatus {
567
+ {State : v1.ContainerState {Running : & v1.ContainerStateRunning {StartedAt : expectedTime }}},
568
+ {State : v1.ContainerState {Terminated : & v1.ContainerStateTerminated {StartedAt : expectedTime , FinishedAt : expectedTime }}},
569
+ },
570
+ }
571
+
572
+ normalizedStatus := normalizeStatus (& pod , & podStatus )
573
+ if ! isPodStatusByKubeletEqual (& expectedPodStatus , normalizedStatus ) {
574
+ t .Fatalf ("The timestamp is not correctly converted to RFC3339 format." )
575
+ }
576
+ }
577
+
524
578
func TestStaticPod (t * testing.T ) {
525
579
staticPod := getTestPod ()
526
580
staticPod .Annotations = map [string ]string {kubetypes .ConfigSourceAnnotationKey : "file" }
0 commit comments