@@ -6567,202 +6567,6 @@ fn test_publish_large_message_with_specific_transmit_size_config() {
65676567 ) ;
65686568}
65696569
6570- #[ test]
6571- fn test_validation_error_message_size_too_large_default ( ) {
6572- let config = ConfigBuilder :: default ( )
6573- . validation_mode ( ValidationMode :: None )
6574- . build ( )
6575- . unwrap ( ) ;
6576-
6577- let ( mut gs, peers, _, topic_hashes) = inject_nodes1 ( )
6578- . peer_no ( 1 )
6579- . topics ( vec ! [ String :: from( "test" ) ] )
6580- . to_subscribe ( true )
6581- . gs_config ( config)
6582- . create_network ( ) ;
6583-
6584- let data = vec ! [ 0u8 ; Config :: default_max_transmit_size( ) + 1 ] ;
6585- let raw_message = RawMessage {
6586- source : Some ( peers[ 0 ] ) ,
6587- data,
6588- sequence_number : Some ( 1u64 ) ,
6589- topic : topic_hashes[ 0 ] . clone ( ) ,
6590- signature : None ,
6591- key : None ,
6592- validated : false ,
6593- } ;
6594-
6595- gs. on_connection_handler_event (
6596- peers[ 0 ] ,
6597- ConnectionId :: new_unchecked ( 0 ) ,
6598- HandlerEvent :: Message {
6599- rpc : Rpc {
6600- messages : vec ! [ raw_message] ,
6601- subscriptions : vec ! [ ] ,
6602- control_msgs : vec ! [ ] ,
6603- } ,
6604- invalid_messages : vec ! [ ] ,
6605- } ,
6606- ) ;
6607-
6608- let event = gs. events . pop_front ( ) . expect ( "Event should be generated" ) ;
6609- match event {
6610- ToSwarm :: GenerateEvent ( Event :: Message {
6611- propagation_source,
6612- message_id : _,
6613- message,
6614- } ) => {
6615- assert_eq ! ( propagation_source, peers[ 0 ] ) ;
6616- assert_eq ! ( message. data. len( ) , Config :: default_max_transmit_size( ) + 1 ) ;
6617- }
6618- ToSwarm :: NotifyHandler { peer_id, .. } => {
6619- assert_eq ! ( peer_id, peers[ 0 ] ) ;
6620- }
6621- _ => panic ! ( "Unexpected event" ) ,
6622- }
6623-
6624- // Simulate a peer sending a message exceeding the default max_transmit_size + 1 (65537 bytes).
6625- // The codec's max_length is set high to allow encoding/decoding the RPC, while
6626- // max_transmit_sizes enforces the per-topic limit (in this case the default).
6627- let mut codec = GossipsubCodec :: new (
6628- Config :: default_max_transmit_size ( ) * 2 ,
6629- ValidationMode :: Strict ,
6630- HashMap :: new ( ) ,
6631- ) ;
6632- let mut buf = BytesMut :: new ( ) ;
6633- let rpc = proto:: RPC {
6634- publish : vec ! [ proto:: Message {
6635- from: Some ( peers[ 0 ] . to_bytes( ) ) ,
6636- data: Some ( vec![ 0u8 ; Config :: default_max_transmit_size( ) + 1 ] ) ,
6637- seqno: Some ( 1u64 . to_be_bytes( ) . to_vec( ) ) ,
6638- topic: topic_hashes[ 0 ] . to_string( ) ,
6639- signature: None ,
6640- key: None ,
6641- } ] ,
6642- subscriptions : vec ! [ ] ,
6643- control : None ,
6644- } ;
6645- codec. encode ( rpc, & mut buf) . unwrap ( ) ;
6646-
6647- let decoded = codec. decode ( & mut buf) . unwrap ( ) . unwrap ( ) ;
6648- match decoded {
6649- HandlerEvent :: Message {
6650- rpc,
6651- invalid_messages,
6652- } => {
6653- assert ! (
6654- rpc. messages. is_empty( ) ,
6655- "No valid messages should be present"
6656- ) ;
6657- assert_eq ! ( invalid_messages. len( ) , 1 , "One message should be invalid" ) ;
6658- let ( invalid_msg, error) = & invalid_messages[ 0 ] ;
6659- assert_eq ! (
6660- invalid_msg. data. len( ) ,
6661- Config :: default_max_transmit_size( ) + 1
6662- ) ;
6663- assert_eq ! ( error, & ValidationError :: MessageSizeTooLargeForTopic ) ;
6664- }
6665- _ => panic ! ( "Unexpected event" ) ,
6666- }
6667- }
6668-
6669- #[ test]
6670- fn test_validation_message_size_within_default ( ) {
6671- let config = ConfigBuilder :: default ( )
6672- . validation_mode ( ValidationMode :: None )
6673- . build ( )
6674- . unwrap ( ) ;
6675-
6676- let ( mut gs, peers, _, topic_hashes) = inject_nodes1 ( )
6677- . peer_no ( 1 )
6678- . topics ( vec ! [ String :: from( "test" ) ] )
6679- . to_subscribe ( true )
6680- . gs_config ( config)
6681- . create_network ( ) ;
6682-
6683- let data = vec ! [ 0u8 ; Config :: default_max_transmit_size( ) - 100 ] ;
6684- let raw_message = RawMessage {
6685- source : Some ( peers[ 0 ] ) ,
6686- data,
6687- sequence_number : Some ( 1u64 ) ,
6688- topic : topic_hashes[ 0 ] . clone ( ) ,
6689- signature : None ,
6690- key : None ,
6691- validated : false ,
6692- } ;
6693-
6694- gs. on_connection_handler_event (
6695- peers[ 0 ] ,
6696- ConnectionId :: new_unchecked ( 0 ) ,
6697- HandlerEvent :: Message {
6698- rpc : Rpc {
6699- messages : vec ! [ raw_message] ,
6700- subscriptions : vec ! [ ] ,
6701- control_msgs : vec ! [ ] ,
6702- } ,
6703- invalid_messages : vec ! [ ] ,
6704- } ,
6705- ) ;
6706-
6707- let event = gs. events . pop_front ( ) . expect ( "Event should be generated" ) ;
6708- match event {
6709- ToSwarm :: GenerateEvent ( Event :: Message {
6710- propagation_source,
6711- message_id : _,
6712- message,
6713- } ) => {
6714- assert_eq ! ( propagation_source, peers[ 0 ] ) ;
6715- assert_eq ! (
6716- message. data. len( ) ,
6717- Config :: default_max_transmit_size( ) - 100
6718- ) ;
6719- }
6720- ToSwarm :: NotifyHandler { peer_id, .. } => {
6721- assert_eq ! ( peer_id, peers[ 0 ] ) ;
6722- }
6723- _ => panic ! ( "Unexpected event" ) ,
6724- }
6725-
6726- // Simulate a peer sending a message within the default max_transmit_size (65536 bytes).
6727- // The codec's max_length allows encoding/decoding the RPC, and max_transmit_sizes confirms
6728- // the message size is acceptable.
6729- let mut codec = GossipsubCodec :: new (
6730- Config :: default_max_transmit_size ( ) * 2 ,
6731- ValidationMode :: None ,
6732- HashMap :: new ( ) ,
6733- ) ;
6734- let mut buf = BytesMut :: new ( ) ;
6735- let rpc = proto:: RPC {
6736- publish : vec ! [ proto:: Message {
6737- from: Some ( peers[ 0 ] . to_bytes( ) ) ,
6738- data: Some ( vec![ 0u8 ; Config :: default_max_transmit_size( ) - 100 ] ) ,
6739- seqno: Some ( 1u64 . to_be_bytes( ) . to_vec( ) ) ,
6740- topic: topic_hashes[ 0 ] . to_string( ) ,
6741- signature: None ,
6742- key: None ,
6743- } ] ,
6744- subscriptions : vec ! [ ] ,
6745- control : None ,
6746- } ;
6747- codec. encode ( rpc, & mut buf) . unwrap ( ) ;
6748-
6749- let decoded = codec. decode ( & mut buf) . unwrap ( ) . unwrap ( ) ;
6750- match decoded {
6751- HandlerEvent :: Message {
6752- rpc,
6753- invalid_messages,
6754- } => {
6755- assert_eq ! ( rpc. messages. len( ) , 1 , "One valid message should be present" ) ;
6756- assert ! ( invalid_messages. is_empty( ) , "No messages should be invalid" ) ;
6757- assert_eq ! (
6758- rpc. messages[ 0 ] . data. len( ) ,
6759- Config :: default_max_transmit_size( ) - 100
6760- ) ;
6761- }
6762- _ => panic ! ( "Unexpected event" ) ,
6763- }
6764- }
6765-
67666570#[ test]
67676571fn test_validation_error_message_size_too_large_topic_specific ( ) {
67686572 let topic = Topic :: new ( "test" ) ;
0 commit comments