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  }