@@ -289,18 +289,26 @@ func TestAllowlist(t *testing.T) {
289289 check (NewSession (ctx , blockservice ).GetBlock )
290290}
291291
292+ type wrappedBlockservice struct {
293+ BlockService
294+ }
295+
292296type mockProvider []cid.Cid
293297
294298func (p * mockProvider ) Provide (c cid.Cid ) error {
295299 * p = append (* p , c )
296300 return nil
297301}
302+
298303func TestProviding (t * testing.T ) {
299304 t .Parallel ()
300305 a := assert .New (t )
301306
307+ ctx , cancel := context .WithCancel (context .Background ())
308+ defer cancel ()
309+
302310 bgen := butil .NewBlockGenerator ()
303- blocks := bgen .Blocks (9 )
311+ blocks := bgen .Blocks (12 )
304312
305313 exchange := blockstore .NewBlockstore (ds .NewMapDatastore ())
306314
@@ -309,51 +317,75 @@ func TestProviding(t *testing.T) {
309317 var added []cid.Cid
310318
311319 // Adding one block provide it.
312- a .NoError (blockservice .AddBlock (context . Background () , blocks [0 ]))
320+ a .NoError (blockservice .AddBlock (ctx , blocks [0 ]))
313321 added = append (added , blocks [0 ].Cid ())
314322 blocks = blocks [1 :]
315323
316324 // Adding multiple blocks provide them.
317- a .NoError (blockservice .AddBlocks (context . Background () , blocks [0 :2 ]))
325+ a .NoError (blockservice .AddBlocks (ctx , blocks [0 :2 ]))
318326 added = append (added , blocks [0 ].Cid (), blocks [1 ].Cid ())
319327 blocks = blocks [2 :]
320328
321329 // 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 ())
324332 a .NoError (err )
325333 added = append (added , blocks [0 ].Cid ())
326334 blocks = blocks [1 :]
327335
328336 // Downloading multiple blocks provide them.
329- a .NoError (exchange .PutMany (context . Background () , blocks [0 :2 ]))
337+ a .NoError (exchange .PutMany (ctx , blocks [0 :2 ]))
330338 cids := []cid.Cid {blocks [0 ].Cid (), blocks [1 ].Cid ()}
331339 var got []cid.Cid
332- for b := range blockservice .GetBlocks (context . Background () , cids ) {
340+ for b := range blockservice .GetBlocks (ctx , cids ) {
333341 got = append (got , b .Cid ())
334342 }
335343 added = append (added , cids ... )
336344 a .ElementsMatch (cids , got )
337345 blocks = blocks [2 :]
338346
339- session := NewSession (context . Background () , blockservice )
347+ session := NewSession (ctx , blockservice )
340348
341349 // 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 ())
344352 a .NoError (err )
345353 added = append (added , blocks [0 ].Cid ())
346354 blocks = blocks [1 :]
347355
348356 // 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 ]))
350379 cids = []cid.Cid {blocks [0 ].Cid (), blocks [1 ].Cid ()}
351380 got = nil
352- for b := range session .GetBlocks (context . Background () , cids ) {
381+ for b := range session .GetBlocks (ctx , cids ) {
353382 got = append (got , b .Cid ())
354383 }
355384 a .ElementsMatch (cids , got )
356385 added = append (added , cids ... )
386+ blocks = blocks [2 :]
387+
388+ a .Empty (blocks )
357389
358390 a .ElementsMatch (added , []cid.Cid (prov ))
359391}
0 commit comments