Skip to content

Commit 29991b7

Browse files
committed
Fix max size calculation; fix up test
1 parent cea839d commit 29991b7

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

beacon_node/lighthouse_network/tests/rpc_tests.rs

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ fn merge_block_small() -> BeaconBlock<E> {
2727
}
2828

2929
/// Merge block with length > MAX_RPC_SIZE.
30+
/// The max limit for a merge block is in the order of ~16GiB which wouldn't fit in memory.
31+
/// Hence, we generate a merge block just greater than `MAX_RPC_SIZE` to test rejection on the rpc layer.
3032
fn merge_block_large() -> BeaconBlock<E> {
3133
let mut block = BeaconBlockMerge::empty(&E::default_spec());
3234
let tx = VariableList::from(vec![0; 1024]);
@@ -141,7 +143,7 @@ fn test_blocks_by_range_chunked_rpc() {
141143
let log_level = Level::Debug;
142144
let enable_logging = false;
143145

144-
let messages_to_send = 20;
146+
let messages_to_send = 8;
145147

146148
let log = common::build_log(log_level, enable_logging);
147149

@@ -188,23 +190,23 @@ fn test_blocks_by_range_chunked_rpc() {
188190
debug!(log, "Sending RPC");
189191
sender.swarm.behaviour_mut().send_request(
190192
peer_id,
191-
RequestId::Sync(20),
193+
RequestId::Sync(8),
192194
rpc_request.clone(),
193195
);
194196
}
195197
Libp2pEvent::Behaviour(BehaviourEvent::ResponseReceived {
196198
peer_id: _,
197-
id: RequestId::Sync(20),
199+
id: RequestId::Sync(8),
198200
response,
199201
}) => {
200202
warn!(log, "Sender received a response");
201203
match response {
202204
Response::BlocksByRange(Some(_)) => {
203-
if messages_received < 5 {
205+
if messages_received < 2 {
204206
assert_eq!(response, rpc_response_base.clone());
205-
} else if messages_received < 10 {
207+
} else if messages_received < 4 {
206208
assert_eq!(response, rpc_response_altair.clone());
207-
} else if messages_received < 15 {
209+
} else if messages_received < 6 {
208210
assert_eq!(response, rpc_response_merge_small.clone());
209211
} else {
210212
assert_eq!(response, rpc_response_merge_large.clone());
@@ -241,11 +243,11 @@ fn test_blocks_by_range_chunked_rpc() {
241243
for i in 0..messages_to_send {
242244
// Send first half of responses as base blocks and
243245
// second half as altair blocks.
244-
let rpc_response = if i < 5 {
246+
let rpc_response = if i < 2 {
245247
rpc_response_base.clone()
246-
} else if i < 10 {
248+
} else if i < 4 {
247249
rpc_response_altair.clone()
248-
} else if i < 15 {
250+
} else if i < 6 {
249251
rpc_response_merge_small.clone()
250252
} else {
251253
rpc_response_merge_large.clone()
@@ -273,7 +275,7 @@ fn test_blocks_by_range_chunked_rpc() {
273275
_ = sender_future => {}
274276
_ = receiver_future => {}
275277
_ = sleep(Duration::from_secs(10)) => {
276-
if messages_received < 15 {
278+
if messages_received < 6 {
277279
panic!("Future timed out");
278280
}
279281
}
@@ -535,7 +537,7 @@ fn test_blocks_by_root_chunked_rpc() {
535537
let log_level = Level::Debug;
536538
let enable_logging = false;
537539

538-
let messages_to_send = 10;
540+
let messages_to_send = 6;
539541

540542
let log = common::build_log(log_level, enable_logging);
541543
let spec = E::default_spec();
@@ -554,10 +556,6 @@ fn test_blocks_by_root_chunked_rpc() {
554556
Hash256::from_low_u64_be(0),
555557
Hash256::from_low_u64_be(0),
556558
Hash256::from_low_u64_be(0),
557-
Hash256::from_low_u64_be(0),
558-
Hash256::from_low_u64_be(0),
559-
Hash256::from_low_u64_be(0),
560-
Hash256::from_low_u64_be(0),
561559
]),
562560
});
563561

@@ -570,6 +568,10 @@ fn test_blocks_by_root_chunked_rpc() {
570568
let signed_full_block = SignedBeaconBlock::from_block(full_block, Signature::empty());
571569
let rpc_response_altair = Response::BlocksByRoot(Some(Box::new(signed_full_block)));
572570

571+
let full_block = merge_block_small();
572+
let signed_full_block = SignedBeaconBlock::from_block(full_block, Signature::empty());
573+
let rpc_response_merge_small = Response::BlocksByRoot(Some(Box::new(signed_full_block)));
574+
573575
// keep count of the number of messages received
574576
let mut messages_received = 0;
575577
// build the sender future
@@ -581,20 +583,22 @@ fn test_blocks_by_root_chunked_rpc() {
581583
debug!(log, "Sending RPC");
582584
sender.swarm.behaviour_mut().send_request(
583585
peer_id,
584-
RequestId::Sync(10),
586+
RequestId::Sync(6),
585587
rpc_request.clone(),
586588
);
587589
}
588590
Libp2pEvent::Behaviour(BehaviourEvent::ResponseReceived {
589591
peer_id: _,
590-
id: RequestId::Sync(10),
592+
id: RequestId::Sync(6),
591593
response,
592594
}) => match response {
593595
Response::BlocksByRoot(Some(_)) => {
594-
if messages_received < 5 {
596+
if messages_received < 2 {
595597
assert_eq!(response, rpc_response_base.clone());
596-
} else {
598+
} else if messages_received < 4 {
597599
assert_eq!(response, rpc_response_altair.clone());
600+
} else {
601+
assert_eq!(response, rpc_response_merge_small.clone());
598602
}
599603
messages_received += 1;
600604
debug!(log, "Chunk received");
@@ -626,12 +630,13 @@ fn test_blocks_by_root_chunked_rpc() {
626630
debug!(log, "Receiver got request");
627631

628632
for i in 0..messages_to_send {
629-
// Send first half of responses as base blocks and
630-
// second half as altair blocks.
631-
let rpc_response = if i < 5 {
633+
// Send equal base, altair and merge blocks
634+
let rpc_response = if i < 2 {
632635
rpc_response_base.clone()
633-
} else {
636+
} else if i < 4 {
634637
rpc_response_altair.clone()
638+
} else {
639+
rpc_response_merge_small.clone()
635640
};
636641
receiver.swarm.behaviour_mut().send_successful_response(
637642
peer_id,
@@ -657,7 +662,7 @@ fn test_blocks_by_root_chunked_rpc() {
657662
_ = sender_future => {}
658663
_ = receiver_future => {}
659664
_ = sleep(Duration::from_secs(30)) => {
660-
panic!("Future timed out");
665+
panic!("Future timed out");
661666
}
662667
}
663668
})

consensus/types/src/execution_payload.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,6 @@ impl<T: EthSpec> ExecutionPayload<T> {
6666
// length of List * size_of(uint8)
6767
+ (T::max_extra_data_bytes() * <u8 as Encode>::ssz_fixed_len())
6868
// length of List * offset size * max size of transaction
69-
+ (T::max_transactions_per_payload() *ssz::BYTES_PER_LENGTH_OFFSET * T::max_bytes_per_transaction())
69+
+ (T::max_transactions_per_payload() *(ssz::BYTES_PER_LENGTH_OFFSET + T::max_bytes_per_transaction()))
7070
}
7171
}

0 commit comments

Comments
 (0)