0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00

Merge pull request #415 from abiosoft/appveyor-fix

Fix race condition in test for AppVeyor
This commit is contained in:
Matt Holt 2015-12-09 15:50:51 -07:00
commit aba0ae358e

View file

@ -13,14 +13,14 @@ func TestWatcher(t *testing.T) {
interval := time.Millisecond * 100
i := 0
out := ""
syncChan := make(chan struct{})
stopChan := TickerFunc(interval, func() {
i++
out += fmt.Sprint(i)
syncChan <- struct{}{}
})
// wait little more because of concurrency
time.Sleep(interval * 9)
stopChan <- struct{}{}
if !strings.HasPrefix(out, expected) {
sleepInSync(8, syncChan, stopChan)
if out != expected {
t.Fatalf("Expected to have prefix %v, found %v", expected, out)
}
out = ""
@ -31,8 +31,9 @@ func TestWatcher(t *testing.T) {
mu.Lock()
out += fmt.Sprint(i)
mu.Unlock()
syncChan <- struct{}{}
})
time.Sleep(interval * 10)
sleepInSync(9, syncChan, stopChan)
mu.Lock()
res := out
mu.Unlock()
@ -40,3 +41,10 @@ func TestWatcher(t *testing.T) {
t.Fatalf("expected (%v) must be a proper prefix of out(%v).", expected, out)
}
}
func sleepInSync(times int, syncChan chan struct{}, stopChan chan struct{}) {
for i := 0; i < times; i++ {
<-syncChan
}
stopChan <- struct{}{}
}