2014-05-07 02:48:25 +02:00
|
|
|
package testutil
|
|
|
|
|
|
|
|
import (
|
2017-01-26 19:05:56 -08:00
|
|
|
"fmt"
|
2014-05-16 15:49:47 -07:00
|
|
|
"time"
|
2014-05-07 02:48:25 +02:00
|
|
|
)
|
|
|
|
|
2017-01-26 17:11:16 -08:00
|
|
|
const (
|
2017-04-26 17:42:50 -07:00
|
|
|
wait = 25 * time.Millisecond
|
|
|
|
timeout = 5 * time.Second
|
2017-01-26 17:11:16 -08:00
|
|
|
)
|
2014-05-07 02:48:25 +02:00
|
|
|
|
2017-04-26 17:42:50 -07:00
|
|
|
func WaitForResult(f func() (bool, error)) error {
|
|
|
|
stop := time.Now().Add(timeout)
|
|
|
|
for {
|
|
|
|
ok, err := f()
|
|
|
|
if ok {
|
2017-03-23 16:26:05 -04:00
|
|
|
return nil
|
2014-05-07 02:48:25 +02:00
|
|
|
}
|
2017-04-26 17:42:50 -07:00
|
|
|
if time.Now().After(stop) {
|
|
|
|
return fmt.Errorf("timeout: %s", err)
|
2014-05-07 02:48:25 +02:00
|
|
|
}
|
2017-04-26 17:42:50 -07:00
|
|
|
time.Sleep(wait)
|
2014-05-07 02:48:25 +02:00
|
|
|
}
|
|
|
|
}
|