From 64596f0c495803bc9de8dcb46c8c867cecdbdb8b Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Tue, 26 Jan 2016 20:57:21 -0800 Subject: [PATCH] etcdserver/test: synchronously wait on TestApplySnapshotAndCommittedEntries Replaces the RecorderBuffered with a RecorderStream so Wait will block waiting for updates to the etcdserver store. Fixes #4296 --- etcdserver/server_test.go | 2 +- store/store.go | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/etcdserver/server_test.go b/etcdserver/server_test.go index 8af458428..23cd338ea 100644 --- a/etcdserver/server_test.go +++ b/etcdserver/server_test.go @@ -1019,7 +1019,7 @@ func TestRecvSnapshot(t *testing.T) { // first and then committed entries. func TestApplySnapshotAndCommittedEntries(t *testing.T) { n := newNopReadyNode() - st := store.NewRecorder() + st := store.NewRecorderStream() cl := newCluster("abc") cl.SetStore(store.New()) storage := raft.NewMemoryStorage() diff --git a/store/store.go b/store/store.go index 2d4b6c40a..02b180bae 100644 --- a/store/store.go +++ b/store/store.go @@ -756,13 +756,17 @@ type StoreRecorder struct { // It always returns invalid empty response and no error. type storeRecorder struct { Store - testutil.RecorderBuffered + testutil.Recorder } -func NewNop() Store { return &storeRecorder{} } +func NewNop() Store { return &storeRecorder{Recorder: &testutil.RecorderBuffered{}} } func NewRecorder() *StoreRecorder { - sr := &storeRecorder{} - return &StoreRecorder{Store: sr, Recorder: sr} + sr := &storeRecorder{Recorder: &testutil.RecorderBuffered{}} + return &StoreRecorder{Store: sr, Recorder: sr.Recorder} +} +func NewRecorderStream() *StoreRecorder { + sr := &storeRecorder{Recorder: testutil.NewRecorderStream()} + return &StoreRecorder{Store: sr, Recorder: sr.Recorder} } func (s *storeRecorder) Version() int { return 0 } @@ -856,7 +860,8 @@ type errStoreRecorder struct { func NewErrRecorder(err error) *StoreRecorder { sr := &errStoreRecorder{err: err} - return &StoreRecorder{Store: sr, Recorder: sr} + sr.Recorder = &testutil.RecorderBuffered{} + return &StoreRecorder{Store: sr, Recorder: sr.Recorder} } func (s *errStoreRecorder) Get(path string, recursive, sorted bool) (*Event, error) {