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 interval := time.Millisecond * 100
i := 0 i := 0
out := "" out := ""
syncChan := make(chan struct{})
stopChan := TickerFunc(interval, func() { stopChan := TickerFunc(interval, func() {
i++ i++
out += fmt.Sprint(i) out += fmt.Sprint(i)
syncChan <- struct{}{}
}) })
// wait little more because of concurrency sleepInSync(8, syncChan, stopChan)
time.Sleep(interval * 9) if out != expected {
stopChan <- struct{}{}
if !strings.HasPrefix(out, expected) {
t.Fatalf("Expected to have prefix %v, found %v", expected, out) t.Fatalf("Expected to have prefix %v, found %v", expected, out)
} }
out = "" out = ""
@ -31,8 +31,9 @@ func TestWatcher(t *testing.T) {
mu.Lock() mu.Lock()
out += fmt.Sprint(i) out += fmt.Sprint(i)
mu.Unlock() mu.Unlock()
syncChan <- struct{}{}
}) })
time.Sleep(interval * 10) sleepInSync(9, syncChan, stopChan)
mu.Lock() mu.Lock()
res := out res := out
mu.Unlock() 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) 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{}{}
}