Skip to content

Commit b9149f6

Browse files
committed
Add BlobsByRange test
1 parent cbc4306 commit b9149f6

File tree

1 file changed

+98
-6
lines changed
  • beacon_node/network/src/network_beacon_processor

1 file changed

+98
-6
lines changed

beacon_node/network/src/network_beacon_processor/tests.rs

Lines changed: 98 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -417,15 +417,12 @@ impl TestRig {
417417
}
418418
}
419419

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) {
421421
self.network_beacon_processor
422422
.send_blobs_by_range_request(
423423
PeerId::random(),
424424
InboundRequestId::new_unchecked(42, 24),
425-
BlobsByRangeRequest {
426-
start_slot: 0,
427-
count,
428-
},
425+
BlobsByRangeRequest { start_slot, count },
429426
)
430427
.unwrap();
431428
}
@@ -1325,8 +1322,9 @@ async fn test_blobs_by_range() {
13251322
return;
13261323
};
13271324
let mut rig = TestRig::new(64).await;
1325+
let start_slot = 0;
13281326
let slot_count = 32;
1329-
rig.enqueue_blobs_by_range_request(slot_count);
1327+
rig.enqueue_blobs_by_range_request(start_slot, slot_count);
13301328

13311329
let mut blob_count = 0;
13321330
for slot in 0..slot_count {
@@ -1362,3 +1360,97 @@ async fn test_blobs_by_range() {
13621360
}
13631361
assert_eq!(blob_count, actual_count);
13641362
}
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

Comments
 (0)