github.com/lingyao2333/mo-zero@v1.4.1/core/discov/internal/statewatcher_test.go (about) 1 package internal 2 3 import ( 4 "sync" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "google.golang.org/grpc/connectivity" 9 ) 10 11 func TestStateWatcher_watch(t *testing.T) { 12 ctrl := gomock.NewController(t) 13 defer ctrl.Finish() 14 watcher := newStateWatcher() 15 var wg sync.WaitGroup 16 wg.Add(1) 17 watcher.addListener(func() { 18 wg.Done() 19 }) 20 conn := NewMocketcdConn(ctrl) 21 conn.EXPECT().GetState().Return(connectivity.Ready) 22 conn.EXPECT().GetState().Return(connectivity.TransientFailure) 23 conn.EXPECT().GetState().Return(connectivity.Ready).AnyTimes() 24 conn.EXPECT().WaitForStateChange(gomock.Any(), gomock.Any()).Return(true).AnyTimes() 25 go watcher.watch(conn) 26 wg.Wait() 27 }