@@ -25,9 +25,11 @@ import (
2525 "github.com/agiledragon/gomonkey/v2"
2626 config_cluster_v3 "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3"
2727 discoveryv3 "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
28+ service_discovery_v3 "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
2829 resource_v3 "github.com/envoyproxy/go-control-plane/pkg/resource/v3"
2930 "google.golang.org/grpc"
3031 "google.golang.org/protobuf/types/known/anypb"
32+ "istio.io/istio/pkg/channels"
3133
3234 "kmesh.net/kmesh/pkg/controller/xdstest"
3335)
@@ -43,7 +45,7 @@ func TestAdsStreamAdsStreamCreateAndSend(t *testing.T) {
4345 defer client .Cleanup ()
4446
4547 adsStream := Controller {
46- Stream : client .AdsClient ,
48+ con : & connection { Stream : client .AdsClient , stopCh : make ( chan struct {})} ,
4749 Processor : nil ,
4850 }
4951
@@ -62,7 +64,7 @@ func TestAdsStreamAdsStreamCreateAndSend(t *testing.T) {
6264 func (_ discoveryv3.AggregatedDiscoveryServiceClient , ctx context.Context , opts ... grpc.CallOption ) (discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient , error ) {
6365 return client .AdsClient , nil
6466 })
65- patches2 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Send" ,
67+ patches2 .ApplyMethod (reflect .TypeOf (adsStream .con . Stream ), "Send" ,
6668 func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient , req * discoveryv3.DiscoveryRequest ) error {
6769 return errors .New ("timeout" )
6870 })
@@ -116,7 +118,7 @@ func TestHandleAdsStream(t *testing.T) {
116118 defer fakeClient .Cleanup ()
117119
118120 adsStream := NewController ()
119- adsStream .Stream = fakeClient .AdsClient
121+ adsStream .con = & connection { Stream : fakeClient .AdsClient , requestsChan : channels . NewUnbounded [ * service_discovery_v3. DiscoveryRequest ](), stopCh : make ( chan struct {})}
120122
121123 patches1 := gomonkey .NewPatches ()
122124 patches2 := gomonkey .NewPatches ()
@@ -129,7 +131,7 @@ func TestHandleAdsStream(t *testing.T) {
129131 {
130132 name : "test1: stream Revc failed, should return error" ,
131133 beforeFunc : func () {
132- patches1 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Recv" ,
134+ patches1 .ApplyMethod (reflect .TypeOf (adsStream .con . Stream ), "Recv" ,
133135 func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient ) (* discoveryv3.DiscoveryResponse , error ) {
134136 return nil , errors .New ("failed to recv message" )
135137 })
@@ -140,9 +142,9 @@ func TestHandleAdsStream(t *testing.T) {
140142 wantErr : true ,
141143 },
142144 {
143- name : "test2: stream Send failed , should return error " ,
145+ name : "test2: handle success , should return nil " ,
144146 beforeFunc : func () {
145- patches1 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Recv" ,
147+ patches1 .ApplyMethod (reflect .TypeOf (adsStream .con . Stream ), "Recv" ,
146148 func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient ) (* discoveryv3.DiscoveryResponse , error ) {
147149 // create resource of rsq
148150 cluster := & config_cluster_v3.Cluster {
@@ -156,38 +158,6 @@ func TestHandleAdsStream(t *testing.T) {
156158 },
157159 }, nil
158160 })
159- patches2 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Send" ,
160- func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient ) error {
161- return errors .New ("failed to send message" )
162- })
163- },
164- afterFunc : func () {
165- patches1 .Reset ()
166- patches2 .Reset ()
167- },
168- wantErr : true ,
169- },
170- {
171- name : "test3: handle success, should return nil" ,
172- beforeFunc : func () {
173- patches1 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Recv" ,
174- func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient ) (* discoveryv3.DiscoveryResponse , error ) {
175- // create resource of rsq
176- cluster := & config_cluster_v3.Cluster {
177- Name : "ut-cluster" ,
178- }
179- anyCluster , _ := anypb .New (cluster )
180- return & discoveryv3.DiscoveryResponse {
181- TypeUrl : resource_v3 .ClusterType ,
182- Resources : []* anypb.Any {
183- anyCluster ,
184- },
185- }, nil
186- })
187- patches2 .ApplyMethod (reflect .TypeOf (adsStream .Stream ), "Send" ,
188- func (_ discoveryv3.AggregatedDiscoveryService_StreamAggregatedResourcesClient ) error {
189- return nil
190- })
191161 },
192162 afterFunc : func () {
193163 patches1 .Reset ()
0 commit comments