mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
metrics: measure idle time during builds
This measures the amount of time spent idle during the build. This is done by collecting the set of task times, determining which sections contain gaps where no task is running, and aggregating that duration into a metric. Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
This commit is contained in:
46
util/progress/metricwriter_test.go
Normal file
46
util/progress/metricwriter_test.go
Normal file
@ -0,0 +1,46 @@
|
||||
package progress
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestCalculateIdleTime(t *testing.T) {
|
||||
for _, tt := range []struct {
|
||||
started []int64
|
||||
completed []int64
|
||||
ms int64
|
||||
}{
|
||||
{
|
||||
started: []int64{0, 1, 3},
|
||||
completed: []int64{2, 10, 5},
|
||||
ms: 0,
|
||||
},
|
||||
{
|
||||
started: []int64{0, 3},
|
||||
completed: []int64{2, 5},
|
||||
ms: 1,
|
||||
},
|
||||
{
|
||||
started: []int64{3, 0, 7},
|
||||
completed: []int64{5, 2, 10},
|
||||
ms: 3,
|
||||
},
|
||||
} {
|
||||
started := unixMillis(tt.started...)
|
||||
completed := unixMillis(tt.completed...)
|
||||
|
||||
actual := int64(calculateIdleTime(started, completed) / time.Millisecond)
|
||||
assert.Equal(t, tt.ms, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func unixMillis(ts ...int64) []time.Time {
|
||||
times := make([]time.Time, len(ts))
|
||||
for i, ms := range ts {
|
||||
times[i] = time.UnixMilli(ms)
|
||||
}
|
||||
return times
|
||||
}
|
Reference in New Issue
Block a user