@@ -242,6 +242,7 @@ func TestGraphsyncRoundTripRequestBudgetRequestor(t *testing.T) {
242
242
drain (requestor )
243
243
drain (responder )
244
244
wasCancelled := assertCancelOrComplete (ctx , t )
245
+
245
246
tracing := collectTracing (t )
246
247
traceStrings := tracing .TracesToStrings ()
247
248
require .Contains (t , traceStrings , "response(0)->executeTask(0)" )
@@ -277,6 +278,7 @@ func TestGraphsyncRoundTripRequestBudgetResponder(t *testing.T) {
277
278
278
279
// initialize graphsync on second node to response to requests
279
280
responder := td .GraphSyncHost2 (MaxLinksPerIncomingRequests (linksToTraverse ))
281
+ assertComplete := assertCompletionFunction (responder , 1 )
280
282
281
283
progressChan , errChan := requestor .Request (ctx , td .host2 .ID (), blockChain .TipLink , blockChain .Selector (), td .extension )
282
284
@@ -287,6 +289,7 @@ func TestGraphsyncRoundTripRequestBudgetResponder(t *testing.T) {
287
289
288
290
drain (requestor )
289
291
drain (responder )
292
+ assertComplete (ctx , t )
290
293
291
294
tracing := collectTracing (t )
292
295
require .ElementsMatch (t , []string {
@@ -318,6 +321,7 @@ func TestGraphsyncRoundTrip(t *testing.T) {
318
321
319
322
// initialize graphsync on second node to response to requests
320
323
responder := td .GraphSyncHost2 ()
324
+ assertComplete := assertCompletionFunction (responder , 1 )
321
325
322
326
var receivedResponseData []byte
323
327
var receivedRequestData []byte
@@ -364,6 +368,7 @@ func TestGraphsyncRoundTrip(t *testing.T) {
364
368
365
369
drain (requestor )
366
370
drain (responder )
371
+ assertComplete (ctx , t )
367
372
368
373
tracing := collectTracing (t )
369
374
require .ElementsMatch (t , []string {
@@ -400,6 +405,7 @@ func TestGraphsyncRoundTripPartial(t *testing.T) {
400
405
401
406
// initialize graphsync on second node to response to requests
402
407
responder := td .GraphSyncHost2 ()
408
+ assertComplete := assertCompletionFunction (responder , 1 )
403
409
404
410
finalResponseStatusChan := make (chan graphsync.ResponseStatusCode , 1 )
405
411
responder .RegisterCompletedResponseListener (func (p peer.ID , request graphsync.RequestData , status graphsync.ResponseStatusCode ) {
@@ -431,6 +437,7 @@ func TestGraphsyncRoundTripPartial(t *testing.T) {
431
437
432
438
drain (requestor )
433
439
drain (responder )
440
+ assertComplete (ctx , t )
434
441
435
442
tracing := collectTracing (t )
436
443
require .ElementsMatch (t , []string {
@@ -472,6 +479,7 @@ func TestGraphsyncRoundTripIgnoreCids(t *testing.T) {
472
479
473
480
// initialize graphsync on second node to response to requests
474
481
responder := td .GraphSyncHost2 ()
482
+ assertComplete := assertCompletionFunction (responder , 1 )
475
483
476
484
totalSent := 0
477
485
totalSentOnWire := 0
@@ -493,6 +501,7 @@ func TestGraphsyncRoundTripIgnoreCids(t *testing.T) {
493
501
494
502
drain (requestor )
495
503
drain (responder )
504
+ assertComplete (ctx , t )
496
505
497
506
tracing := collectTracing (t )
498
507
require .ElementsMatch (t , []string {
@@ -558,6 +567,7 @@ func TestGraphsyncRoundTripIgnoreNBlocks(t *testing.T) {
558
567
drain (requestor )
559
568
drain (responder )
560
569
assertComplete (ctx , t )
570
+
561
571
tracing := collectTracing (t )
562
572
require .ElementsMatch (t , []string {
563
573
"response(0)->executeTask(0)" ,
@@ -641,6 +651,7 @@ func TestPauseResume(t *testing.T) {
641
651
drain (requestor )
642
652
drain (responder )
643
653
assertOneRequestCompletes (ctx , t )
654
+
644
655
tracing := collectTracing (t )
645
656
traceStrings := tracing .TracesToStrings ()
646
657
require .Contains (t , traceStrings , "response(0)->executeTask(0)" )
@@ -713,6 +724,7 @@ func TestPauseResumeRequest(t *testing.T) {
713
724
// should get max 1 cancel
714
725
require .False (t , assertCancelOrComplete (ctx , t ))
715
726
}
727
+
716
728
tracing := collectTracing (t )
717
729
traceStrings := tracing .TracesToStrings ()
718
730
require .Contains (t , traceStrings , "response(0)->executeTask(0)" )
@@ -1049,7 +1061,7 @@ func TestGraphsyncRoundTripAlternatePersistenceAndNodes(t *testing.T) {
1049
1061
1050
1062
// initialize graphsync on second node to response to requests
1051
1063
responder := td .GraphSyncHost2 ()
1052
- assertComplete := assertCompletionFunction (responder , 2 )
1064
+ assertCancelOrComplete := assertCancelOrCompleteFunction (responder , 1 )
1053
1065
1054
1066
// alternate storing location for responder
1055
1067
altStore1 := make (map [ipld.Link ][]byte )
@@ -1104,21 +1116,21 @@ func TestGraphsyncRoundTripAlternatePersistenceAndNodes(t *testing.T) {
1104
1116
1105
1117
drain (requestor )
1106
1118
drain (responder )
1107
- assertComplete (ctx , t )
1108
- assertComplete (ctx , t )
1119
+ wasCancelled := assertCancelOrComplete (ctx , t )
1109
1120
1110
1121
tracing := collectTracing (t )
1111
- // two complete request traces expected
1112
- require .ElementsMatch (t , []string {
1113
- "response(0)->executeTask(0)" ,
1114
- "response(1)->executeTask(0)" ,
1115
- "request(0)->newRequest(0)" ,
1116
- "request(0)->executeTask(0)" ,
1117
- "request(0)->terminateRequest(0)" ,
1118
- "request(1)->newRequest(0)" ,
1119
- "request(1)->executeTask(0)" ,
1120
- "request(1)->terminateRequest(0)" ,
1121
- }, tracing .TracesToStrings ())
1122
+ traceStrings := tracing .TracesToStrings ()
1123
+ require .Contains (t , traceStrings , "response(0)->executeTask(0)" )
1124
+ // may or may not contain a second response trace: "response(1)->executeTask(0)""
1125
+ if wasCancelled {
1126
+ require .Contains (t , traceStrings , "response(0)->abortRequest(0)" )
1127
+ }
1128
+ require .Contains (t , traceStrings , "request(0)->newRequest(0)" )
1129
+ require .Contains (t , traceStrings , "request(0)->executeTask(0)" )
1130
+ require .Contains (t , traceStrings , "request(0)->terminateRequest(0)" )
1131
+ require .Contains (t , traceStrings , "request(1)->newRequest(0)" )
1132
+ require .Contains (t , traceStrings , "request(1)->executeTask(0)" )
1133
+ require .Contains (t , traceStrings , "request(1)->terminateRequest(0)" )
1122
1134
// TODO(rvagg): this is randomly either a SkipMe or a ipldutil.ContextCancelError; confirm this is sane
1123
1135
// tracing.SingleExceptionEvent(t, "request(0)->newRequest(0)","request(0)->executeTask(0)", "SkipMe", traversal.SkipMe{}.Error(), true)
1124
1136
}
@@ -1192,20 +1204,18 @@ func TestGraphsyncRoundTripMultipleAlternatePersistence(t *testing.T) {
1192
1204
drain (requestor )
1193
1205
drain (responder )
1194
1206
assertComplete (ctx , t )
1195
- assertComplete (ctx , t )
1196
1207
1197
1208
tracing := collectTracing (t )
1198
1209
// two complete request traces expected
1199
- require .ElementsMatch (t , []string {
1200
- "response(0)->executeTask(0)" ,
1201
- "response(1)->executeTask(0)" ,
1202
- "request(0)->newRequest(0)" ,
1203
- "request(0)->executeTask(0)" ,
1204
- "request(0)->terminateRequest(0)" ,
1205
- "request(1)->newRequest(0)" ,
1206
- "request(1)->executeTask(0)" ,
1207
- "request(1)->terminateRequest(0)" ,
1208
- }, tracing .TracesToStrings ())
1210
+ traceStrings := tracing .TracesToStrings ()
1211
+ require .Contains (t , traceStrings , "response(0)->executeTask(0)" )
1212
+ // may or may not contain a second response "response(1)->executeTask(0)"
1213
+ require .Contains (t , traceStrings , "request(0)->newRequest(0)" )
1214
+ require .Contains (t , traceStrings , "request(0)->executeTask(0)" )
1215
+ require .Contains (t , traceStrings , "request(0)->terminateRequest(0)" )
1216
+ require .Contains (t , traceStrings , "request(1)->newRequest(0)" )
1217
+ require .Contains (t , traceStrings , "request(1)->executeTask(0)" )
1218
+ require .Contains (t , traceStrings , "request(1)->terminateRequest(0)" )
1209
1219
}
1210
1220
1211
1221
// TestRoundTripLargeBlocksSlowNetwork test verifies graphsync continues to work
@@ -1330,6 +1340,7 @@ func TestUnixFSFetch(t *testing.T) {
1330
1340
td := newGsTestData (ctx , t )
1331
1341
requestor := New (ctx , td .gsnet1 , persistence1 )
1332
1342
responder := New (ctx , td .gsnet2 , persistence2 )
1343
+ assertComplete := assertCompletionFunction (responder , 1 )
1333
1344
extensionName := graphsync .ExtensionName ("Free for all" )
1334
1345
responder .RegisterIncomingRequestHook (func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.IncomingRequestHookActions ) {
1335
1346
hookActions .ValidateRequest ()
@@ -1381,6 +1392,7 @@ func TestUnixFSFetch(t *testing.T) {
1381
1392
1382
1393
drain (requestor )
1383
1394
drain (responder )
1395
+ assertComplete (ctx , t )
1384
1396
1385
1397
tracing := collectTracing (t )
1386
1398
require .ElementsMatch (t , []string {
@@ -1409,6 +1421,7 @@ func TestGraphsyncBlockListeners(t *testing.T) {
1409
1421
1410
1422
// initialize graphsync on second node to response to requests
1411
1423
responder := td .GraphSyncHost2 ()
1424
+ assertComplete := assertCompletionFunction (responder , 1 )
1412
1425
1413
1426
// register hooks to count blocks in various stages
1414
1427
blocksSent := 0
@@ -1474,6 +1487,7 @@ func TestGraphsyncBlockListeners(t *testing.T) {
1474
1487
1475
1488
drain (requestor )
1476
1489
drain (responder )
1490
+ assertComplete (ctx , t )
1477
1491
1478
1492
tracing := collectTracing (t )
1479
1493
require .ElementsMatch (t , []string {
@@ -1505,7 +1519,6 @@ type gsTestData struct {
1505
1519
func drain (gs graphsync.GraphExchange ) {
1506
1520
gs .(* GraphSync ).requestQueue .(* taskqueue.WorkerTaskQueue ).WaitForNoActiveTasks ()
1507
1521
gs .(* GraphSync ).responseQueue .(* taskqueue.WorkerTaskQueue ).WaitForNoActiveTasks ()
1508
- gs .(* GraphSync ).responseManager .Synchronize ()
1509
1522
}
1510
1523
1511
1524
func assertCompletionFunction (gs graphsync.GraphExchange , completedRequestCount int ) func (context.Context , * testing.T ) {
0 commit comments