@@ -26,7 +26,7 @@ use polkadot_primitives::parachain::{CandidateReceipt, CollatorId, HeadData, Blo
2626use substrate_primitives:: crypto:: UncheckedInto ;
2727use codec:: Encode ;
2828use substrate_network:: {
29- Severity , NodeIndex , PeerInfo , ClientHandle , Context , config:: Roles ,
29+ Severity , PeerId , PeerInfo , ClientHandle , Context , config:: Roles ,
3030 message:: Message as SubstrateMessage , specialization:: NetworkSpecialization ,
3131 generic_message:: Message as GenericMessage
3232} ;
@@ -36,34 +36,34 @@ use futures::Future;
3636
3737#[ derive( Default ) ]
3838struct TestContext {
39- disabled : Vec < NodeIndex > ,
40- disconnected : Vec < NodeIndex > ,
41- messages : Vec < ( NodeIndex , SubstrateMessage < Block > ) > ,
39+ disabled : Vec < PeerId > ,
40+ disconnected : Vec < PeerId > ,
41+ messages : Vec < ( PeerId , SubstrateMessage < Block > ) > ,
4242}
4343
4444impl Context < Block > for TestContext {
4545 fn client ( & self ) -> & ClientHandle < Block > {
4646 unimplemented ! ( )
4747 }
4848
49- fn report_peer ( & mut self , peer : NodeIndex , reason : Severity ) {
49+ fn report_peer ( & mut self , peer : PeerId , reason : Severity ) {
5050 match reason {
5151 Severity :: Bad ( _) => self . disabled . push ( peer) ,
5252 _ => self . disconnected . push ( peer) ,
5353 }
5454 }
5555
56- fn peer_info ( & self , _peer : NodeIndex ) -> Option < PeerInfo < Block > > {
56+ fn peer_info ( & self , _peer : & PeerId ) -> Option < PeerInfo < Block > > {
5757 unimplemented ! ( )
5858 }
5959
60- fn send_message ( & mut self , who : NodeIndex , data : SubstrateMessage < Block > ) {
60+ fn send_message ( & mut self , who : PeerId , data : SubstrateMessage < Block > ) {
6161 self . messages . push ( ( who, data) )
6262 }
6363}
6464
6565impl TestContext {
66- fn has_message ( & self , to : NodeIndex , message : Message ) -> bool {
66+ fn has_message ( & self , to : PeerId , message : Message ) -> bool {
6767 use substrate_network:: generic_message:: Message as GenericMessage ;
6868
6969 let encoded = message. encode ( ) ;
@@ -93,7 +93,7 @@ fn make_consensus(local_key: SessionKey) -> (CurrentConsensus, Arc<Mutex<Knowled
9393 ( c, knowledge)
9494}
9595
96- fn on_message ( protocol : & mut PolkadotProtocol , ctx : & mut TestContext , from : NodeIndex , message : Message ) {
96+ fn on_message ( protocol : & mut PolkadotProtocol , ctx : & mut TestContext , from : PeerId , message : Message ) {
9797 let encoded = message. encode ( ) ;
9898 protocol. on_message ( ctx, from, & mut Some ( GenericMessage :: ChainSpecific ( encoded) ) ) ;
9999}
@@ -102,8 +102,8 @@ fn on_message(protocol: &mut PolkadotProtocol, ctx: &mut TestContext, from: Node
102102fn sends_session_key ( ) {
103103 let mut protocol = PolkadotProtocol :: new ( None ) ;
104104
105- let peer_a = 1 ;
106- let peer_b = 2 ;
105+ let peer_a = PeerId :: random ( ) ;
106+ let peer_b = PeerId :: random ( ) ;
107107 let parent_hash = [ 0 ; 32 ] . into ( ) ;
108108 let local_key: SessionKey = [ 1 ; 32 ] . unchecked_into ( ) ;
109109
@@ -112,30 +112,30 @@ fn sends_session_key() {
112112
113113 {
114114 let mut ctx = TestContext :: default ( ) ;
115- protocol. on_connect ( & mut ctx, peer_a, make_status ( & validator_status, Roles :: AUTHORITY ) ) ;
115+ protocol. on_connect ( & mut ctx, peer_a. clone ( ) , make_status ( & validator_status, Roles :: AUTHORITY ) ) ;
116116 assert ! ( ctx. messages. is_empty( ) ) ;
117117 }
118118
119119 {
120120 let mut ctx = TestContext :: default ( ) ;
121121 let ( consensus, _knowledge) = make_consensus ( local_key. clone ( ) ) ;
122122 protocol. new_consensus ( & mut ctx, parent_hash, consensus) ;
123- assert ! ( ctx. has_message( peer_a, Message :: SessionKey ( local_key. clone( ) ) ) ) ;
123+ assert ! ( ctx. has_message( peer_a. clone ( ) , Message :: SessionKey ( local_key. clone( ) ) ) ) ;
124124 }
125125
126126 {
127127 let mut ctx = TestContext :: default ( ) ;
128- protocol. on_connect ( & mut ctx, peer_b, make_status ( & collator_status, Roles :: NONE ) ) ;
129- assert ! ( ctx. has_message( peer_b, Message :: SessionKey ( local_key) ) ) ;
128+ protocol. on_connect ( & mut ctx, peer_b. clone ( ) , make_status ( & collator_status, Roles :: NONE ) ) ;
129+ assert ! ( ctx. has_message( peer_b. clone ( ) , Message :: SessionKey ( local_key) ) ) ;
130130 }
131131}
132132
133133#[ test]
134134fn fetches_from_those_with_knowledge ( ) {
135135 let mut protocol = PolkadotProtocol :: new ( None ) ;
136136
137- let peer_a = 1 ;
138- let peer_b = 2 ;
137+ let peer_a = PeerId :: random ( ) ;
138+ let peer_b = PeerId :: random ( ) ;
139139 let parent_hash = [ 0 ; 32 ] . into ( ) ;
140140 let local_key: SessionKey = [ 1 ; 32 ] . unchecked_into ( ) ;
141141
@@ -167,35 +167,35 @@ fn fetches_from_those_with_knowledge() {
167167 // connect peer A
168168 {
169169 let mut ctx = TestContext :: default ( ) ;
170- protocol. on_connect ( & mut ctx, peer_a, make_status ( & status, Roles :: AUTHORITY ) ) ;
171- assert ! ( ctx. has_message( peer_a, Message :: SessionKey ( local_key) ) ) ;
170+ protocol. on_connect ( & mut ctx, peer_a. clone ( ) , make_status ( & status, Roles :: AUTHORITY ) ) ;
171+ assert ! ( ctx. has_message( peer_a. clone ( ) , Message :: SessionKey ( local_key) ) ) ;
172172 }
173173
174174 // peer A gives session key and gets asked for data.
175175 {
176176 let mut ctx = TestContext :: default ( ) ;
177- on_message ( & mut protocol, & mut ctx, peer_a, Message :: SessionKey ( a_key. clone ( ) ) ) ;
177+ on_message ( & mut protocol, & mut ctx, peer_a. clone ( ) , Message :: SessionKey ( a_key. clone ( ) ) ) ;
178178 assert ! ( protocol. validators. contains_key( & a_key) ) ;
179- assert ! ( ctx. has_message( peer_a, Message :: RequestBlockData ( 1 , parent_hash, candidate_hash) ) ) ;
179+ assert ! ( ctx. has_message( peer_a. clone ( ) , Message :: RequestBlockData ( 1 , parent_hash, candidate_hash) ) ) ;
180180 }
181181
182182 knowledge. lock ( ) . note_statement ( b_key. clone ( ) , & GenericStatement :: Valid ( candidate_hash) ) ;
183183
184184 // peer B connects and sends session key. request already assigned to A
185185 {
186186 let mut ctx = TestContext :: default ( ) ;
187- protocol. on_connect ( & mut ctx, peer_b, make_status ( & status, Roles :: AUTHORITY ) ) ;
188- on_message ( & mut protocol, & mut ctx, peer_b, Message :: SessionKey ( b_key. clone ( ) ) ) ;
189- assert ! ( !ctx. has_message( peer_b, Message :: RequestBlockData ( 2 , parent_hash, candidate_hash) ) ) ;
187+ protocol. on_connect ( & mut ctx, peer_b. clone ( ) , make_status ( & status, Roles :: AUTHORITY ) ) ;
188+ on_message ( & mut protocol, & mut ctx, peer_b. clone ( ) , Message :: SessionKey ( b_key. clone ( ) ) ) ;
189+ assert ! ( !ctx. has_message( peer_b. clone ( ) , Message :: RequestBlockData ( 2 , parent_hash, candidate_hash) ) ) ;
190190
191191 }
192192
193193 // peer A disconnects, triggering reassignment
194194 {
195195 let mut ctx = TestContext :: default ( ) ;
196- protocol. on_disconnect ( & mut ctx, peer_a) ;
196+ protocol. on_disconnect ( & mut ctx, peer_a. clone ( ) ) ;
197197 assert ! ( !protocol. validators. contains_key( & a_key) ) ;
198- assert ! ( ctx. has_message( peer_b, Message :: RequestBlockData ( 2 , parent_hash, candidate_hash) ) ) ;
198+ assert ! ( ctx. has_message( peer_b. clone ( ) , Message :: RequestBlockData ( 2 , parent_hash, candidate_hash) ) ) ;
199199 }
200200
201201 // peer B comes back with block data.
@@ -211,7 +211,7 @@ fn fetches_from_those_with_knowledge() {
211211fn fetches_available_block_data ( ) {
212212 let mut protocol = PolkadotProtocol :: new ( None ) ;
213213
214- let peer_a = 1 ;
214+ let peer_a = PeerId :: random ( ) ;
215215 let parent_hash = [ 0 ; 32 ] . into ( ) ;
216216
217217 let block_data = BlockData ( vec ! [ 1 , 2 , 3 , 4 ] ) ;
@@ -246,13 +246,13 @@ fn fetches_available_block_data() {
246246 // connect peer A
247247 {
248248 let mut ctx = TestContext :: default ( ) ;
249- protocol. on_connect ( & mut ctx, peer_a, make_status ( & status, Roles :: FULL ) ) ;
249+ protocol. on_connect ( & mut ctx, peer_a. clone ( ) , make_status ( & status, Roles :: FULL ) ) ;
250250 }
251251
252252 // peer A asks for historic block data and gets response
253253 {
254254 let mut ctx = TestContext :: default ( ) ;
255- on_message ( & mut protocol, & mut ctx, peer_a, Message :: RequestBlockData ( 1 , parent_hash, candidate_hash) ) ;
255+ on_message ( & mut protocol, & mut ctx, peer_a. clone ( ) , Message :: RequestBlockData ( 1 , parent_hash, candidate_hash) ) ;
256256 assert ! ( ctx. has_message( peer_a, Message :: BlockData ( 1 , Some ( block_data) ) ) ) ;
257257 }
258258}
@@ -261,14 +261,14 @@ fn fetches_available_block_data() {
261261fn remove_bad_collator ( ) {
262262 let mut protocol = PolkadotProtocol :: new ( None ) ;
263263
264- let who = 1 ;
264+ let who = PeerId :: random ( ) ;
265265 let account_id: CollatorId = [ 2 ; 32 ] . unchecked_into ( ) ;
266266
267267 let status = Status { collating_for : Some ( ( account_id. clone ( ) , 5 . into ( ) ) ) } ;
268268
269269 {
270270 let mut ctx = TestContext :: default ( ) ;
271- protocol. on_connect ( & mut ctx, who, make_status ( & status, Roles :: NONE ) ) ;
271+ protocol. on_connect ( & mut ctx, who. clone ( ) , make_status ( & status, Roles :: NONE ) ) ;
272272 }
273273
274274 {
@@ -296,30 +296,30 @@ fn many_session_keys() {
296296
297297 assert_eq ! ( protocol. live_consensus. recent_keys( ) , & [ local_key_a. clone( ) , local_key_b. clone( ) ] ) ;
298298
299- let peer_a = 1 ;
299+ let peer_a = PeerId :: random ( ) ;
300300
301301 // when connecting a peer, we should get both those keys.
302302 {
303303 let mut ctx = TestContext :: default ( ) ;
304304
305305 let status = Status { collating_for : None } ;
306- protocol. on_connect ( & mut ctx, peer_a, make_status ( & status, Roles :: AUTHORITY ) ) ;
306+ protocol. on_connect ( & mut ctx, peer_a. clone ( ) , make_status ( & status, Roles :: AUTHORITY ) ) ;
307307
308- assert ! ( ctx. has_message( peer_a, Message :: SessionKey ( local_key_a. clone( ) ) ) ) ;
308+ assert ! ( ctx. has_message( peer_a. clone ( ) , Message :: SessionKey ( local_key_a. clone( ) ) ) ) ;
309309 assert ! ( ctx. has_message( peer_a, Message :: SessionKey ( local_key_b. clone( ) ) ) ) ;
310310 }
311311
312- let peer_b = 2 ;
312+ let peer_b = PeerId :: random ( ) ;
313313
314314 protocol. remove_consensus ( & parent_a) ;
315315
316316 {
317317 let mut ctx = TestContext :: default ( ) ;
318318
319319 let status = Status { collating_for : None } ;
320- protocol. on_connect ( & mut ctx, peer_b, make_status ( & status, Roles :: AUTHORITY ) ) ;
320+ protocol. on_connect ( & mut ctx, peer_b. clone ( ) , make_status ( & status, Roles :: AUTHORITY ) ) ;
321321
322- assert ! ( !ctx. has_message( peer_b, Message :: SessionKey ( local_key_a. clone( ) ) ) ) ;
322+ assert ! ( !ctx. has_message( peer_b. clone ( ) , Message :: SessionKey ( local_key_a. clone( ) ) ) ) ;
323323 assert ! ( ctx. has_message( peer_b, Message :: SessionKey ( local_key_b. clone( ) ) ) ) ;
324324 }
325325}
0 commit comments