mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 22:46:12 +00:00
Merge pull request #12635 from hurf/null_age
fix AGE error when resource has no creationTimeStamp
This commit is contained in:
commit
44fa48e5af
@ -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))
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user