Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/util/test/poll.go

26 lines
492 B

package test
import (
"reflect"
"testing"
"time"
)
// Poll repeatedly evaluates condition until we either timeout, or it succeeds.
func Poll(t testing.TB, d time.Duration, want interface{}, have func() interface{}) {
t.Helper()
deadline := time.Now().Add(d)
for {
if time.Now().After(deadline) {
break
}
if reflect.DeepEqual(want, have()) {
return
}
time.Sleep(d / 100)
}
h := have()
if !reflect.DeepEqual(want, h) {
t.Fatalf("expected %v, got %v", want, h)
}
}