github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/testhelpers/performance/timeit.go (about) 1 package performance 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/ActiveState/cli/internal/errs" 8 ) 9 10 // TimeIt tests if the average duration of the function is less than the maxDuration 11 func TimeIt(t *testing.T, f func(), attempts int, maxDuration time.Duration) error { 12 durations := make([]time.Duration, attempts) 13 avgDuration := time.Duration(0) 14 for i := 0; i < attempts; i++ { 15 start := time.Now() 16 f() 17 durations[i] = time.Since(start) 18 avgDuration += durations[i] 19 } 20 21 avgDuration /= time.Duration(attempts) 22 23 if avgDuration > maxDuration { 24 return errs.New("Average duration of %s exceeded max duration of %s, individual durations: %#v", avgDuration, maxDuration, durations) 25 } 26 27 return nil 28 }