@@ -289,18 +289,26 @@ func TestAllowlist(t *testing.T) {
289
289
check (NewSession (ctx , blockservice ).GetBlock )
290
290
}
291
291
292
+ type wrappedBlockservice struct {
293
+ BlockService
294
+ }
295
+
292
296
type mockProvider []cid.Cid
293
297
294
298
func (p * mockProvider ) Provide (c cid.Cid ) error {
295
299
* p = append (* p , c )
296
300
return nil
297
301
}
302
+
298
303
func TestProviding (t * testing.T ) {
299
304
t .Parallel ()
300
305
a := assert .New (t )
301
306
307
+ ctx , cancel := context .WithCancel (context .Background ())
308
+ defer cancel ()
309
+
302
310
bgen := butil .NewBlockGenerator ()
303
- blocks := bgen .Blocks (9 )
311
+ blocks := bgen .Blocks (12 )
304
312
305
313
exchange := blockstore .NewBlockstore (ds .NewMapDatastore ())
306
314
@@ -309,51 +317,75 @@ func TestProviding(t *testing.T) {
309
317
var added []cid.Cid
310
318
311
319
// Adding one block provide it.
312
- a .NoError (blockservice .AddBlock (context . Background () , blocks [0 ]))
320
+ a .NoError (blockservice .AddBlock (ctx , blocks [0 ]))
313
321
added = append (added , blocks [0 ].Cid ())
314
322
blocks = blocks [1 :]
315
323
316
324
// Adding multiple blocks provide them.
317
- a .NoError (blockservice .AddBlocks (context . Background () , blocks [0 :2 ]))
325
+ a .NoError (blockservice .AddBlocks (ctx , blocks [0 :2 ]))
318
326
added = append (added , blocks [0 ].Cid (), blocks [1 ].Cid ())
319
327
blocks = blocks [2 :]
320
328
321
329
// Downloading one block provide it.
322
- a .NoError (exchange .Put (context . Background () , blocks [0 ]))
323
- _ , err := blockservice .GetBlock (context . Background () , blocks [0 ].Cid ())
330
+ a .NoError (exchange .Put (ctx , blocks [0 ]))
331
+ _ , err := blockservice .GetBlock (ctx , blocks [0 ].Cid ())
324
332
a .NoError (err )
325
333
added = append (added , blocks [0 ].Cid ())
326
334
blocks = blocks [1 :]
327
335
328
336
// Downloading multiple blocks provide them.
329
- a .NoError (exchange .PutMany (context . Background () , blocks [0 :2 ]))
337
+ a .NoError (exchange .PutMany (ctx , blocks [0 :2 ]))
330
338
cids := []cid.Cid {blocks [0 ].Cid (), blocks [1 ].Cid ()}
331
339
var got []cid.Cid
332
- for b := range blockservice .GetBlocks (context . Background () , cids ) {
340
+ for b := range blockservice .GetBlocks (ctx , cids ) {
333
341
got = append (got , b .Cid ())
334
342
}
335
343
added = append (added , cids ... )
336
344
a .ElementsMatch (cids , got )
337
345
blocks = blocks [2 :]
338
346
339
- session := NewSession (context . Background () , blockservice )
347
+ session := NewSession (ctx , blockservice )
340
348
341
349
// Downloading one block over a session provide it.
342
- a .NoError (exchange .Put (context . Background () , blocks [0 ]))
343
- _ , err = session .GetBlock (context . Background () , blocks [0 ].Cid ())
350
+ a .NoError (exchange .Put (ctx , blocks [0 ]))
351
+ _ , err = session .GetBlock (ctx , blocks [0 ].Cid ())
344
352
a .NoError (err )
345
353
added = append (added , blocks [0 ].Cid ())
346
354
blocks = blocks [1 :]
347
355
348
356
// Downloading multiple blocks over a session provide them.
349
- a .NoError (exchange .PutMany (context .Background (), blocks [0 :2 ]))
357
+ a .NoError (exchange .PutMany (ctx , blocks [0 :2 ]))
358
+ cids = []cid.Cid {blocks [0 ].Cid (), blocks [1 ].Cid ()}
359
+ got = nil
360
+ for b := range session .GetBlocks (ctx , cids ) {
361
+ got = append (got , b .Cid ())
362
+ }
363
+ a .ElementsMatch (cids , got )
364
+ added = append (added , cids ... )
365
+ blocks = blocks [2 :]
366
+
367
+ // Test wrapping the blockservice like nopfs does.
368
+ session = NewSession (ctx , wrappedBlockservice {blockservice })
369
+
370
+ // Downloading one block over a wrapped blockservice session provide it.
371
+ a .NoError (exchange .Put (ctx , blocks [0 ]))
372
+ _ , err = session .GetBlock (ctx , blocks [0 ].Cid ())
373
+ a .NoError (err )
374
+ added = append (added , blocks [0 ].Cid ())
375
+ blocks = blocks [1 :]
376
+
377
+ // Downloading multiple blocks over a wrapped blockservice session provide them.
378
+ a .NoError (exchange .PutMany (ctx , blocks [0 :2 ]))
350
379
cids = []cid.Cid {blocks [0 ].Cid (), blocks [1 ].Cid ()}
351
380
got = nil
352
- for b := range session .GetBlocks (context . Background () , cids ) {
381
+ for b := range session .GetBlocks (ctx , cids ) {
353
382
got = append (got , b .Cid ())
354
383
}
355
384
a .ElementsMatch (cids , got )
356
385
added = append (added , cids ... )
386
+ blocks = blocks [2 :]
387
+
388
+ a .Empty (blocks )
357
389
358
390
a .ElementsMatch (added , []cid.Cid (prov ))
359
391
}
0 commit comments