etcdserver: refactor server_test.go

release-2.0
Xiang Li 2015-01-02 10:56:09 -08:00
parent 921ce4c25b
commit ac6cd03365
1 changed files with 24 additions and 16 deletions

View File

@ -53,7 +53,7 @@ func TestDoLocalAction(t *testing.T) {
}{
{
pb.Request{Method: "GET", ID: 1, Wait: true},
Response{Watcher: &stubWatcher{}}, nil, []action{action{name: "Watch"}},
Response{Watcher: &nopWatcher{}}, nil, []action{action{name: "Watch"}},
},
{
pb.Request{Method: "GET", ID: 1},
@ -116,11 +116,17 @@ func TestDoBadLocalAction(t *testing.T) {
},
{
pb.Request{Method: "GET", ID: 1},
[]action{action{name: "Get"}},
[]action{action{
name: "Get",
params: []interface{}{"", false, false},
}},
},
{
pb.Request{Method: "HEAD", ID: 1},
[]action{action{name: "Get"}},
[]action{action{
name: "Get",
params: []interface{}{"", false, false},
}},
},
}
for i, tt := range tests {
@ -1131,9 +1137,10 @@ func (r *recorder) Action() []action {
return cpy
}
type storeRecorder struct {
recorder
}
// storeRecorder records all the methods it receives.
// storeRecorder DOES NOT work as a actual store.
// It always returns invaild empty response and no error.
type storeRecorder struct{ recorder }
func (s *storeRecorder) Version() int { return 0 }
func (s *storeRecorder) Index() uint64 { return 0 }
@ -1188,7 +1195,7 @@ func (s *storeRecorder) CompareAndDelete(path, prevVal string, prevIdx uint64) (
}
func (s *storeRecorder) Watch(_ string, _, _ bool, _ uint64) (store.Watcher, error) {
s.record(action{name: "Watch"})
return &stubWatcher{}, nil
return &nopWatcher{}, nil
}
func (s *storeRecorder) Save() ([]byte, error) {
s.record(action{name: "Save"})
@ -1206,24 +1213,25 @@ func (s *storeRecorder) DeleteExpiredKeys(cutoff time.Time) {
})
}
type stubWatcher struct{}
type nopWatcher struct{}
func (w *stubWatcher) EventChan() chan *store.Event { return nil }
func (w *stubWatcher) StartIndex() uint64 { return 0 }
func (w *stubWatcher) Remove() {}
func (w *nopWatcher) EventChan() chan *store.Event { return nil }
func (w *nopWatcher) StartIndex() uint64 { return 0 }
func (w *nopWatcher) Remove() {}
// errStoreRecorder returns an store error on Get, Watch request
// errStoreRecorder is a storeRecorder, but returns the given error on
// Get, Watch methods.
type errStoreRecorder struct {
storeRecorder
err error
}
func (s *errStoreRecorder) Get(_ string, _, _ bool) (*store.Event, error) {
s.record(action{name: "Get"})
func (s *errStoreRecorder) Get(path string, recursive, sorted bool) (*store.Event, error) {
s.storeRecorder.Get(path, recursive, sorted)
return nil, s.err
}
func (s *errStoreRecorder) Watch(_ string, _, _ bool, _ uint64) (store.Watcher, error) {
s.record(action{name: "Watch"})
func (s *errStoreRecorder) Watch(path string, recursive, sorted bool, index uint64) (store.Watcher, error) {
s.storeRecorder.Watch(path, recursive, sorted, index)
return nil, s.err
}