@@ -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.
3032fn 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 } )
0 commit comments