@@ -417,15 +417,12 @@ impl TestRig {
417
417
}
418
418
}
419
419
420
- pub fn enqueue_blobs_by_range_request ( & self , count : u64 ) {
420
+ pub fn enqueue_blobs_by_range_request ( & self , start_slot : u64 , count : u64 ) {
421
421
self . network_beacon_processor
422
422
. send_blobs_by_range_request (
423
423
PeerId :: random ( ) ,
424
424
InboundRequestId :: new_unchecked ( 42 , 24 ) ,
425
- BlobsByRangeRequest {
426
- start_slot : 0 ,
427
- count,
428
- } ,
425
+ BlobsByRangeRequest { start_slot, count } ,
429
426
)
430
427
. unwrap ( ) ;
431
428
}
@@ -1325,8 +1322,9 @@ async fn test_blobs_by_range() {
1325
1322
return ;
1326
1323
} ;
1327
1324
let mut rig = TestRig :: new ( 64 ) . await ;
1325
+ let start_slot = 0 ;
1328
1326
let slot_count = 32 ;
1329
- rig. enqueue_blobs_by_range_request ( slot_count) ;
1327
+ rig. enqueue_blobs_by_range_request ( start_slot , slot_count) ;
1330
1328
1331
1329
let mut blob_count = 0 ;
1332
1330
for slot in 0 ..slot_count {
@@ -1362,3 +1360,97 @@ async fn test_blobs_by_range() {
1362
1360
}
1363
1361
assert_eq ! ( blob_count, actual_count) ;
1364
1362
}
1363
+
1364
+ #[ tokio:: test]
1365
+ async fn test_blobs_by_range_post_fulu_should_returns_empty ( ) {
1366
+ // Only test for Fulu fork
1367
+ if test_spec :: < E > ( ) . fulu_fork_epoch . is_none ( ) {
1368
+ return ;
1369
+ } ;
1370
+ let mut rig = TestRig :: new ( 64 ) . await ;
1371
+ let start_slot = 0 ;
1372
+ let slot_count = 32 ;
1373
+ rig. enqueue_blobs_by_range_request ( start_slot, slot_count) ;
1374
+
1375
+ let mut actual_count = 0 ;
1376
+
1377
+ while let Some ( next) = rig. network_rx . recv ( ) . await {
1378
+ if let NetworkMessage :: SendResponse {
1379
+ peer_id : _,
1380
+ response : Response :: BlobsByRange ( blob) ,
1381
+ inbound_request_id : _,
1382
+ } = next
1383
+ {
1384
+ if blob. is_some ( ) {
1385
+ actual_count += 1 ;
1386
+ } else {
1387
+ break ;
1388
+ }
1389
+ } else {
1390
+ panic ! ( "unexpected message {:?}" , next) ;
1391
+ }
1392
+ }
1393
+ // Post-Fulu should return 0 blobs
1394
+ assert_eq ! ( 0 , actual_count) ;
1395
+ }
1396
+
1397
+ #[ tokio:: test]
1398
+ async fn test_blobs_by_range_spans_fulu_fork ( ) {
1399
+ // Only test for Electra & Fulu fork transition
1400
+ if test_spec :: < E > ( ) . electra_fork_epoch . is_none ( ) {
1401
+ return ;
1402
+ } ;
1403
+ let mut spec = test_spec :: < E > ( ) ;
1404
+ spec. fulu_fork_epoch = Some ( Epoch :: new ( 1 ) ) ;
1405
+
1406
+ let mut rig = TestRig :: new_parametric ( 64 , BeaconProcessorConfig :: default ( ) , spec) . await ;
1407
+
1408
+ let start_slot = 16 ;
1409
+ // This will span from epoch 0 (Electra) to epoch 1 (Fulu)
1410
+ let slot_count = 32 ;
1411
+
1412
+ println ! ( "Deneb fork epoch is: {:?}" , rig. chain. spec. deneb_fork_epoch) ;
1413
+ println ! (
1414
+ "Electra fork epoch is: {:?}" ,
1415
+ rig. chain. spec. electra_fork_epoch
1416
+ ) ;
1417
+ println ! ( "Fulu fork epoch is: {:?}" , rig. chain. spec. fulu_fork_epoch) ;
1418
+
1419
+ rig. enqueue_blobs_by_range_request ( start_slot, slot_count) ;
1420
+
1421
+ let mut blob_count = 0 ;
1422
+ for slot in start_slot..slot_count {
1423
+ let root = rig
1424
+ . chain
1425
+ . block_root_at_slot ( Slot :: new ( slot) , WhenSlotSkipped :: None )
1426
+ . unwrap ( ) ;
1427
+ blob_count += root
1428
+ . map ( |root| {
1429
+ rig. chain
1430
+ . get_blobs ( & root)
1431
+ . map ( |list| list. len ( ) )
1432
+ . unwrap_or ( 0 )
1433
+ } )
1434
+ . unwrap_or ( 0 ) ;
1435
+ }
1436
+
1437
+ let mut actual_count = 0 ;
1438
+
1439
+ while let Some ( next) = rig. network_rx . recv ( ) . await {
1440
+ if let NetworkMessage :: SendResponse {
1441
+ peer_id : _,
1442
+ response : Response :: BlobsByRange ( blob) ,
1443
+ inbound_request_id : _,
1444
+ } = next
1445
+ {
1446
+ if blob. is_some ( ) {
1447
+ actual_count += 1 ;
1448
+ } else {
1449
+ break ;
1450
+ }
1451
+ } else {
1452
+ panic ! ( "unexpected message {:?}" , next) ;
1453
+ }
1454
+ }
1455
+ assert_eq ! ( blob_count, actual_count) ;
1456
+ }
0 commit comments