* Add pubkey_new_rand(), mark Pubkey::new_rand() deprecated (cherry picked from commit0e68ed6a8d
) * Add hash_new_rand(), mark Hash::new_rand() as deprecated (cherry picked from commit76f11c7dae
) * Run `codemod --extensions rs Pubkey::new_rand solana_sdk::pubkey::new_rand` (cherry picked from commit7bc073defe
) # Conflicts: # programs/bpf/benches/bpf_loader.rs # runtime/benches/accounts.rs # runtime/src/accounts.rs * Run `codemod --extensions rs Hash::new_rand solana_sdk:#️⃣:new_rand` (cherry picked from commit17c391121a
) * Remove unused pubkey::Pubkey imports (cherry picked from commit959880db60
) # Conflicts: # runtime/src/accounts_index.rs * Resolve conflicts Co-authored-by: Michael Vines <mvines@gmail.com>
39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use solana_runtime::bank::Bank;
|
|
use solana_sdk::{genesis_config::create_genesis_config, hash::hash};
|
|
use std::{sync::Arc, thread::Builder};
|
|
|
|
#[test]
|
|
fn test_race_register_tick_freeze() {
|
|
solana_logger::setup();
|
|
|
|
let (mut genesis_config, _) = create_genesis_config(50);
|
|
genesis_config.ticks_per_slot = 1;
|
|
let p = solana_sdk::pubkey::new_rand();
|
|
let hash = hash(p.as_ref());
|
|
|
|
for _ in 0..1000 {
|
|
let bank0 = Arc::new(Bank::new(&genesis_config));
|
|
let bank0_ = bank0.clone();
|
|
let freeze_thread = Builder::new()
|
|
.name("freeze".to_string())
|
|
.spawn(move || loop {
|
|
if bank0_.is_complete() {
|
|
assert_eq!(bank0_.last_blockhash(), hash);
|
|
break;
|
|
}
|
|
})
|
|
.unwrap();
|
|
|
|
let bank0_ = bank0.clone();
|
|
let register_tick_thread = Builder::new()
|
|
.name("register_tick".to_string())
|
|
.spawn(move || {
|
|
bank0_.register_tick(&hash);
|
|
})
|
|
.unwrap();
|
|
|
|
register_tick_thread.join().unwrap();
|
|
freeze_thread.join().unwrap();
|
|
}
|
|
}
|