Add ElapsedTime method to JobProgressMetrics (#1660)

This commit is contained in:
Miccah 2023-08-24 11:28:33 -07:00 committed by GitHub
parent 519646342e
commit a4401939a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View file

@ -284,3 +284,16 @@ func (m JobProgressMetrics) PercentComplete() int {
}
return int(num * 100 / den)
}
// ElapsedTime is a convenience method that provides the elapsed time the job
// has been running. If it hasn't started yet, 0 is returned. If it has
// finished, the total time is returned.
func (m JobProgressMetrics) ElapsedTime() time.Duration {
if m.StartTime.IsZero() {
return 0
}
if m.EndTime.IsZero() {
return time.Since(m.StartTime)
}
return m.EndTime.Sub(m.StartTime)
}

View file

@ -115,3 +115,14 @@ func TestJobProgressDone(t *testing.T) {
assert.FailNow(t, "done should not block for a nil job")
}
}
func TestJobProgressElapsedTime(t *testing.T) {
metrics := JobProgressMetrics{}
assert.Equal(t, time.Duration(0), metrics.ElapsedTime())
metrics.StartTime = time.Now()
assert.Greater(t, metrics.ElapsedTime(), time.Duration(0))
metrics.EndTime = metrics.StartTime.Add(1 * time.Hour)
assert.Equal(t, metrics.ElapsedTime(), 1*time.Hour)
}