Fix a bug in etcd_watcher_test

pull/6/head
Wojciech Tyczynski 2015-12-28 10:43:33 +01:00
parent 9bdc4100d5
commit 0b7dce9505
1 changed files with 9 additions and 2 deletions

View File

@ -462,8 +462,15 @@ func TestWatchPurposefulShutdown(t *testing.T) {
watching.Stop()
rt.Gosched()
if _, open := <-watching.ResultChan(); open {
t.Errorf("Channel should be closed")
// There is a race in etcdWatcher so that after calling Stop() one of
// two things can happen:
// - ResultChan() may be closed (triggered by closing userStop channel)
// - an Error "context cancelled" may be emitted (triggered by cancelling request
// to etcd and putting that error to etcdError channel)
// We need to be prepared for both here.
event, open := <-watching.ResultChan()
if open && event.Type != watch.Error {
t.Errorf("Unexpected event from stopped watcher: %#v", event)
}
}