11use core:: slice;
22use std:: collections:: { BTreeSet , HashMap , HashSet } ;
33
4- use hashlink:: LinkedHashMap ;
54use libp2p_core:: { Multiaddr , PeerId } ;
65use libp2p_swarm:: { ConnectionId , NetworkBehaviour , ToSwarm } ;
76
@@ -15,80 +14,10 @@ use crate::{
1514 Metadata , Partial , PartialAction , PartialError , PartialMessage , PublishAction ,
1615 ReceivedAction , State , DEFAULT_PARTIAL_TTL ,
1716 } ,
18- queue:: Queue ,
19- types:: {
20- ControlAction , Extensions , IHave , PeerDetails , PeerKind , RpcIn , RpcOut , SubscriptionOpts ,
21- } ,
22- Behaviour , ConfigBuilder , Event , MessageAuthenticity , TopicHash , ValidationMode ,
17+ types:: { IHave , PeerKind , RpcIn , RpcOut , SubscriptionOpts } ,
18+ ConfigBuilder , Event , TopicHash , ValidationMode ,
2319} ;
2420
25- #[ test]
26- fn test_handle_extensions_message ( ) {
27- let mut gs: Behaviour = Behaviour :: new (
28- MessageAuthenticity :: Anonymous ,
29- ConfigBuilder :: default ( )
30- . validation_mode ( ValidationMode :: None )
31- . build ( )
32- . unwrap ( ) ,
33- )
34- . unwrap ( ) ;
35-
36- let peer_id = PeerId :: random ( ) ;
37- let messages = Queue :: new ( gs. config . connection_handler_queue_len ( ) ) ;
38-
39- // Add peer without extensions
40- gs. connected_peers . insert (
41- peer_id,
42- PeerDetails {
43- kind : PeerKind :: Gossipsubv1_3 ,
44- connections : vec ! [ ConnectionId :: new_unchecked( 0 ) ] ,
45- outbound : false ,
46- topics : BTreeSet :: new ( ) ,
47- messages,
48- dont_send : LinkedHashMap :: new ( ) ,
49- extensions : None ,
50- } ,
51- ) ;
52-
53- // Simulate receiving extensions message
54- let extensions = Extensions {
55- test_extension : Some ( false ) ,
56- partial_messages : None ,
57- } ;
58- gs. handle_extensions ( & peer_id, extensions) ;
59-
60- // Verify extensions were stored
61- let peer_details = gs. connected_peers . get ( & peer_id) . unwrap ( ) ;
62- assert ! ( peer_details. extensions. is_some( ) ) ;
63-
64- // Simulate receiving duplicate extensions message from another peer
65- let duplicate_rpc = RpcIn {
66- messages : vec ! [ ] ,
67- subscriptions : vec ! [ ] ,
68- control_msgs : vec ! [ ControlAction :: Extensions ( Some ( Extensions {
69- test_extension: Some ( true ) ,
70- partial_messages: None ,
71- } ) ) ] ,
72- test_extension : None ,
73- #[ cfg( feature = "partial_messages" ) ]
74- partial_message : None ,
75- } ;
76-
77- gs. on_connection_handler_event (
78- peer_id,
79- ConnectionId :: new_unchecked ( 0 ) ,
80- HandlerEvent :: Message {
81- rpc : duplicate_rpc,
82- invalid_messages : vec ! [ ] ,
83- } ,
84- ) ;
85-
86- // Extensions should still be present (not cleared or changed)
87- let peer_details = gs. connected_peers . get ( & peer_id) . unwrap ( ) ;
88- let test_extension = peer_details. extensions . unwrap ( ) . test_extension . unwrap ( ) ;
89- assert ! ( !test_extension) ;
90- }
91-
9221/// A simple bitmap-based test implementation of the `Partial` trait.
9322/// Uses a fixed number of parts where each part is represented by a bit in a u8 bitmap.
9423#[ derive( Clone , Debug ) ]
@@ -1652,7 +1581,6 @@ fn test_partial_messages_two_node_exchange() {
16521581 messages : vec ! [ ] ,
16531582 subscriptions : vec ! [ ] ,
16541583 control_msgs : vec ! [ ] ,
1655- test_extension : None ,
16561584 partial_message : Some ( node2_partial) ,
16571585 } ,
16581586 invalid_messages : vec ! [ ] ,
@@ -1890,7 +1818,6 @@ fn test_partial_messages_response_on_receive() {
18901818 messages : vec ! [ ] ,
18911819 subscriptions : vec ! [ ] ,
18921820 control_msgs : vec ! [ ] ,
1893- test_extension : None ,
18941821 partial_message : Some ( peer_partial) ,
18951822 } ,
18961823 invalid_messages : vec ! [ ] ,
0 commit comments