etcdserver: refactor non-blocking check for sync tests

to make it much more reliable and avoid false errors.
This commit is contained in:
Yicheng Qin
2014-11-04 13:07:44 -08:00
parent b59961228b
commit 4d40816a90

View File

@@ -678,12 +678,17 @@ func TestSync(t *testing.T) {
srv := &EtcdServer{
node: n,
}
start := time.Now()
srv.sync(defaultSyncTimeout)
done := make(chan struct{})
go func() {
srv.sync(10 * time.Second)
close(done)
}()
// check that sync is non-blocking
if d := time.Since(start); d > time.Millisecond {
t.Errorf("CallSyncTime = %v, want < %v", d, time.Millisecond)
select {
case <-done:
case <-time.After(time.Second):
t.Fatalf("sync should be non-blocking but did not return after 1s!")
}
testutil.ForceGosched()
@@ -707,12 +712,17 @@ func TestSyncTimeout(t *testing.T) {
srv := &EtcdServer{
node: n,
}
start := time.Now()
srv.sync(0)
done := make(chan struct{})
go func() {
srv.sync(0)
close(done)
}()
// check that sync is non-blocking
if d := time.Since(start); d > time.Millisecond {
t.Errorf("CallSyncTime = %v, want < %v", d, time.Millisecond)
select {
case <-done:
case <-time.After(time.Second):
t.Fatalf("sync should be non-blocking but did not return after 1s!")
}
// give time for goroutine in sync to cancel