func TestChangedStatusUpdatesLastTransitionTime(t *testing.T) { syncer := newTestManager(&fake.Clientset{}) podStatus := getReadyPodStatus() pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ UID: "12345678", Name: "foo", Namespace: "new", }, Status: api.PodStatus{}, } syncer.SetPodStatus(pod, podStatus) verifyUpdates(t, syncer, 1) oldStatus := expectPodStatus(t, syncer, pod) anotherStatus := getReadyPodStatus() anotherStatus.Conditions[0].Status = api.ConditionFalse syncer.SetPodStatus(pod, anotherStatus) verifyUpdates(t, syncer, 1) newStatus := expectPodStatus(t, syncer, pod) oldReadyCondition := api.GetPodReadyCondition(oldStatus) newReadyCondition := api.GetPodReadyCondition(newStatus) if newReadyCondition.LastTransitionTime.IsZero() { t.Errorf("Unexpected: last transition time not set") } if newReadyCondition.LastTransitionTime.Before(oldReadyCondition.LastTransitionTime) { t.Errorf("Unexpected: new transition time %s, is before old transition time %s", newReadyCondition.LastTransitionTime, oldReadyCondition.LastTransitionTime) } }
func TestUnchangedStatusPreservesLastTransitionTime(t *testing.T) { syncer := newTestManager(&fake.Clientset{}) podStatus := getReadyPodStatus() pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ UID: "12345678", Name: "foo", Namespace: "new", }, Status: api.PodStatus{}, } syncer.SetPodStatus(pod, podStatus) verifyUpdates(t, syncer, 1) oldStatus := expectPodStatus(t, syncer, pod) anotherStatus := getReadyPodStatus() syncer.SetPodStatus(pod, anotherStatus) // No update. verifyUpdates(t, syncer, 0) newStatus := expectPodStatus(t, syncer, pod) oldReadyCondition := api.GetPodReadyCondition(oldStatus) newReadyCondition := api.GetPodReadyCondition(newStatus) if newReadyCondition.LastTransitionTime.IsZero() { t.Errorf("Unexpected: last transition time not set") } if !oldReadyCondition.LastTransitionTime.Equal(newReadyCondition.LastTransitionTime) { t.Errorf("Unexpected: new transition time %s, is not equal to old transition time %s", newReadyCondition.LastTransitionTime, oldReadyCondition.LastTransitionTime) } }
func TestNewStatusSetsReadyTransitionTime(t *testing.T) { syncer := newTestManager(&fake.Clientset{}) podStatus := getReadyPodStatus() pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ UID: "12345678", Name: "foo", Namespace: "new", }, Status: api.PodStatus{}, } syncer.SetPodStatus(pod, podStatus) verifyUpdates(t, syncer, 1) status := expectPodStatus(t, syncer, pod) readyCondition := api.GetPodReadyCondition(status) if readyCondition.LastTransitionTime.IsZero() { t.Errorf("Unexpected: last transition time not set") } }