Merge pull request #3644 from mitake/test-race

etcdserver, test: don't access testing.T in time.AfterFunc()'s own go…
This commit is contained in:
Yicheng Qin 2015-10-07 08:34:58 -07:00
commit f74ff9b867

View File

@ -604,11 +604,18 @@ func TestSync(t *testing.T) {
reqIDGen: idutil.NewGenerator(0, time.Time{}),
}
// check that sync is non-blocking
timer := time.AfterFunc(time.Second, func() {
t.Fatalf("sync should be non-blocking but did not return after 1s!")
})
srv.sync(10 * time.Second)
timer.Stop()
done := make(chan struct{})
go func() {
srv.sync(10 * time.Second)
done <- struct{}{}
}()
select {
case <-done:
case <-time.After(time.Second):
t.Fatal("sync should be non-blocking but did not return after 1s!")
}
testutil.WaitSchedule()
action := n.Action()
@ -637,11 +644,17 @@ func TestSyncTimeout(t *testing.T) {
reqIDGen: idutil.NewGenerator(0, time.Time{}),
}
// check that sync is non-blocking
timer := time.AfterFunc(time.Second, func() {
t.Fatalf("sync should be non-blocking but did not return after 1s!")
})
srv.sync(0)
timer.Stop()
done := make(chan struct{})
go func() {
srv.sync(0)
done <- struct{}{}
}()
select {
case <-done:
case <-time.After(time.Second):
t.Fatal("sync should be non-blocking but did not return after 1s!")
}
// give time for goroutine in sync to cancel
testutil.WaitSchedule()