Revert "Check the condition immediately in util.Wait funcs"

pull/6/head
Eric Tune 2015-09-23 16:32:05 -07:00
parent a4d85703d5
commit f3018162d1
2 changed files with 4 additions and 7 deletions

View File

@ -44,6 +44,8 @@ type ConditionFunc func() (done bool, err error)
// is reached. condition will always be invoked at least once but some intervals
// may be missed if the condition takes too long or the time window is too short.
// If you want to Poll something forever, see PollInfinite.
// Poll always waits the interval before the first check of the condition.
// TODO: create a separate PollImmediate function that does not wait.
func Poll(interval, timeout time.Duration, condition ConditionFunc) error {
return WaitFor(poller(interval, timeout), condition)
}
@ -88,12 +90,7 @@ func WaitFor(wait WaitFunc, c ConditionFunc) error {
func poller(interval, timeout time.Duration) WaitFunc {
return WaitFunc(func() <-chan struct{} {
ch := make(chan struct{})
go func() {
// send to the channel once immediately, rather than waiting for the first
// interval to elapse
ch <- struct{}{}
tick := time.NewTicker(interval)
defer tick.Stop()
var after <-chan time.Time

View File

@ -40,8 +40,8 @@ DRAIN:
t.Errorf("unexpected timeout after poll")
}
}
if count < 2 {
t.Errorf("expected at least two values, got %d", count)
if count > 3 {
t.Errorf("expected up to three values, got %d", count)
}
}