@@ -125,31 +125,27 @@ func startXDS(t *testing.T, xdsname string, v2c *v2Client, reqChan *testutils.Ch
125
125
//
126
126
// It also waits and checks that the ack request contains the given version, and
127
127
// the generated nonce.
128
- //
129
- // TODO: make this and other helper function either consistently return error,
130
- // and fatal() in the test code, or all call t.Fatal(), and mark them as
131
- // helper().
132
- func sendGoodResp (t * testing.T , xdsname string , fakeServer * fakeserver.Server , version int , goodResp * xdspb.DiscoveryResponse , wantReq * xdspb.DiscoveryRequest , callbackCh * testutils.Channel ) (nonce string ) {
133
- nonce = sendXDSRespWithVersion (fakeServer .XDSResponseChan , goodResp , version )
128
+ func sendGoodResp (t * testing.T , xdsname string , fakeServer * fakeserver.Server , version int , goodResp * xdspb.DiscoveryResponse , wantReq * xdspb.DiscoveryRequest , callbackCh * testutils.Channel ) (string , error ) {
129
+ nonce := sendXDSRespWithVersion (fakeServer .XDSResponseChan , goodResp , version )
134
130
t .Logf ("Good %s response pushed to fakeServer..." , xdsname )
135
131
136
132
if err := compareXDSRequest (fakeServer .XDSRequestChan , wantReq , strconv .Itoa (version ), nonce ); err != nil {
137
- t . Fatalf ( "Failed to receive %s request: %v" , xdsname , err )
133
+ return "" , fmt . Errorf ( "failed to receive %s request: %v" , xdsname , err )
138
134
}
139
135
t .Logf ("Good %s response acked" , xdsname )
140
136
141
137
if _ , err := callbackCh .Receive (); err != nil {
142
- t . Fatalf ( "Timeout when expecting %s update" , xdsname )
138
+ return "" , fmt . Errorf ( "timeout when expecting %s update" , xdsname )
143
139
}
144
140
t .Logf ("Good %s response callback executed" , xdsname )
145
- return
141
+ return nonce , nil
146
142
}
147
143
148
144
// sendBadResp sends a bad response with the given version. This response will
149
145
// be nacked, so we expect a request with the previous version (version-1).
150
146
//
151
147
// But the nonce in request should be the new nonce.
152
- func sendBadResp (t * testing.T , xdsname string , fakeServer * fakeserver.Server , version int , wantReq * xdspb.DiscoveryRequest ) {
148
+ func sendBadResp (t * testing.T , xdsname string , fakeServer * fakeserver.Server , version int , wantReq * xdspb.DiscoveryRequest ) error {
153
149
var typeURL string
154
150
switch xdsname {
155
151
case "LDS" :
@@ -167,9 +163,10 @@ func sendBadResp(t *testing.T, xdsname string, fakeServer *fakeserver.Server, ve
167
163
}, version )
168
164
t .Logf ("Bad %s response pushed to fakeServer..." , xdsname )
169
165
if err := compareXDSRequest (fakeServer .XDSRequestChan , wantReq , strconv .Itoa (version - 1 ), nonce ); err != nil {
170
- t . Fatalf ( "Failed to receive %s request: %v" , xdsname , err )
166
+ return fmt . Errorf ( "failed to receive %s request: %v" , xdsname , err )
171
167
}
172
168
t .Logf ("Bad %s response nacked" , xdsname )
169
+ return nil
173
170
}
174
171
175
172
// TestV2ClientAck verifies that valid responses are acked, and invalid ones
@@ -192,36 +189,60 @@ func (s) TestV2ClientAck(t *testing.T) {
192
189
193
190
// Start the watch, send a good response, and check for ack.
194
191
startXDS (t , "LDS" , v2c , fakeServer .XDSRequestChan , goodLDSRequest , "" , "" )
195
- sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS )
192
+ if _ , err := sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS ); err != nil {
193
+ t .Fatal (err )
194
+ }
196
195
versionLDS ++
197
196
startXDS (t , "RDS" , v2c , fakeServer .XDSRequestChan , goodRDSRequest , "" , "" )
198
- sendGoodResp (t , "RDS" , fakeServer , versionRDS , goodRDSResponse1 , goodRDSRequest , cbRDS )
197
+ if _ , err := sendGoodResp (t , "RDS" , fakeServer , versionRDS , goodRDSResponse1 , goodRDSRequest , cbRDS ); err != nil {
198
+ t .Fatal (err )
199
+ }
199
200
versionRDS ++
200
201
startXDS (t , "CDS" , v2c , fakeServer .XDSRequestChan , goodCDSRequest , "" , "" )
201
- sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
202
+ if _ , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS ); err != nil {
203
+ t .Fatal (err )
204
+ }
202
205
versionCDS ++
203
206
startXDS (t , "EDS" , v2c , fakeServer .XDSRequestChan , goodEDSRequest , "" , "" )
204
- sendGoodResp (t , "EDS" , fakeServer , versionEDS , goodEDSResponse1 , goodEDSRequest , cbEDS )
207
+ if _ , err := sendGoodResp (t , "EDS" , fakeServer , versionEDS , goodEDSResponse1 , goodEDSRequest , cbEDS ); err != nil {
208
+ t .Fatal (err )
209
+ }
205
210
versionEDS ++
206
211
207
212
// Send a bad response, and check for nack.
208
- sendBadResp (t , "LDS" , fakeServer , versionLDS , goodLDSRequest )
213
+ if err := sendBadResp (t , "LDS" , fakeServer , versionLDS , goodLDSRequest ); err != nil {
214
+ t .Fatal (err )
215
+ }
209
216
versionLDS ++
210
- sendBadResp (t , "RDS" , fakeServer , versionRDS , goodRDSRequest )
217
+ if err := sendBadResp (t , "RDS" , fakeServer , versionRDS , goodRDSRequest ); err != nil {
218
+ t .Fatal (err )
219
+ }
211
220
versionRDS ++
212
- sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest )
221
+ if err := sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest ); err != nil {
222
+ t .Fatal (err )
223
+ }
213
224
versionCDS ++
214
- sendBadResp (t , "EDS" , fakeServer , versionEDS , goodEDSRequest )
225
+ if err := sendBadResp (t , "EDS" , fakeServer , versionEDS , goodEDSRequest ); err != nil {
226
+ t .Fatal (err )
227
+ }
215
228
versionEDS ++
216
229
217
230
// send another good response, and check for ack, with the new version.
218
- sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS )
231
+ if _ , err := sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS ); err != nil {
232
+ t .Fatal (err )
233
+ }
219
234
versionLDS ++
220
- sendGoodResp (t , "RDS" , fakeServer , versionRDS , goodRDSResponse1 , goodRDSRequest , cbRDS )
235
+ if _ , err := sendGoodResp (t , "RDS" , fakeServer , versionRDS , goodRDSResponse1 , goodRDSRequest , cbRDS ); err != nil {
236
+ t .Fatal (err )
237
+ }
221
238
versionRDS ++
222
- sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
239
+ if _ , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS ); err != nil {
240
+ t .Fatal (err )
241
+ }
223
242
versionCDS ++
224
- sendGoodResp (t , "EDS" , fakeServer , versionEDS , goodEDSResponse1 , goodEDSRequest , cbEDS )
243
+ if _ , err := sendGoodResp (t , "EDS" , fakeServer , versionEDS , goodEDSResponse1 , goodEDSRequest , cbEDS ); err != nil {
244
+ t .Fatal (err )
245
+ }
225
246
versionEDS ++
226
247
}
227
248
@@ -270,8 +291,10 @@ func (s) TestV2ClientAckNackAfterNewWatch(t *testing.T) {
270
291
271
292
// Start the watch, send a good response, and check for ack.
272
293
startXDS (t , "LDS" , v2c , fakeServer .XDSRequestChan , goodLDSRequest , "" , "" )
273
- nonce := sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS )
274
-
294
+ nonce , err := sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS )
295
+ if err != nil {
296
+ t .Fatal (err )
297
+ }
275
298
// Start a new watch. The version in the new request should be the version
276
299
// from the previous response, thus versionLDS before ++.
277
300
startXDS (t , "LDS" , v2c , fakeServer .XDSRequestChan , goodLDSRequest , strconv .Itoa (versionLDS ), nonce )
@@ -291,7 +314,9 @@ func (s) TestV2ClientAckNackAfterNewWatch(t *testing.T) {
291
314
t .Logf ("Bad response nacked" )
292
315
versionLDS ++
293
316
294
- sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS )
317
+ if _ , err := sendGoodResp (t , "LDS" , fakeServer , versionLDS , goodLDSResponse1 , goodLDSRequest , cbLDS ); err != nil {
318
+ t .Fatal (err )
319
+ }
295
320
versionLDS ++
296
321
}
297
322
@@ -315,8 +340,10 @@ func (s) TestV2ClientAckNewWatchAfterCancel(t *testing.T) {
315
340
316
341
// Send a good CDS response, this function waits for the ACK with the right
317
342
// version.
318
- nonce := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
319
-
343
+ nonce , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
344
+ if err != nil {
345
+ t .Fatal (err )
346
+ }
320
347
// Cancel the CDS watch, and start a new one. The new watch should have the
321
348
// version from the response above.
322
349
v2c .removeWatch (cdsURL , goodClusterName1 )
@@ -334,11 +361,15 @@ func (s) TestV2ClientAckNewWatchAfterCancel(t *testing.T) {
334
361
versionCDS ++
335
362
336
363
// Send a bad response with the next version.
337
- sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest )
364
+ if err := sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest ); err != nil {
365
+ t .Fatal (err )
366
+ }
338
367
versionCDS ++
339
368
340
369
// send another good response, and check for ack, with the new version.
341
- sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
370
+ if _ , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS ); err != nil {
371
+ t .Fatal (err )
372
+ }
342
373
versionCDS ++
343
374
}
344
375
@@ -363,8 +394,10 @@ func (s) TestV2ClientAckCancelResponseRace(t *testing.T) {
363
394
t .Logf ("FakeServer received %s request..." , "CDS" )
364
395
365
396
// send a good response, and check for ack, with the new version.
366
- nonce := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
367
-
397
+ nonce , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
398
+ if err != nil {
399
+ t .Fatal (err )
400
+ }
368
401
// Cancel the watch before the next response is sent. This mimics the case
369
402
// watch is canceled while response is on wire.
370
403
v2c .removeWatch (cdsURL , goodClusterName1 )
@@ -401,10 +434,14 @@ func (s) TestV2ClientAckCancelResponseRace(t *testing.T) {
401
434
}
402
435
403
436
// Send a bad response with the next version.
404
- sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest )
437
+ if err := sendBadResp (t , "CDS" , fakeServer , versionCDS , goodCDSRequest ); err != nil {
438
+ t .Fatal (err )
439
+ }
405
440
versionCDS ++
406
441
407
442
// send another good response, and check for ack, with the new version.
408
- sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS )
443
+ if _ , err := sendGoodResp (t , "CDS" , fakeServer , versionCDS , goodCDSResponse1 , goodCDSRequest , cbCDS ); err != nil {
444
+ t .Fatal (err )
445
+ }
409
446
versionCDS ++
410
447
}
0 commit comments