1- use std:: {
2- collections:: { BTreeSet , HashMap , HashSet } ,
3- env, fs,
4- path:: PathBuf ,
5- } ;
1+ use std:: collections:: { BTreeSet , HashMap , HashSet } ;
2+ use std:: path:: PathBuf ;
3+ use std:: { env, fs} ;
64
5+ use antithesis_sdk:: random:: AntithesisRng ;
76use fs2:: FileExt ;
8- use rand:: { seq:: IteratorRandom , Rng , RngCore } ;
7+ use rand:: seq:: IteratorRandom ;
98use serde:: { Deserialize , Serialize } ;
109use thiserror:: Error ;
1110
@@ -82,15 +81,12 @@ pub struct State {
8281 pub deactivated_validators : HashMap < Alias , Account > ,
8382 pub proposals : HashMap < u64 , ( u64 , u64 ) > ,
8483 pub id : u64 ,
85- pub seed : u64 ,
86- pub rng : AntithesisRng ,
8784 pub base_dir : PathBuf ,
8885 pub stats : HashMap < String , u64 > ,
8986}
9087
9188impl State {
92- pub fn new ( id : u64 , seed : Option < u64 > ) -> Self {
93- let seed = seed. unwrap_or ( rand:: thread_rng ( ) . gen_range ( 0 ..u64:: MAX ) ) ;
89+ pub fn new ( id : u64 ) -> Self {
9490 Self {
9591 accounts : HashMap :: default ( ) ,
9692 masp_accounts : HashMap :: default ( ) ,
@@ -103,8 +99,6 @@ impl State {
10399 deactivated_validators : HashMap :: default ( ) ,
104100 proposals : HashMap :: default ( ) ,
105101 id,
106- seed,
107- rng : AntithesisRng :: default ( ) ,
108102 base_dir : env:: current_dir ( ) . unwrap ( ) . join ( "base" ) ,
109103 stats : HashMap :: default ( ) ,
110104 }
@@ -130,11 +124,11 @@ impl State {
130124 Ok ( ( ) )
131125 }
132126
133- pub fn create_new ( id : u64 , seed : Option < u64 > ) -> Result < ( Self , fs:: File ) , StateError > {
127+ pub fn create_new ( id : u64 ) -> Result < ( Self , fs:: File ) , StateError > {
134128 // Lock the state file before writing the new
135129 let file = Self :: lock_state_file ( id) ?;
136130
137- let state = Self :: new ( id, seed ) ;
131+ let state = Self :: new ( id) ;
138132 state. save ( None ) ?;
139133
140134 Ok ( ( state, file) )
@@ -269,16 +263,16 @@ impl State {
269263
270264 /// GET
271265
272- pub fn random_account ( & mut self , blacklist : Vec < Alias > ) -> Option < Account > {
266+ pub fn random_account ( & self , blacklist : Vec < Alias > ) -> Option < Account > {
273267 self . accounts
274268 . iter ( )
275269 . filter ( |( alias, _) | !blacklist. contains ( alias) )
276- . choose ( & mut self . rng )
270+ . choose ( & mut AntithesisRng )
277271 . map ( |( _, account) | account. clone ( ) )
278272 }
279273
280274 pub fn random_masp_account_with_min_balance (
281- & mut self ,
275+ & self ,
282276 blacklist : Vec < Alias > ,
283277 min_value : u64 ,
284278 ) -> Option < MaspAccount > {
@@ -294,74 +288,74 @@ impl State {
294288 None
295289 }
296290 } )
297- . choose ( & mut self . rng )
291+ . choose ( & mut AntithesisRng )
298292 }
299293
300- pub fn random_payment_address ( & mut self , blacklist : Vec < Alias > ) -> Option < MaspAccount > {
294+ pub fn random_payment_address ( & self , blacklist : Vec < Alias > ) -> Option < MaspAccount > {
301295 self . masp_accounts
302296 . iter ( )
303297 . filter ( |( alias, _) | !blacklist. contains ( alias) )
304- . choose ( & mut self . rng )
298+ . choose ( & mut AntithesisRng )
305299 . map ( |( _, account) | account. clone ( ) )
306300 }
307301
308302 pub fn random_implicit_accounts (
309- & mut self ,
303+ & self ,
310304 blacklist : Vec < Alias > ,
311305 sample_size : usize ,
312306 ) -> Vec < Account > {
313307 self . accounts
314308 . iter ( )
315309 . filter ( |( alias, _) | !blacklist. contains ( alias) )
316310 . filter ( |( _, account) | account. is_implicit ( ) )
317- . choose_multiple ( & mut self . rng , sample_size)
311+ . choose_multiple ( & mut AntithesisRng , sample_size)
318312 . into_iter ( )
319313 . map ( |( _, account) | account. clone ( ) )
320314 . collect ( )
321315 }
322316
323317 pub fn random_enstablished_account (
324- & mut self ,
318+ & self ,
325319 blacklist : Vec < Alias > ,
326320 sample_size : usize ,
327321 ) -> Vec < Account > {
328322 self . accounts
329323 . iter ( )
330324 . filter ( |( alias, _) | !blacklist. contains ( alias) )
331325 . filter ( |( _, account) | account. is_enstablished ( ) )
332- . choose_multiple ( & mut self . rng , sample_size)
326+ . choose_multiple ( & mut AntithesisRng , sample_size)
333327 . into_iter ( )
334328 . map ( |( _, account) | account. clone ( ) )
335329 . collect ( )
336330 }
337331
338- pub fn random_validator ( & mut self , blacklist : Vec < Alias > , sample_size : usize ) -> Vec < Account > {
332+ pub fn random_validator ( & self , blacklist : Vec < Alias > , sample_size : usize ) -> Vec < Account > {
339333 self . validators
340334 . iter ( )
341335 . filter ( |( alias, _) | !blacklist. contains ( alias) )
342336 . filter ( |( _, account) | account. is_enstablished ( ) )
343- . choose_multiple ( & mut self . rng , sample_size)
337+ . choose_multiple ( & mut AntithesisRng , sample_size)
344338 . into_iter ( )
345339 . map ( |( _, account) | account. clone ( ) )
346340 . collect ( )
347341 }
348342
349343 pub fn random_deactivated_validator (
350- & mut self ,
344+ & self ,
351345 blacklist : Vec < Alias > ,
352346 sample_size : usize ,
353347 ) -> Vec < Account > {
354348 self . deactivated_validators
355349 . iter ( )
356350 . filter ( |( alias, _) | !blacklist. contains ( alias) )
357351 . filter ( |( _, account) | account. is_enstablished ( ) )
358- . choose_multiple ( & mut self . rng , sample_size)
352+ . choose_multiple ( & mut AntithesisRng , sample_size)
359353 . into_iter ( )
360354 . map ( |( _, account) | account. clone ( ) )
361355 . collect ( )
362356 }
363357
364- pub fn random_bond ( & mut self ) -> Bond {
358+ pub fn random_bond ( & self ) -> Bond {
365359 self . bonds
366360 . iter ( )
367361 . flat_map ( |( source, bonds) | {
@@ -377,12 +371,12 @@ impl State {
377371 }
378372 } )
379373 } )
380- . choose ( & mut self . rng )
374+ . choose ( & mut AntithesisRng )
381375 . unwrap ( )
382376 }
383377
384378 pub fn random_account_with_min_balance (
385- & mut self ,
379+ & self ,
386380 blacklist : Vec < Alias > ,
387381 min_balance : u64 ,
388382 ) -> Option < Account > {
@@ -398,7 +392,7 @@ impl State {
398392 None
399393 }
400394 } )
401- . choose ( & mut self . rng )
395+ . choose ( & mut AntithesisRng )
402396 }
403397
404398 pub fn get_account_by_alias ( & self , alias : & Alias ) -> Account {
@@ -423,14 +417,14 @@ impl State {
423417 . unwrap_or_default ( )
424418 }
425419
426- pub fn get_redelegations_targets_for ( & mut self , alias : & Alias ) -> HashSet < String > {
420+ pub fn get_redelegations_targets_for ( & self , alias : & Alias ) -> HashSet < String > {
427421 self . redelegations
428422 . get ( alias)
429423 . map ( |data| data. keys ( ) . cloned ( ) . collect :: < HashSet < String > > ( ) )
430424 . unwrap_or_default ( )
431425 }
432426
433- pub fn random_votable_proposal ( & mut self , current_epoch : u64 ) -> u64 {
427+ pub fn random_votable_proposal ( & self , current_epoch : u64 ) -> u64 {
434428 self . proposals
435429 . iter ( )
436430 . filter_map ( |( proposal_id, ( start_epoch, end_epoch) ) | {
@@ -440,7 +434,7 @@ impl State {
440434 None
441435 }
442436 } )
443- . choose ( & mut self . rng )
437+ . choose ( & mut AntithesisRng )
444438 . unwrap ( )
445439 }
446440
@@ -626,35 +620,3 @@ impl State {
626620 . insert ( latest_proposal_id, ( start_epoch, end_epoch) ) ;
627621 }
628622}
629-
630- #[ derive( Clone , Debug , Default , Serialize , Deserialize ) ]
631- pub struct AntithesisRng { }
632-
633- impl RngCore for AntithesisRng {
634- fn next_u32 ( & mut self ) -> u32 {
635- ( antithesis_sdk:: random:: get_random ( ) & 0xFFFF_FFFF ) as u32
636- }
637-
638- fn next_u64 ( & mut self ) -> u64 {
639- antithesis_sdk:: random:: get_random ( )
640- }
641-
642- fn fill_bytes ( & mut self , dest : & mut [ u8 ] ) {
643- let mut i = 0 ;
644- while i + 8 <= dest. len ( ) {
645- let random = antithesis_sdk:: random:: get_random ( ) ;
646- dest[ i..i + 8 ] . copy_from_slice ( & random. to_le_bytes ( ) ) ;
647- i += 8 ;
648- }
649- if i < dest. len ( ) {
650- let random = antithesis_sdk:: random:: get_random ( ) ;
651- let dest_len = dest. len ( ) ;
652- dest[ i..] . copy_from_slice ( & random. to_le_bytes ( ) [ ..dest_len - i] ) ;
653- }
654- }
655-
656- fn try_fill_bytes ( & mut self , dest : & mut [ u8 ] ) -> Result < ( ) , rand:: Error > {
657- self . fill_bytes ( dest) ;
658- Ok ( ( ) )
659- }
660- }
0 commit comments