create_genesis_block() now returns a struct (#4403)
This commit is contained in:
parent
7ada8510c4
commit
2ed77b040a
|
@ -11,7 +11,7 @@ use solana::banking_stage::{create_test_recorder, BankingStage};
|
|||
use solana::blocktree::{get_tmp_ledger_path, Blocktree};
|
||||
use solana::cluster_info::ClusterInfo;
|
||||
use solana::cluster_info::Node;
|
||||
use solana::genesis_utils::create_genesis_block;
|
||||
use solana::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use solana::packet::to_packets_chunked;
|
||||
use solana::poh_recorder::WorkingBankEntries;
|
||||
use solana::service::Service;
|
||||
|
@ -25,7 +25,6 @@ use solana_sdk::timing::{
|
|||
duration_as_ms, timestamp, DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES,
|
||||
};
|
||||
use std::iter;
|
||||
use std::rc::Rc;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::mpsc::{channel, Receiver};
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
@ -52,7 +51,7 @@ fn check_txs(receiver: &Arc<Receiver<WorkingBankEntries>>, ref_tx_count: usize)
|
|||
|
||||
#[bench]
|
||||
fn bench_consume_buffered(bencher: &mut Bencher) {
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(100_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(100_000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let ledger_path = get_tmp_ledger_path!();
|
||||
let my_id = Pubkey::new_rand();
|
||||
|
@ -92,7 +91,11 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
|
|||
// a multiple of packet chunk 2X duplicates to avoid races
|
||||
let txes = 192 * num_threads * 2;
|
||||
let mint_total = 1_000_000_000_000;
|
||||
let (mut genesis_block, mint_keypair) = create_genesis_block(mint_total);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(mint_total);
|
||||
|
||||
// Set a high ticks_per_slot so we don't run out of ticks
|
||||
// during the benchmark
|
||||
|
@ -203,7 +206,11 @@ fn bench_banking_stage_multi_programs(bencher: &mut Bencher) {
|
|||
// a multiple of packet chunk 2X duplicates to avoid races
|
||||
let txes = 96 * 100 * num_threads * 2;
|
||||
let mint_total = 1_000_000_000_000;
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(mint_total);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(mint_total);
|
||||
|
||||
let (verified_sender, verified_receiver) = channel();
|
||||
let (vote_sender, vote_receiver) = channel();
|
||||
|
|
|
@ -147,13 +147,13 @@ impl BankForks {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use solana_sdk::hash::Hash;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
|
||||
#[test]
|
||||
fn test_bank_forks() {
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let mut bank_forks = BankForks::new(0, bank);
|
||||
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);
|
||||
|
@ -165,7 +165,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_forks_descendants() {
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let mut bank_forks = BankForks::new(0, bank);
|
||||
let bank0 = bank_forks[0].clone();
|
||||
|
@ -182,7 +182,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_forks_ancestors() {
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let mut bank_forks = BankForks::new(0, bank);
|
||||
let bank0 = bank_forks[0].clone();
|
||||
|
@ -200,7 +200,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_forks_frozen_banks() {
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let mut bank_forks = BankForks::new(0, bank);
|
||||
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);
|
||||
|
@ -211,7 +211,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_forks_active_banks() {
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let mut bank_forks = BankForks::new(0, bank);
|
||||
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);
|
||||
|
|
|
@ -848,7 +848,7 @@ mod tests {
|
|||
use crate::blocktree::get_tmp_ledger_path;
|
||||
use crate::cluster_info::Node;
|
||||
use crate::entry::EntrySlice;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::packet::to_packets;
|
||||
use crate::poh_recorder::WorkingBank;
|
||||
use crate::{get_tmp_ledger_path, tmp_ledger_name};
|
||||
|
@ -862,7 +862,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_banking_stage_shutdown1() {
|
||||
let genesis_block = create_genesis_block(2).0;
|
||||
let genesis_block = create_genesis_block(2).genesis_block;
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let (verified_sender, verified_receiver) = channel();
|
||||
let (vote_sender, vote_receiver) = channel();
|
||||
|
@ -893,7 +893,9 @@ mod tests {
|
|||
#[test]
|
||||
fn test_banking_stage_tick() {
|
||||
solana_logger::setup();
|
||||
let (mut genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block, ..
|
||||
} = create_genesis_block(2);
|
||||
genesis_block.ticks_per_slot = 4;
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let start_hash = bank.last_blockhash();
|
||||
|
@ -939,7 +941,11 @@ mod tests {
|
|||
#[test]
|
||||
fn test_banking_stage_entries_only() {
|
||||
solana_logger::setup();
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let start_hash = bank.last_blockhash();
|
||||
let (verified_sender, verified_receiver) = channel();
|
||||
|
@ -1046,7 +1052,11 @@ mod tests {
|
|||
// In this attack we'll demonstrate that a verifier can interpret the ledger
|
||||
// differently if either the server doesn't signal the ledger to add an
|
||||
// Entry OR if the verifier tries to parallelize across multiple Entries.
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(2);
|
||||
let (verified_sender, verified_receiver) = channel();
|
||||
|
||||
// Process a batch that includes a transaction that receives two lamports.
|
||||
|
@ -1137,7 +1147,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_record_transactions() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let working_bank = WorkingBank {
|
||||
bank: bank.clone(),
|
||||
|
@ -1217,7 +1231,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_filter_transaction_indexes() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let pubkey = Pubkey::new_rand();
|
||||
|
||||
let transactions = vec![
|
||||
|
@ -1294,7 +1312,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_prepare_filter_for_pending_transaction() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let pubkey = Pubkey::new_rand();
|
||||
|
||||
let transactions = vec![
|
||||
|
@ -1407,7 +1429,11 @@ mod tests {
|
|||
#[test]
|
||||
fn test_bank_process_and_record_transactions() {
|
||||
solana_logger::setup();
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let pubkey = Pubkey::new_rand();
|
||||
|
||||
|
@ -1492,7 +1518,11 @@ mod tests {
|
|||
#[test]
|
||||
fn test_bank_process_and_record_transactions_account_in_use() {
|
||||
solana_logger::setup();
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let pubkey = Pubkey::new_rand();
|
||||
let pubkey1 = Pubkey::new_rand();
|
||||
|
|
|
@ -109,7 +109,7 @@ mod test {
|
|||
use super::*;
|
||||
use crate::blocktree::create_new_tmp_ledger;
|
||||
use crate::entry::{create_ticks, Entry};
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use bincode::{deserialize, serialize};
|
||||
use chrono::{DateTime, FixedOffset};
|
||||
use serde_json::Value;
|
||||
|
@ -124,7 +124,9 @@ mod test {
|
|||
let leader_id = Pubkey::new_rand();
|
||||
|
||||
// Set up genesis block and blocktree
|
||||
let (mut genesis_block, _mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block, ..
|
||||
} = create_genesis_block(1000);
|
||||
genesis_block.ticks_per_slot = ticks_per_slot;
|
||||
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
|
|
@ -286,7 +286,9 @@ pub mod tests {
|
|||
use crate::blocktree::create_new_tmp_ledger;
|
||||
use crate::blocktree::tests::entries_to_blobs;
|
||||
use crate::entry::{create_ticks, next_entry, next_entry_mut, Entry};
|
||||
use crate::genesis_utils::{create_genesis_block, create_genesis_block_with_leader};
|
||||
use crate::genesis_utils::{
|
||||
create_genesis_block, create_genesis_block_with_leader, GenesisBlockInfo,
|
||||
};
|
||||
use solana_runtime::epoch_schedule::EpochSchedule;
|
||||
use solana_sdk::hash::Hash;
|
||||
use solana_sdk::instruction::InstructionError;
|
||||
|
@ -315,7 +317,7 @@ pub mod tests {
|
|||
fn test_process_blocktree_with_incomplete_slot() {
|
||||
solana_logger::setup();
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
|
||||
/*
|
||||
|
@ -372,7 +374,7 @@ pub mod tests {
|
|||
fn test_process_blocktree_with_two_forks_and_squash() {
|
||||
solana_logger::setup();
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
|
||||
// Create a new ledger with slot 0 full of ticks
|
||||
|
@ -446,7 +448,7 @@ pub mod tests {
|
|||
fn test_process_blocktree_with_two_forks() {
|
||||
solana_logger::setup();
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
|
||||
// Create a new ledger with slot 0 full of ticks
|
||||
|
@ -537,7 +539,7 @@ pub mod tests {
|
|||
fn test_process_blocktree_epoch_boundary_root() {
|
||||
solana_logger::setup();
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
|
||||
// Create a new ledger with slot 0 full of ticks
|
||||
|
@ -627,7 +629,11 @@ pub mod tests {
|
|||
fn test_process_empty_entry_is_registered() {
|
||||
solana_logger::setup();
|
||||
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(2);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair = Keypair::new();
|
||||
let slot_entries = create_ticks(genesis_block.ticks_per_slot - 1, genesis_block.hash());
|
||||
|
@ -654,8 +660,11 @@ pub mod tests {
|
|||
solana_logger::setup();
|
||||
let leader_pubkey = Pubkey::new_rand();
|
||||
let mint = 100;
|
||||
let (genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(mint, &leader_pubkey, 50);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(mint, &leader_pubkey, 50);
|
||||
let (ledger_path, mut last_entry_hash) = create_new_tmp_ledger!(&genesis_block);
|
||||
debug!("ledger_path: {:?}", ledger_path);
|
||||
|
||||
|
@ -722,7 +731,9 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_ledger_with_one_tick_per_slot() {
|
||||
let (mut genesis_block, _mint_keypair) = create_genesis_block(123);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block, ..
|
||||
} = create_genesis_block(123);
|
||||
genesis_block.ticks_per_slot = 1;
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
||||
|
@ -744,7 +755,7 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_tick() {
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
||||
// ensure bank can process a tick
|
||||
|
@ -756,7 +767,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_2_entries_collision() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -786,7 +801,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_2_txes_collision() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -839,7 +858,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_2_txes_collision_and_error() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -917,7 +940,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_2_entries_par() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -964,7 +991,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_process_entries_2_entries_tick() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -1028,7 +1059,11 @@ pub mod tests {
|
|||
#[test]
|
||||
fn test_update_transaction_statuses() {
|
||||
// Make sure instruction errors still update the signature cache
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(11_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(11_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let pubkey = Pubkey::new_rand();
|
||||
bank.transfer(1_000, &mint_keypair, &pubkey).unwrap();
|
||||
|
@ -1066,7 +1101,11 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_update_transaction_statuses_fail() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(11_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(11_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let keypair1 = Keypair::new();
|
||||
let keypair2 = Keypair::new();
|
||||
|
@ -1107,7 +1146,11 @@ pub mod tests {
|
|||
// this test throws lots of rayon threads at process_entries()
|
||||
// finds bugs in very low-layer stuff
|
||||
solana_logger::setup();
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(1_000_000_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(1_000_000_000);
|
||||
let mut bank = Bank::new(&genesis_block);
|
||||
|
||||
const NUM_TRANSFERS: usize = 100;
|
||||
|
|
|
@ -298,7 +298,7 @@ mod test {
|
|||
use crate::blocktree::{get_tmp_ledger_path, Blocktree};
|
||||
use crate::cluster_info::{ClusterInfo, Node};
|
||||
use crate::entry::create_ticks;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::service::Service;
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_sdk::hash::Hash;
|
||||
|
@ -337,7 +337,7 @@ mod test {
|
|||
|
||||
let exit_sender = Arc::new(AtomicBool::new(false));
|
||||
|
||||
let (genesis_block, _) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
|
||||
// Start up the broadcast stage
|
||||
|
|
|
@ -345,14 +345,17 @@ impl Service for Fullnode {
|
|||
|
||||
pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) {
|
||||
use crate::blocktree::create_new_tmp_ledger;
|
||||
use crate::genesis_utils::create_genesis_block_with_leader;
|
||||
use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo};
|
||||
|
||||
let node_keypair = Arc::new(Keypair::new());
|
||||
let node = Node::new_localhost_with_pubkey(&node_keypair.pubkey());
|
||||
let contact_info = node.info.clone();
|
||||
|
||||
let (mut genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(10_000, &contact_info.id, 42);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(10_000, &contact_info.id, 42);
|
||||
genesis_block
|
||||
.native_instruction_processors
|
||||
.push(solana_budget_program!());
|
||||
|
@ -390,7 +393,7 @@ mod tests {
|
|||
let validator_keypair = Keypair::new();
|
||||
let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey());
|
||||
let genesis_block =
|
||||
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000).0;
|
||||
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000).genesis_block;
|
||||
let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
||||
let voting_keypair = Arc::new(Keypair::new());
|
||||
|
@ -419,8 +422,9 @@ mod tests {
|
|||
.map(|_| {
|
||||
let validator_keypair = Keypair::new();
|
||||
let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey());
|
||||
let (genesis_block, _mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000);
|
||||
let genesis_block =
|
||||
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000)
|
||||
.genesis_block;
|
||||
let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
ledger_paths.push(validator_ledger_path.clone());
|
||||
let voting_keypair = Arc::new(Keypair::new());
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
pub use solana_runtime::genesis_utils::{
|
||||
create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS,
|
||||
create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS,
|
||||
};
|
||||
use solana_sdk::genesis_block::GenesisBlock;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_sdk::signature::Keypair;
|
||||
|
||||
// same as genesis_block::create_genesis_block, but with bootstrap_leader staking logic
|
||||
// for the core crate tests
|
||||
pub fn create_genesis_block(mint_lamports: u64) -> (GenesisBlock, Keypair) {
|
||||
let (genesis_block, mint_keypair, _vote_keypair) = create_genesis_block_with_leader(
|
||||
pub fn create_genesis_block(mint_lamports: u64) -> GenesisBlockInfo {
|
||||
create_genesis_block_with_leader(
|
||||
mint_lamports,
|
||||
&Pubkey::new_rand(),
|
||||
BOOTSTRAP_LEADER_LAMPORTS,
|
||||
);
|
||||
(genesis_block, mint_keypair)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -167,7 +167,9 @@ mod tests {
|
|||
use super::*;
|
||||
use crate::blocktree::tests::make_slot_entries;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS};
|
||||
use crate::genesis_utils::{
|
||||
create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS,
|
||||
};
|
||||
use crate::staking_utils::tests::setup_vote_and_stake_accounts;
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_runtime::epoch_schedule::{EpochSchedule, MINIMUM_SLOT_LENGTH};
|
||||
|
@ -179,7 +181,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_slot_leader_at() {
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let cache = LeaderScheduleCache::new_from_bank(&bank);
|
||||
|
||||
|
@ -221,7 +223,7 @@ mod tests {
|
|||
fn run_thread_race() {
|
||||
let slots_per_epoch = MINIMUM_SLOT_LENGTH as u64;
|
||||
let epoch_schedule = EpochSchedule::new(slots_per_epoch, slots_per_epoch / 2, true);
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let cache = Arc::new(LeaderScheduleCache::new(epoch_schedule, bank.slot()));
|
||||
|
||||
|
@ -265,7 +267,7 @@ mod tests {
|
|||
&pubkey,
|
||||
BOOTSTRAP_LEADER_LAMPORTS,
|
||||
)
|
||||
.0;
|
||||
.genesis_block;
|
||||
genesis_block.epoch_warmup = false;
|
||||
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
@ -306,7 +308,7 @@ mod tests {
|
|||
&pubkey,
|
||||
BOOTSTRAP_LEADER_LAMPORTS,
|
||||
)
|
||||
.0;
|
||||
.genesis_block;
|
||||
genesis_block.epoch_warmup = false;
|
||||
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
@ -372,7 +374,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_next_leader_slot_next_epoch() {
|
||||
let (mut genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
genesis_block.epoch_warmup = false;
|
||||
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
@ -420,7 +426,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_schedule_for_unconfirmed_epoch() {
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let cache = LeaderScheduleCache::new_from_bank(&bank);
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ mod tests {
|
|||
fn test_leader_schedule_via_bank() {
|
||||
let pubkey = Pubkey::new_rand();
|
||||
let genesis_block =
|
||||
create_genesis_block_with_leader(0, &pubkey, BOOTSTRAP_LEADER_LAMPORTS).0;
|
||||
create_genesis_block_with_leader(0, &pubkey, BOOTSTRAP_LEADER_LAMPORTS).genesis_block;
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
||||
let ids_and_stakes: Vec<_> = staking_utils::staked_nodes(&bank).into_iter().collect();
|
||||
|
@ -90,7 +90,7 @@ mod tests {
|
|||
&pubkey,
|
||||
BOOTSTRAP_LEADER_LAMPORTS,
|
||||
)
|
||||
.0;
|
||||
.genesis_block;
|
||||
let bank = Bank::new(&genesis_block);
|
||||
assert_eq!(slot_leader_at(bank.slot(), &bank).unwrap(), pubkey);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ use crate::cluster::Cluster;
|
|||
use crate::cluster_info::{Node, FULLNODE_PORT_RANGE};
|
||||
use crate::contact_info::ContactInfo;
|
||||
use crate::fullnode::{Fullnode, FullnodeConfig};
|
||||
use crate::genesis_utils::create_genesis_block_with_leader;
|
||||
use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo};
|
||||
use crate::gossip_service::discover_cluster;
|
||||
use crate::replicator::Replicator;
|
||||
use crate::service::Service;
|
||||
|
@ -116,7 +116,11 @@ impl LocalCluster {
|
|||
let leader_keypair = Arc::new(Keypair::new());
|
||||
let leader_pubkey = leader_keypair.pubkey();
|
||||
let leader_node = Node::new_localhost_with_pubkey(&leader_keypair.pubkey());
|
||||
let (mut genesis_block, mint_keypair, voting_keypair) = create_genesis_block_with_leader(
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair,
|
||||
voting_keypair,
|
||||
} = create_genesis_block_with_leader(
|
||||
config.cluster_lamports,
|
||||
&leader_pubkey,
|
||||
config.node_stakes[0],
|
||||
|
|
|
@ -443,7 +443,7 @@ impl PohRecorder {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::blocktree::{get_tmp_ledger_path, Blocktree};
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::test_tx::test_tx;
|
||||
use solana_sdk::hash::hash;
|
||||
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
|
||||
|
@ -535,7 +535,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
|
||||
|
@ -569,7 +569,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -615,7 +615,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -659,7 +659,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -697,7 +697,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
|
||||
|
@ -737,7 +737,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -784,7 +784,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -828,7 +828,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, entry_receiver) = PohRecorder::new(
|
||||
|
@ -961,7 +961,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
|
||||
0,
|
||||
|
@ -993,7 +993,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let (sender, receiver) = sync_channel(1);
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new_with_clear_signal(
|
||||
|
@ -1022,7 +1022,9 @@ mod tests {
|
|||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let ticks_per_slot = 5;
|
||||
let (mut genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block, ..
|
||||
} = create_genesis_block(2);
|
||||
genesis_block.ticks_per_slot = ticks_per_slot;
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
|
||||
|
@ -1070,7 +1072,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
|
||||
|
@ -1232,7 +1234,7 @@ mod tests {
|
|||
{
|
||||
let blocktree =
|
||||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
|
||||
|
|
|
@ -86,7 +86,7 @@ impl Service for PohService {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::blocktree::{get_tmp_ledger_path, Blocktree};
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::leader_schedule_cache::LeaderScheduleCache;
|
||||
use crate::poh_recorder::WorkingBank;
|
||||
use crate::result::Result;
|
||||
|
@ -98,7 +98,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_poh_service() {
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(2);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let prev_hash = bank.last_blockhash();
|
||||
let ledger_path = get_tmp_ledger_path!();
|
||||
|
|
|
@ -628,7 +628,7 @@ mod test {
|
|||
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"),
|
||||
);
|
||||
|
||||
let genesis_block = create_genesis_block(10_000).0;
|
||||
let genesis_block = create_genesis_block(10_000).genesis_block;
|
||||
let bank0 = Bank::new(&genesis_block);
|
||||
let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank0));
|
||||
let mut bank_forks = BankForks::new(0, bank0);
|
||||
|
@ -667,7 +667,7 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn test_handle_new_root() {
|
||||
let genesis_block = create_genesis_block(10_000).0;
|
||||
let genesis_block = create_genesis_block(10_000).genesis_block;
|
||||
let bank0 = Bank::new(&genesis_block);
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank0)));
|
||||
let mut progress = HashMap::new();
|
||||
|
|
|
@ -477,7 +477,7 @@ impl RpcSol for RpcSolImpl {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::contact_info::ContactInfo;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use jsonrpc_core::{MetaIoHandler, Response};
|
||||
use solana_sdk::hash::{hash, Hash};
|
||||
use solana_sdk::instruction::InstructionError;
|
||||
|
@ -833,11 +833,15 @@ mod tests {
|
|||
}
|
||||
|
||||
fn new_bank_forks() -> (Arc<RwLock<BankForks>>, Keypair) {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
(
|
||||
Arc::new(RwLock::new(BankForks::new(bank.slot(), bank))),
|
||||
alice,
|
||||
mint_keypair,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -238,7 +238,7 @@ impl RpcSolPubSub for RpcSolPubSubImpl {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::bank_forks::BankForks;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use jsonrpc_core::futures::sync::mpsc;
|
||||
use jsonrpc_core::Response;
|
||||
use jsonrpc_pubsub::{PubSubHandler, Session};
|
||||
|
@ -276,7 +276,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_signature_subscribe() {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair: alice,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bob = Keypair::new();
|
||||
let bob_pubkey = bob.pubkey();
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
@ -309,7 +313,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_signature_unsubscribe() {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair: alice,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bob_pubkey = Pubkey::new_rand();
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let arc_bank = Arc::new(bank);
|
||||
|
@ -351,7 +359,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_account_subscribe() {
|
||||
let (mut genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair: alice,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
|
||||
// This test depends on the budget program
|
||||
genesis_block
|
||||
|
@ -489,7 +501,11 @@ mod tests {
|
|||
#[test]
|
||||
#[should_panic]
|
||||
fn test_account_confirmations_not_fulfilled() {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair: alice,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let blockhash = bank.last_blockhash();
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
|
@ -514,7 +530,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_account_confirmations() {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair: alice,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let blockhash = bank.last_blockhash();
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
|
|
|
@ -88,14 +88,18 @@ impl Service for JsonRpcService {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::contact_info::ContactInfo;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_sdk::signature::KeypairUtil;
|
||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
||||
|
||||
#[test]
|
||||
fn test_rpc_new() {
|
||||
let (genesis_block, alice) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
let exit = Arc::new(AtomicBool::new(false));
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_invalid_keypair(
|
||||
|
@ -123,7 +127,7 @@ mod tests {
|
|||
.request_processor
|
||||
.read()
|
||||
.unwrap()
|
||||
.get_balance(&alice.pubkey())
|
||||
.get_balance(&mint_keypair.pubkey())
|
||||
);
|
||||
exit.store(true, Ordering::Relaxed);
|
||||
rpc_service.join().unwrap();
|
||||
|
|
|
@ -298,7 +298,7 @@ impl RpcSubscriptions {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use jsonrpc_pubsub::typed::Subscriber;
|
||||
use solana_budget_api;
|
||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||
|
@ -307,7 +307,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_check_account_subscribe() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(100);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(100);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let blockhash = bank.last_blockhash();
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
|
@ -358,7 +362,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_check_program_subscribe() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(100);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(100);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let blockhash = bank.last_blockhash();
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
|
@ -408,7 +416,11 @@ mod tests {
|
|||
}
|
||||
#[test]
|
||||
fn test_check_signature_subscribe() {
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(100);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(100);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let blockhash = bank.last_blockhash();
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
|
|
|
@ -113,7 +113,8 @@ where
|
|||
pub(crate) mod tests {
|
||||
use super::*;
|
||||
use crate::genesis_utils::{
|
||||
create_genesis_block, create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS,
|
||||
create_genesis_block, create_genesis_block_with_leader, GenesisBlockInfo,
|
||||
BOOTSTRAP_LEADER_LAMPORTS,
|
||||
};
|
||||
use hashbrown::HashSet;
|
||||
use solana_sdk::instruction::Instruction;
|
||||
|
@ -131,8 +132,11 @@ pub(crate) mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_vote_account_stakes_at_epoch() {
|
||||
let (genesis_block, _mint_keypair, voting_keypair) =
|
||||
create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
voting_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS);
|
||||
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
||||
|
@ -206,7 +210,11 @@ pub(crate) mod tests {
|
|||
let stake = 42;
|
||||
let validator = Keypair::new();
|
||||
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(10_000);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(10_000);
|
||||
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let vote_id = Pubkey::new_rand();
|
||||
|
|
|
@ -462,7 +462,7 @@ mod tests {
|
|||
use crate::cluster_info::ClusterInfo;
|
||||
use crate::contact_info::ContactInfo;
|
||||
use crate::entry::{make_tiny_test_entries, Entry};
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::service::Service;
|
||||
use rayon::prelude::*;
|
||||
use solana_runtime::bank::Bank;
|
||||
|
@ -485,7 +485,7 @@ mod tests {
|
|||
let exit = Arc::new(AtomicBool::new(false));
|
||||
|
||||
let cluster_info = test_cluster_info(&keypair.pubkey());
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new_from_banks(&[bank], 0)));
|
||||
let (_slot_sender, slot_receiver) = channel();
|
||||
|
@ -518,7 +518,7 @@ mod tests {
|
|||
let storage_keypair = Arc::new(Keypair::new());
|
||||
let exit = Arc::new(AtomicBool::new(false));
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
||||
|
@ -593,7 +593,7 @@ mod tests {
|
|||
let storage_keypair = Arc::new(Keypair::new());
|
||||
let exit = Arc::new(AtomicBool::new(false));
|
||||
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(1000);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000);
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;;
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
||||
|
|
|
@ -183,7 +183,7 @@ pub mod tests {
|
|||
use crate::banking_stage::create_test_recorder;
|
||||
use crate::blocktree::get_tmp_ledger_path;
|
||||
use crate::cluster_info::{ClusterInfo, Node};
|
||||
use crate::genesis_utils::create_genesis_block;
|
||||
use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use crate::storage_stage::STORAGE_ROTATE_TEST_COUNT;
|
||||
use solana_runtime::bank::Bank;
|
||||
use std::sync::atomic::Ordering;
|
||||
|
@ -196,7 +196,7 @@ pub mod tests {
|
|||
let target1 = Node::new_localhost_with_pubkey(&target1_keypair.pubkey());
|
||||
|
||||
let starting_balance = 10_000;
|
||||
let (genesis_block, _mint_keypair) = create_genesis_block(starting_balance);
|
||||
let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(starting_balance);
|
||||
|
||||
let bank_forks = BankForks::new(0, Bank::new(&genesis_block));
|
||||
|
||||
|
|
|
@ -296,7 +296,7 @@ mod test {
|
|||
let me_id = Pubkey::new_rand();
|
||||
let leader_id = Pubkey::new_rand();
|
||||
let bank = Arc::new(Bank::new(
|
||||
&create_genesis_block_with_leader(100, &leader_id, 10).0,
|
||||
&create_genesis_block_with_leader(100, &leader_id, 10).genesis_block,
|
||||
));
|
||||
let cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank));
|
||||
|
||||
|
@ -358,7 +358,7 @@ mod test {
|
|||
.expect("Expected to be able to open database ledger");
|
||||
let blocktree = Arc::new(blocktree);
|
||||
|
||||
let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).0);
|
||||
let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).genesis_block);
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
let repair_strategy = RepairStrategy::RepairAll {
|
||||
bank_forks: bank_forks.clone(),
|
||||
|
@ -445,7 +445,7 @@ mod test {
|
|||
.expect("Expected to be able to open database ledger");
|
||||
|
||||
let blocktree = Arc::new(blocktree);
|
||||
let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).0);
|
||||
let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).genesis_block);
|
||||
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
|
||||
let epoch_schedule = *bank_forks.read().unwrap().working_bank().epoch_schedule();
|
||||
let repair_strategy = RepairStrategy::RepairAll {
|
||||
|
|
|
@ -8,7 +8,7 @@ use solana::cluster_info::{ClusterInfo, Node};
|
|||
use solana::entry::next_entry_mut;
|
||||
use solana::entry::EntrySlice;
|
||||
use solana::fullnode;
|
||||
use solana::genesis_utils::create_genesis_block_with_leader;
|
||||
use solana::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo};
|
||||
use solana::gossip_service::GossipService;
|
||||
use solana::packet::index_blobs;
|
||||
use solana::rpc_subscriptions::RpcSubscriptions;
|
||||
|
@ -75,8 +75,11 @@ fn test_replay() {
|
|||
|
||||
let mint_balance = 10_000;
|
||||
let leader_balance = 100;
|
||||
let (mut genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(mint_balance, &leader.info.id, leader_balance);
|
||||
let GenesisBlockInfo {
|
||||
mut genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(mint_balance, &leader.info.id, leader_balance);
|
||||
genesis_block.ticks_per_slot = 160;
|
||||
genesis_block.slots_per_epoch = MINIMUM_SLOT_LENGTH as u64;
|
||||
let (blocktree_path, blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
|
|
@ -32,7 +32,7 @@ fn bad_arguments() {
|
|||
|
||||
#[test]
|
||||
fn nominal() {
|
||||
let genesis_block = create_genesis_block(100).0;
|
||||
let genesis_block = create_genesis_block(100).genesis_block;
|
||||
let ticks_per_slot = genesis_block.ticks_per_slot;
|
||||
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||
|
|
|
@ -999,7 +999,9 @@ impl Drop for Bank {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::epoch_schedule::MINIMUM_SLOT_LENGTH;
|
||||
use crate::genesis_utils::{create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS};
|
||||
use crate::genesis_utils::{
|
||||
create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS,
|
||||
};
|
||||
use solana_sdk::genesis_block::create_genesis_block;
|
||||
use solana_sdk::hash;
|
||||
use solana_sdk::instruction::InstructionError;
|
||||
|
@ -1014,7 +1016,12 @@ mod tests {
|
|||
let dummy_leader_id = Pubkey::new_rand();
|
||||
let dummy_leader_lamports = BOOTSTRAP_LEADER_LAMPORTS;
|
||||
let mint_lamports = 10_000;
|
||||
let (genesis_block, mint_keypair, voting_keypair) = create_genesis_block_with_leader(
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
voting_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(
|
||||
mint_lamports,
|
||||
&dummy_leader_id,
|
||||
dummy_leader_lamports,
|
||||
|
@ -1230,8 +1237,11 @@ mod tests {
|
|||
#[test]
|
||||
fn test_bank_tx_fee() {
|
||||
let leader = Pubkey::new_rand();
|
||||
let (genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(100, &leader, 3);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(100, &leader, 3);
|
||||
let mut bank = Bank::new(&genesis_block);
|
||||
bank.fee_calculator.lamports_per_signature = 3;
|
||||
|
||||
|
@ -1271,8 +1281,11 @@ mod tests {
|
|||
#[test]
|
||||
fn test_filter_program_errors_and_collect_fee() {
|
||||
let leader = Pubkey::new_rand();
|
||||
let (genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(100, &leader, 3);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(100, &leader, 3);
|
||||
let mut bank = Bank::new(&genesis_block);
|
||||
|
||||
let key = Keypair::new();
|
||||
|
@ -1584,7 +1597,8 @@ mod tests {
|
|||
fn test_bank_epoch_vote_accounts() {
|
||||
let leader_id = Pubkey::new_rand();
|
||||
let leader_lamports = 3;
|
||||
let mut genesis_block = create_genesis_block_with_leader(5, &leader_id, leader_lamports).0;
|
||||
let mut genesis_block =
|
||||
create_genesis_block_with_leader(5, &leader_id, leader_lamports).genesis_block;
|
||||
|
||||
// set this up weird, forces future generation, odd mod(), etc.
|
||||
// this says: "vote_accounts for epoch X should be generated at slot index 3 in epoch X-2...
|
||||
|
@ -1820,8 +1834,11 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_bank_vote_accounts() {
|
||||
let (genesis_block, mint_keypair, _voting_keypair) =
|
||||
create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1);
|
||||
let bank = Arc::new(Bank::new(&genesis_block));
|
||||
|
||||
let vote_accounts = bank.vote_accounts();
|
||||
|
|
|
@ -9,11 +9,17 @@ use solana_vote_api::vote_state;
|
|||
// The default stake placed with the bootstrap leader
|
||||
pub const BOOTSTRAP_LEADER_LAMPORTS: u64 = 42;
|
||||
|
||||
pub struct GenesisBlockInfo {
|
||||
pub genesis_block: GenesisBlock,
|
||||
pub mint_keypair: Keypair,
|
||||
pub voting_keypair: Keypair,
|
||||
}
|
||||
|
||||
pub fn create_genesis_block_with_leader(
|
||||
mint_lamports: u64,
|
||||
bootstrap_leader_id: &Pubkey,
|
||||
bootstrap_leader_stake_lamports: u64,
|
||||
) -> (GenesisBlock, Keypair, Keypair) {
|
||||
) -> GenesisBlockInfo {
|
||||
let mint_keypair = Keypair::new();
|
||||
let voting_keypair = Keypair::new();
|
||||
let staking_keypair = Keypair::new();
|
||||
|
@ -56,5 +62,9 @@ pub fn create_genesis_block_with_leader(
|
|||
&[solana_vote_program!(), solana_stake_program!()],
|
||||
);
|
||||
|
||||
(genesis_block, mint_keypair, voting_keypair)
|
||||
GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
voting_keypair,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ impl<'a, 'b, I: Borrow<Transaction>> Drop for LockedAccountsResults<'a, 'b, I> {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::genesis_utils::create_genesis_block_with_leader;
|
||||
use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo};
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||
use solana_sdk::system_transaction;
|
||||
|
@ -108,8 +108,11 @@ mod tests {
|
|||
|
||||
fn setup() -> (Bank, Vec<Transaction>) {
|
||||
let dummy_leader_id = Pubkey::new_rand();
|
||||
let (genesis_block, mint_keypair, _) =
|
||||
create_genesis_block_with_leader(500, &dummy_leader_id, 100);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block_with_leader(500, &dummy_leader_id, 100);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
|
||||
let pubkey = Pubkey::new_rand();
|
||||
|
|
Loading…
Reference in New Issue