diff --git a/remoting/zookeeper/listener_test.go b/remoting/zookeeper/listener_test.go index b1f0d43d3429a38d8d5e9b5ad804dfecd2ee53c1..10cc6dcdd62a5ac74cad21dc3d81a9a9a75696d1 100644 --- a/remoting/zookeeper/listener_test.go +++ b/remoting/zookeeper/listener_test.go @@ -19,6 +19,7 @@ package zookeeper import ( "fmt" + "sync" "testing" "time" ) @@ -86,32 +87,36 @@ func TestListener(t *testing.T) { dubbo.service.com.ikurento.user.UserProvider.warmup=100 dubbo.service.com.ikurento.user.UserProvider.cluster=failover ` - + var wait sync.WaitGroup ts, client, event := initZkData(t) defer ts.Stop() client.Wait.Add(1) + wait.Add(1) go client.HandleZkEvent(event) listener := NewZkEventListener(client) - dataListener := &mockDataListener{client: client, changedData: changedData} + dataListener := &mockDataListener{client: client, changedData: changedData, wait: &wait} listener.ListenServiceEvent("/dubbo", dataListener) _, err := client.Conn.Set("/dubbo/dubbo.properties", []byte(changedData), 1) assert.NoError(t, err) - client.Wait.Wait() + wait.Wait() assert.Equal(t, changedData, dataListener.eventList[1].Content) + client.Close() + } type mockDataListener struct { eventList []remoting.Event client *ZookeeperClient changedData string + wait *sync.WaitGroup } func (m *mockDataListener) DataChange(eventType remoting.Event) bool { fmt.Println(eventType) m.eventList = append(m.eventList, eventType) if eventType.Content == m.changedData { - m.client.Wait.Done() + m.wait.Done() } return true }