Skip to content

Commit 29f40a4

Browse files
author
Zou Nengren
authored
make helper function return error (#3553)
1 parent 6a3c038 commit 29f40a4

File tree

1 file changed

+71
-34
lines changed

1 file changed

+71
-34
lines changed

xds/internal/client/v2client_ack_test.go

Lines changed: 71 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -125,31 +125,27 @@ func startXDS(t *testing.T, xdsname string, v2c *v2Client, reqChan *testutils.Ch
125125
//
126126
// It also waits and checks that the ack request contains the given version, and
127127
// 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)
134130
t.Logf("Good %s response pushed to fakeServer...", xdsname)
135131

136132
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)
138134
}
139135
t.Logf("Good %s response acked", xdsname)
140136

141137
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)
143139
}
144140
t.Logf("Good %s response callback executed", xdsname)
145-
return
141+
return nonce, nil
146142
}
147143

148144
// sendBadResp sends a bad response with the given version. This response will
149145
// be nacked, so we expect a request with the previous version (version-1).
150146
//
151147
// 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 {
153149
var typeURL string
154150
switch xdsname {
155151
case "LDS":
@@ -167,9 +163,10 @@ func sendBadResp(t *testing.T, xdsname string, fakeServer *fakeserver.Server, ve
167163
}, version)
168164
t.Logf("Bad %s response pushed to fakeServer...", xdsname)
169165
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)
171167
}
172168
t.Logf("Bad %s response nacked", xdsname)
169+
return nil
173170
}
174171

175172
// TestV2ClientAck verifies that valid responses are acked, and invalid ones
@@ -192,36 +189,60 @@ func (s) TestV2ClientAck(t *testing.T) {
192189

193190
// Start the watch, send a good response, and check for ack.
194191
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+
}
196195
versionLDS++
197196
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+
}
199200
versionRDS++
200201
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+
}
202205
versionCDS++
203206
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+
}
205210
versionEDS++
206211

207212
// 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+
}
209216
versionLDS++
210-
sendBadResp(t, "RDS", fakeServer, versionRDS, goodRDSRequest)
217+
if err := sendBadResp(t, "RDS", fakeServer, versionRDS, goodRDSRequest); err != nil {
218+
t.Fatal(err)
219+
}
211220
versionRDS++
212-
sendBadResp(t, "CDS", fakeServer, versionCDS, goodCDSRequest)
221+
if err := sendBadResp(t, "CDS", fakeServer, versionCDS, goodCDSRequest); err != nil {
222+
t.Fatal(err)
223+
}
213224
versionCDS++
214-
sendBadResp(t, "EDS", fakeServer, versionEDS, goodEDSRequest)
225+
if err := sendBadResp(t, "EDS", fakeServer, versionEDS, goodEDSRequest); err != nil {
226+
t.Fatal(err)
227+
}
215228
versionEDS++
216229

217230
// 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+
}
219234
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+
}
221238
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+
}
223242
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+
}
225246
versionEDS++
226247
}
227248

@@ -270,8 +291,10 @@ func (s) TestV2ClientAckNackAfterNewWatch(t *testing.T) {
270291

271292
// Start the watch, send a good response, and check for ack.
272293
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+
}
275298
// Start a new watch. The version in the new request should be the version
276299
// from the previous response, thus versionLDS before ++.
277300
startXDS(t, "LDS", v2c, fakeServer.XDSRequestChan, goodLDSRequest, strconv.Itoa(versionLDS), nonce)
@@ -291,7 +314,9 @@ func (s) TestV2ClientAckNackAfterNewWatch(t *testing.T) {
291314
t.Logf("Bad response nacked")
292315
versionLDS++
293316

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+
}
295320
versionLDS++
296321
}
297322

@@ -315,8 +340,10 @@ func (s) TestV2ClientAckNewWatchAfterCancel(t *testing.T) {
315340

316341
// Send a good CDS response, this function waits for the ACK with the right
317342
// 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+
}
320347
// Cancel the CDS watch, and start a new one. The new watch should have the
321348
// version from the response above.
322349
v2c.removeWatch(cdsURL, goodClusterName1)
@@ -334,11 +361,15 @@ func (s) TestV2ClientAckNewWatchAfterCancel(t *testing.T) {
334361
versionCDS++
335362

336363
// 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+
}
338367
versionCDS++
339368

340369
// 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+
}
342373
versionCDS++
343374
}
344375

@@ -363,8 +394,10 @@ func (s) TestV2ClientAckCancelResponseRace(t *testing.T) {
363394
t.Logf("FakeServer received %s request...", "CDS")
364395

365396
// 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+
}
368401
// Cancel the watch before the next response is sent. This mimics the case
369402
// watch is canceled while response is on wire.
370403
v2c.removeWatch(cdsURL, goodClusterName1)
@@ -401,10 +434,14 @@ func (s) TestV2ClientAckCancelResponseRace(t *testing.T) {
401434
}
402435

403436
// 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+
}
405440
versionCDS++
406441

407442
// 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+
}
409446
versionCDS++
410447
}

0 commit comments

Comments
 (0)