@@ -20,15 +20,15 @@ use std::fmt::Debug;
20
20
use std:: io:: { Read , Write } ;
21
21
use std:: net:: { SocketAddr , TcpStream , ToSocketAddrs } ;
22
22
use std:: sync:: mpsc:: { channel, Receiver , Sender } ;
23
- use std:: time:: Duration ;
23
+ use std:: time:: { Duration , SystemTime } ;
24
24
use std:: { mem, thread} ;
25
25
26
26
use blockstack_lib:: chainstate:: nakamoto:: signer_set:: NakamotoSigners ;
27
27
use blockstack_lib:: chainstate:: nakamoto:: { NakamotoBlock , NakamotoBlockHeader } ;
28
28
use blockstack_lib:: chainstate:: stacks:: boot:: SIGNERS_NAME ;
29
29
use blockstack_lib:: chainstate:: stacks:: events:: StackerDBChunksEvent ;
30
30
use blockstack_lib:: util_lib:: boot:: boot_code_id;
31
- use clarity:: types:: chainstate:: { ConsensusHash , StacksBlockId , TrieHash } ;
31
+ use clarity:: types:: chainstate:: { ConsensusHash , StacksBlockId , StacksPublicKey , TrieHash } ;
32
32
use clarity:: util:: hash:: Sha512Trunc256Sum ;
33
33
use clarity:: util:: secp256k1:: MessageSignature ;
34
34
use clarity:: vm:: types:: QualifiedContractIdentifier ;
@@ -142,6 +142,13 @@ fn test_simple_signer() {
142
142
chunks. push ( chunk_event) ;
143
143
}
144
144
145
+ chunks. sort_by ( |ev1, ev2| {
146
+ ev1. modified_slots [ 0 ]
147
+ . slot_id
148
+ . partial_cmp ( & ev2. modified_slots [ 0 ] . slot_id )
149
+ . unwrap ( )
150
+ } ) ;
151
+
145
152
let thread_chunks = chunks. clone ( ) ;
146
153
147
154
// simulate a node that's trying to push data
@@ -177,23 +184,44 @@ fn test_simple_signer() {
177
184
sleep_ms ( 5000 ) ;
178
185
let accepted_events = running_signer. stop ( ) . unwrap ( ) ;
179
186
180
- chunks. sort_by ( |ev1, ev2| {
181
- ev1. modified_slots [ 0 ]
182
- . slot_id
183
- . partial_cmp ( & ev2. modified_slots [ 0 ] . slot_id )
184
- . unwrap ( )
185
- } ) ;
186
-
187
187
let sent_events: Vec < SignerEvent < SignerMessage > > = chunks
188
188
. iter ( )
189
189
. map ( |chunk| {
190
190
let msg = chunk. modified_slots [ 0 ] . data . clone ( ) ;
191
+ let pubkey = chunk. modified_slots [ 0 ]
192
+ . recover_pk ( )
193
+ . expect ( "Faield to recover public key of slot" ) ;
191
194
let signer_message = read_next :: < SignerMessage , _ > ( & mut & msg[ ..] ) . unwrap ( ) ;
192
- SignerEvent :: SignerMessages ( 0 , vec ! [ signer_message] )
195
+ SignerEvent :: SignerMessages {
196
+ signer_set : 0 ,
197
+ messages : vec ! [ ( pubkey, signer_message) ] ,
198
+ received_time : SystemTime :: now ( ) ,
199
+ }
193
200
} )
194
201
. collect ( ) ;
195
202
196
- assert_eq ! ( sent_events, accepted_events) ;
203
+ for ( sent_event, accepted_event) in sent_events. iter ( ) . zip ( accepted_events. iter ( ) ) {
204
+ let SignerEvent :: SignerMessages {
205
+ signer_set,
206
+ messages,
207
+ received_time,
208
+ } = sent_event
209
+ else {
210
+ panic ! ( "BUG: should not have sent anything but a signer message" ) ;
211
+ } ;
212
+ let SignerEvent :: SignerMessages {
213
+ signer_set : accepted_signer_set,
214
+ messages : accepted_messages,
215
+ received_time : accepted_time,
216
+ } = accepted_event
217
+ else {
218
+ panic ! ( "BUG: should not have accepted anything but a signer message" ) ;
219
+ } ;
220
+
221
+ assert_eq ! ( signer_set, accepted_signer_set) ;
222
+ assert_eq ! ( messages, accepted_messages) ;
223
+ assert_ne ! ( received_time, accepted_time) ;
224
+ }
197
225
mock_stacks_node. join ( ) . unwrap ( ) ;
198
226
}
199
227
0 commit comments