Merge pull request #12635 from hurf/null_age

fix AGE error when resource has no creationTimeStamp
This commit is contained in:
Wojciech Tyczynski 2015-08-20 13:09:41 +02:00
commit 44fa48e5af
2 changed files with 35 additions and 1 deletions

View File

@ -363,7 +363,13 @@ func podHostString(host, ip string) string {
}
func shortHumanDuration(d time.Duration) string {
if seconds := int(d.Seconds()); seconds < 60 {
// Allow deviation no more than 2 seconds(excluded) to tolerate machine time
// inconsistence, it can be considered as almost now.
if seconds := int(d.Seconds()); seconds < -1 {
return fmt.Sprintf("<invalid>")
} else if seconds < 0 {
return fmt.Sprintf("0s")
} else if seconds < 60 {
return fmt.Sprintf("%ds", seconds)
} else if minutes := int(d.Minutes()); minutes < 60 {
return fmt.Sprintf("%dm", minutes)
@ -378,6 +384,9 @@ func shortHumanDuration(d time.Duration) string {
// translateTimestamp returns the elapsed time since timestamp in
// human-readable approximation.
func translateTimestamp(timestamp util.Time) string {
if timestamp.IsZero() {
return "<unknown>"
}
return shortHumanDuration(time.Now().Sub(timestamp.Time))
}

View File

@ -1190,3 +1190,28 @@ func TestPrintPodWithLabels(t *testing.T) {
buf.Reset()
}
}
type stringTestList []struct {
name, got, exp string
}
func TestTranslateTimestamp(t *testing.T) {
tl := stringTestList{
{"a while from now", translateTimestamp(util.Time{Time: time.Now().Add(2.1e9)}), "<invalid>"},
{"almost now", translateTimestamp(util.Time{Time: time.Now().Add(1.9e9)}), "0s"},
{"now", translateTimestamp(util.Time{Time: time.Now()}), "0s"},
{"unknown", translateTimestamp(util.Time{}), "<unknown>"},
{"30 seconds ago", translateTimestamp(util.Time{Time: time.Now().Add(-3e10)}), "30s"},
{"5 minutes ago", translateTimestamp(util.Time{Time: time.Now().Add(-3e11)}), "5m"},
{"an hour ago", translateTimestamp(util.Time{Time: time.Now().Add(-6e12)}), "1h"},
{"2 days ago", translateTimestamp(util.Time{Time: time.Now().AddDate(0, 0, -2)}), "2d"},
{"months ago", translateTimestamp(util.Time{Time: time.Now().AddDate(0, -3, 0)}), "92d"},
{"10 years ago", translateTimestamp(util.Time{Time: time.Now().AddDate(-10, 0, 0)}), "10y"},
}
for _, test := range tl {
if test.got != test.exp {
t.Errorf("On %v, expected '%v', but got '%v'",
test.name, test.exp, test.got)
}
}
}