sample_ledger -> sample_blocktree

This commit is contained in:
Greg Fitzgerald 2019-02-22 22:55:46 -07:00
parent 6cd91cd7ec
commit cc10e84ab7
7 changed files with 156 additions and 304 deletions

View File

@ -1,7 +1,7 @@
use assert_cmd::prelude::*;
use solana::blocktree::create_tmp_sample_ledger;
use solana::blocktree::create_tmp_sample_blocktree;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
use std::process::Command;
use std::process::Output;
use std::sync::Arc;
@ -32,15 +32,13 @@ fn bad_arguments() {
#[test]
fn nominal() {
let keypair = Arc::new(Keypair::new());
let ticks_per_slot = DEFAULT_TICKS_PER_SLOT;
let (_mint_keypair, ledger_path, tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
let (genesis_block, _mint_keypair) = GenesisBlock::new_with_leader(100, keypair.pubkey(), 50);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (ledger_path, tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(
"test_ledger_tool_nominal",
100,
&genesis_block,
ticks_per_slot - 2,
keypair.pubkey(),
50,
ticks_per_slot,
);
// Basic validation

View File

@ -15,7 +15,6 @@ use serde::de::DeserializeOwned;
use serde::Serialize;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
use std::borrow::{Borrow, Cow};
@ -1330,31 +1329,6 @@ pub fn create_tmp_sample_blocktree(
)
}
// Deprecated! Please use create_tmp_sample_blocktree() instead.
pub fn create_tmp_sample_ledger(
name: &str,
num_tokens: u64,
num_extra_tokens: u64,
bootstrap_leader_id: Pubkey,
bootstrap_leader_tokens: u64,
ticks_per_slot: u64,
) -> (Keypair, String, u64, u64, Hash, Hash) {
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(num_tokens, bootstrap_leader_id, bootstrap_leader_tokens);
genesis_block.ticks_per_slot = ticks_per_slot;
let (ledger_path, tick_height, entry_height, last_id, last_entry_id) =
create_tmp_sample_blocktree(name, &genesis_block, num_extra_tokens);
(
mint_keypair,
ledger_path,
tick_height,
entry_height,
last_id,
last_entry_id,
)
}
pub fn tmp_copy_ledger(from: &str, name: &str, ticks_per_slot: u64) -> String {
let path = get_tmp_ledger_path(name);

View File

@ -383,7 +383,7 @@ impl Service for ReplayStage {
#[cfg(test)]
mod test {
use super::*;
use crate::blocktree::{create_tmp_sample_ledger, Blocktree, DEFAULT_SLOT_HEIGHT};
use crate::blocktree::{create_tmp_sample_blocktree, Blocktree, DEFAULT_SLOT_HEIGHT};
use crate::cluster_info::{ClusterInfo, Node};
use crate::entry::create_ticks;
use crate::entry::{next_entry_mut, Entry};
@ -421,22 +421,17 @@ mod test {
let leader_scheduler =
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config)));
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, old_leader_id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Create a ledger
let (
mint_keypair,
my_ledger_path,
mut tick_height,
entry_height,
mut last_id,
last_entry_id,
) = create_tmp_sample_ledger(
"test_replay_stage_leader_rotation_exit",
10_000,
0,
old_leader_id,
500,
ticks_per_slot,
);
let (my_ledger_path, mut tick_height, entry_height, mut last_id, last_entry_id) =
create_tmp_sample_blocktree(
"test_replay_stage_leader_rotation_exit",
&genesis_block,
0,
);
info!("my_id: {:?}", my_id);
info!("old_leader_id: {:?}", old_leader_id);
@ -550,21 +545,14 @@ mod test {
// Create keypair for the leader
let leader_id = Keypair::new().pubkey();
let (
_mint_keypair,
my_ledger_path,
tick_height,
_last_entry_height,
_last_id,
_last_entry_id,
) = create_tmp_sample_ledger(
"test_vote_error_replay_stage_correctness",
10_000,
1,
leader_id,
500,
DEFAULT_TICKS_PER_SLOT,
);
let (genesis_block, _mint_keypair) = GenesisBlock::new_with_leader(10_000, leader_id, 500);
let (my_ledger_path, tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(
"test_vote_error_replay_stage_correctness",
&genesis_block,
1,
);
// Set up the cluster info
let cluster_info_me = Arc::new(RwLock::new(ClusterInfo::new(my_node.info.clone())));
@ -644,22 +632,17 @@ mod test {
// Create keypair for the leader
let leader_id = Keypair::new().pubkey();
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, leader_id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Create the ledger
let (
mint_keypair,
my_ledger_path,
tick_height,
genesis_entry_height,
last_id,
last_entry_id,
) = create_tmp_sample_ledger(
"test_vote_error_replay_stage_leader_rotation",
10_000,
1,
leader_id,
500,
ticks_per_slot,
);
let (my_ledger_path, tick_height, genesis_entry_height, last_id, last_entry_id) =
create_tmp_sample_blocktree(
"test_vote_error_replay_stage_leader_rotation",
&genesis_block,
1,
);
let my_keypair = Arc::new(my_keypair);
// Write two entries to the ledger so that the validator is in the active set:

View File

@ -444,7 +444,7 @@ impl Service for StorageStage {
#[cfg(test)]
mod tests {
use crate::blocktree::{create_tmp_sample_ledger, Blocktree, DEFAULT_SLOT_HEIGHT};
use crate::blocktree::{create_tmp_sample_blocktree, Blocktree, DEFAULT_SLOT_HEIGHT};
use crate::cluster_info::{ClusterInfo, NodeInfo};
use crate::entry::{make_tiny_test_entries, Entry};
use crate::service::Service;
@ -454,11 +454,11 @@ mod tests {
get_identity_index_from_signature, StorageStage, STORAGE_ROTATE_TEST_COUNT,
};
use rayon::prelude::*;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::Hash;
use solana_sdk::hash::Hasher;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
use solana_sdk::vote_transaction::VoteTransaction;
use std::cmp::{max, min};
use std::fs::remove_dir_all;
@ -503,16 +503,10 @@ mod tests {
let keypair = Arc::new(Keypair::new());
let exit = Arc::new(AtomicBool::new(false));
let ticks_per_slot = DEFAULT_TICKS_PER_SLOT;
let (_mint, ledger_path, tick_height, genesis_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"storage_stage_process_entries",
1000,
1,
Keypair::new().pubkey(),
1,
ticks_per_slot,
);
let (genesis_block, _mint_keypair) = GenesisBlock::new(1000);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (ledger_path, tick_height, genesis_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("storage_stage_process_entries", &genesis_block, 1);
let entries = make_tiny_test_entries(64);
let blocktree = Blocktree::open_config(&ledger_path, ticks_per_slot).unwrap();
@ -579,16 +573,10 @@ mod tests {
let keypair = Arc::new(Keypair::new());
let exit = Arc::new(AtomicBool::new(false));
let ticks_per_slot = DEFAULT_TICKS_PER_SLOT;
let (_mint, ledger_path, tick_height, genesis_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"storage_stage_process_entries",
1000,
1,
Keypair::new().pubkey(),
1,
ticks_per_slot,
);
let (genesis_block, _mint_keypair) = GenesisBlock::new(1000);
let ticks_per_slot = genesis_block.ticks_per_slot;;
let (ledger_path, tick_height, genesis_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("storage_stage_process_entries", &genesis_block, 1);
let entries = make_tiny_test_entries(128);
let blocktree = Blocktree::open_config(&ledger_path, ticks_per_slot).unwrap();

View File

@ -452,26 +452,21 @@ pub fn retry_get_balance(
}
pub fn new_fullnode(ledger_name: &'static str) -> (Fullnode, NodeInfo, Keypair, String) {
use crate::blocktree::create_tmp_sample_ledger;
use crate::blocktree::create_tmp_sample_blocktree;
use crate::cluster_info::Node;
use crate::fullnode::Fullnode;
use crate::voting_keypair::VotingKeypair;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::signature::KeypairUtil;
let node_keypair = Arc::new(Keypair::new());
let node = Node::new_localhost_with_pubkey(node_keypair.pubkey());
let node_info = node.info.clone();
let fullnode_config = &FullnodeConfig::default();
let (mint_keypair, ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
ledger_name,
10_000,
0,
node_info.id,
42,
fullnode_config.ticks_per_slot(),
);
let (genesis_block, mint_keypair) = GenesisBlock::new_with_leader(10_000, node_info.id, 42);
let (ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(ledger_name, &genesis_block, 0);
let vote_account_keypair = Arc::new(Keypair::new());
let voting_keypair = VotingKeypair::new_local(&vote_account_keypair);

View File

@ -1,7 +1,7 @@
use log::*;
use solana::blob_fetch_stage::BlobFetchStage;
use solana::blocktree::{
create_tmp_sample_ledger, tmp_copy_ledger, Blocktree, DEFAULT_SLOT_HEIGHT,
create_tmp_sample_blocktree, tmp_copy_ledger, Blocktree, DEFAULT_SLOT_HEIGHT,
};
use solana::client::mk_client;
use solana::cluster_info::{Node, NodeInfo};
@ -13,6 +13,7 @@ use solana::result;
use solana::service::Service;
use solana::thin_client::{poll_gossip_for_leader, retry_get_balance};
use solana::voting_keypair::VotingKeypair;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction::SystemTransaction;
@ -45,25 +46,12 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
let bob_pubkey = Keypair::new().pubkey();
let mut ledger_paths = Vec::new();
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.leader_scheduler_config.ticks_per_slot;
let (genesis_block, alice) = GenesisBlock::new_with_leader(10_000, leader_data.id, 500);
let ticks_per_slot = genesis_block.ticks_per_slot;
info!("ticks_per_slot: {}", ticks_per_slot);
let (
alice,
leader_ledger_path,
tick_height,
mut last_entry_height,
_last_id,
mut last_entry_id,
) = create_tmp_sample_ledger(
"multi_node_ledger_window",
10_000,
0,
leader_data.id,
500,
ticks_per_slot,
);
let (leader_ledger_path, tick_height, mut last_entry_height, _last_id, mut last_entry_id) =
create_tmp_sample_blocktree("multi_node_ledger_window", &genesis_block, 0);
ledger_paths.push(leader_ledger_path.clone());
// make a copy at zero
@ -81,7 +69,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
let blocktree = Blocktree::open_config(&leader_ledger_path, ticks_per_slot).unwrap();
let entries = solana::entry::create_ticks(
fullnode_config.leader_scheduler_config.ticks_per_slot - last_entry_height - 1,
genesis_block.ticks_per_slot - last_entry_height - 1,
last_entry_id,
);
blocktree
@ -102,6 +90,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
);
}
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let leader = Fullnode::new(
leader,
@ -185,17 +174,11 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
let bob_pubkey = Keypair::new().pubkey();
let mut ledger_paths = Vec::new();
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (alice, genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"multi_node_validator_catchup_from_zero",
10_000,
0,
leader_data.id,
500,
ticks_per_slot,
);
let (genesis_block, alice) = GenesisBlock::new_with_leader(10_000, leader_data.id, 500);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("multi_node_validator_catchup_from_zero", &genesis_block, 0);
ledger_paths.push(genesis_ledger_path.clone());
let zero_ledger_path = tmp_copy_ledger(
@ -211,6 +194,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
ticks_per_slot,
);
ledger_paths.push(leader_ledger_path.clone());
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let server = Fullnode::new(
leader,
@ -380,23 +364,18 @@ fn test_multi_node_basic() {
let bob_pubkey = Keypair::new().pubkey();
let mut ledger_paths = Vec::new();
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (alice, genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"multi_node_basic",
10_000,
0,
leader_data.id,
500,
ticks_per_slot,
);
let (genesis_block, alice) = GenesisBlock::new_with_leader(10_000, leader_data.id, 500);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("multi_node_basic", &genesis_block, 0);
ledger_paths.push(genesis_ledger_path.clone());
let leader_ledger_path =
tmp_copy_ledger(&genesis_ledger_path, "multi_node_basic", ticks_per_slot);
ledger_paths.push(leader_ledger_path.clone());
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let server = Fullnode::new(
leader,
@ -490,17 +469,11 @@ fn test_boot_validator_from_file() -> result::Result<()> {
let bob_pubkey = Keypair::new().pubkey();
let mut ledger_paths = Vec::new();
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (alice, genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"boot_validator_from_file",
100_000,
0,
leader_pubkey,
1000,
ticks_per_slot,
);
let (genesis_block, alice) = GenesisBlock::new_with_leader(100_000, leader_pubkey, 1000);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("boot_validator_from_file", &genesis_block, 0);
ledger_paths.push(genesis_ledger_path.clone());
let leader_ledger_path = tmp_copy_ledger(
@ -511,6 +484,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
ledger_paths.push(leader_ledger_path.clone());
let leader_data = leader.info.clone();
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let leader_fullnode = Fullnode::new(
leader,
@ -592,19 +566,23 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
// ledger (currently up to WINDOW_SIZE entries)
solana_logger::setup();
let ticks_per_slot = DEFAULT_TICKS_PER_SLOT;
let leader_keypair = Arc::new(Keypair::new());
let initial_leader_balance = 500;
let fullnode_config = FullnodeConfig::default();
let (alice, ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
let (genesis_block, alice) = GenesisBlock::new_with_leader(
100_000 + 500 * solana::window_service::MAX_REPAIR_BACKOFF as u64,
leader_keypair.pubkey(),
initial_leader_balance,
);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(
"leader_restart_validator_start_from_old_ledger",
100_000 + 500 * solana::window_service::MAX_REPAIR_BACKOFF as u64,
&genesis_block,
0,
leader_keypair.pubkey(),
initial_leader_balance,
ticks_per_slot,
);
let bob_pubkey = Keypair::new().pubkey();
{
@ -656,6 +634,7 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
let validator = Node::new_localhost_with_pubkey(keypair.pubkey());
let validator_data = validator.info.clone();
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&keypair);
let val_fullnode = Fullnode::new(
validator,
@ -712,17 +691,12 @@ fn test_multi_node_dynamic_network() {
let leader_pubkey = leader_keypair.pubkey().clone();
let leader = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
let bob_pubkey = Keypair::new().pubkey();
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (alice, genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_ledger(
"multi_node_dynamic_network",
10_000_000,
0,
leader_pubkey,
500,
ticks_per_slot,
);
let (genesis_block, alice) = GenesisBlock::new_with_leader(10_000_000, leader_pubkey, 500);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (genesis_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree("multi_node_dynamic_network", &genesis_block, 0);
let mut ledger_paths = Vec::new();
ledger_paths.push(genesis_ledger_path.clone());
@ -737,6 +711,7 @@ fn test_multi_node_dynamic_network() {
let leader_data = leader.info.clone();
ledger_paths.push(leader_ledger_path.clone());
let fullnode_config = FullnodeConfig::default();
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let server = Fullnode::new(
leader,
@ -943,23 +918,14 @@ fn test_leader_to_validator_transition() {
1,
);
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, leader_info.id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Initialize the leader ledger. Make a mint and a genesis entry
// in the leader ledger
let (
mint_keypair,
leader_ledger_path,
tick_height,
genesis_entry_height,
last_id,
last_entry_id,
) = create_tmp_sample_ledger(
"test_leader_to_validator_transition",
10_000,
0,
leader_info.id,
500,
ticks_per_slot,
);
let (leader_ledger_path, tick_height, genesis_entry_height, last_id, last_entry_id) =
create_tmp_sample_blocktree("test_leader_to_validator_transition", &genesis_block, 0);
// Write the votes entries to the ledger that will cause leader rotation
// to validator_keypair at slot 2
@ -1057,22 +1023,13 @@ fn test_leader_validator_basic() {
1,
);
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, leader_info.id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Make a common mint and a genesis entry for both leader + validator ledgers
let (
mint_keypair,
leader_ledger_path,
tick_height,
genesis_entry_height,
last_id,
last_entry_id,
) = create_tmp_sample_ledger(
"test_leader_validator_basic",
10_000,
0,
leader_info.id,
500,
ticks_per_slot,
);
let (leader_ledger_path, tick_height, genesis_entry_height, last_id, last_entry_id) =
create_tmp_sample_blocktree("test_leader_validator_basic", &genesis_block, 0);
// Add validator vote on tick height 1
let (active_set_entries, _) = make_active_set_entries(
@ -1207,23 +1164,18 @@ fn test_dropped_handoff_recovery() {
fullnode_config.leader_scheduler_config =
LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, slots_per_epoch);
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, bootstrap_leader_info.id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Make a common mint and a genesis entry for both leader + validator's ledgers
let num_ending_ticks = 1;
let (
mint_keypair,
genesis_ledger_path,
tick_height,
genesis_entry_height,
last_id,
last_entry_id,
) = create_tmp_sample_ledger(
"test_dropped_handoff_recovery",
10_000,
num_ending_ticks,
bootstrap_leader_info.id,
500,
ticks_per_slot,
);
let (genesis_ledger_path, tick_height, genesis_entry_height, last_id, last_entry_id) =
create_tmp_sample_blocktree(
"test_dropped_handoff_recovery",
&genesis_block,
num_ending_ticks,
);
// Create the validator keypair that will be the next leader in line
let next_leader_keypair = Arc::new(Keypair::new());
@ -1390,23 +1342,18 @@ fn test_full_leader_validator_network() {
node_keypairs.push_back(validator_keypair);
}
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, bootstrap_leader_info.id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Make a common mint and a genesis entry for both leader + validator's ledgers
let num_ending_ticks = 1;
let (
mint_keypair,
bootstrap_leader_ledger_path,
tick_height,
mut entry_height,
last_id,
mut last_entry_id,
) = create_tmp_sample_ledger(
"test_full_leader_validator_network",
10_000,
num_ending_ticks,
bootstrap_leader_info.id,
500,
ticks_per_slot,
);
let (bootstrap_leader_ledger_path, tick_height, mut entry_height, last_id, mut last_entry_id) =
create_tmp_sample_blocktree(
"test_full_leader_validator_network",
&genesis_block,
num_ending_ticks,
);
// Create a common ledger with entries in the beginnging that will add all the validators
// to the active set for leader election.
@ -1607,22 +1554,18 @@ fn test_broadcast_last_tick() {
fullnode_config.leader_scheduler_config =
LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, ticks_per_epoch);
let (mut genesis_block, _mint_keypair) =
GenesisBlock::new_with_leader(10_000, bootstrap_leader_info.id, 500);
genesis_block.ticks_per_slot = ticks_per_slot;
// Create leader ledger
let (
_mint_keypair,
bootstrap_leader_ledger_path,
_tick_height,
genesis_entry_height,
_last_id,
_last_entry_id,
) = create_tmp_sample_ledger(
"test_broadcast_last_tick",
10_000,
0,
bootstrap_leader_info.id,
500,
ticks_per_slot,
);
) = create_tmp_sample_blocktree("test_broadcast_last_tick", &genesis_block, 0);
let genesis_ledger_len = genesis_entry_height;
debug!("genesis_ledger_len: {}", genesis_ledger_len);
@ -1824,22 +1767,13 @@ fn test_fullnode_rotate(
info!("validator id: {}", validator_keypair.pubkey());
}
let (mut genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(1_000_000_000_000_000_000, leader_keypair.pubkey(), 123);
genesis_block.ticks_per_slot = ticks_per_slot;
// Make a common mint and a genesis entry for both leader + validator ledgers
let (
mint_keypair,
leader_ledger_path,
mut tick_height,
mut last_entry_height,
last_id,
mut last_entry_id,
) = create_tmp_sample_ledger(
"test_fullnode_rotate",
1_000_000_000_000_000_000,
0,
leader_keypair.pubkey(),
123,
ticks_per_slot,
);
let (leader_ledger_path, mut tick_height, mut last_entry_height, last_id, mut last_entry_id) =
create_tmp_sample_blocktree("test_fullnode_rotate", &genesis_block, 0);
assert_eq!(tick_height, 1);
let mut ledger_paths = Vec::new();

View File

@ -7,7 +7,8 @@ extern crate serde_json;
use bincode::deserialize;
use solana::blocktree::{
create_tmp_sample_ledger, get_tmp_ledger_path, tmp_copy_ledger, Blocktree, DEFAULT_SLOT_HEIGHT,
create_tmp_sample_blocktree, get_tmp_ledger_path, tmp_copy_ledger, Blocktree,
DEFAULT_SLOT_HEIGHT,
};
use solana::client::mk_client;
use solana::cluster_info::{ClusterInfo, Node, NodeInfo};
@ -17,6 +18,7 @@ use solana::replicator::Replicator;
use solana::storage_stage::STORAGE_ROTATE_TEST_COUNT;
use solana::streamer::blob_receiver;
use solana::voting_keypair::VotingKeypair;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::Hash;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction::SystemTransaction;
@ -39,24 +41,13 @@ fn test_replicator_startup_basic() {
let leader_info = leader_node.info.clone();
let leader_ledger_path = "replicator_test_leader_ledger";
let mut fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (
mint_keypair,
leader_ledger_path,
_tick_height,
_last_entry_height,
_last_id,
_last_entry_id,
) = create_tmp_sample_ledger(
leader_ledger_path,
1_000_000_000,
0,
leader_info.id,
42,
ticks_per_slot,
);
let (genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(1_000_000_000, leader_info.id, 42);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (leader_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(leader_ledger_path, &genesis_block, 0);
let validator_ledger_path = tmp_copy_ledger(
&leader_ledger_path,
@ -67,6 +58,7 @@ fn test_replicator_startup_basic() {
{
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let mut fullnode_config = FullnodeConfig::default();
fullnode_config.storage_rotate_count = STORAGE_ROTATE_TEST_COUNT;
let leader = Fullnode::new(
leader_node,
@ -294,23 +286,10 @@ fn test_replicator_startup_ledger_hang() {
let leader_info = leader_node.info.clone();
let leader_ledger_path = "replicator_test_leader_ledger";
let fullnode_config = FullnodeConfig::default();
let ticks_per_slot = fullnode_config.ticks_per_slot();
let (
_mint_keypair,
leader_ledger_path,
_tick_height,
_last_entry_height,
_last_id,
_last_entry_id,
) = create_tmp_sample_ledger(
leader_ledger_path,
100,
0,
leader_info.id,
42,
ticks_per_slot,
);
let (genesis_block, _mint_keypair) = GenesisBlock::new_with_leader(100, leader_info.id, 42);
let ticks_per_slot = genesis_block.ticks_per_slot;
let (leader_ledger_path, _tick_height, _last_entry_height, _last_id, _last_entry_id) =
create_tmp_sample_blocktree(leader_ledger_path, &genesis_block, 0);
let validator_ledger_path = tmp_copy_ledger(
&leader_ledger_path,
@ -321,6 +300,7 @@ fn test_replicator_startup_ledger_hang() {
{
let voting_keypair = VotingKeypair::new_local(&leader_keypair);
let fullnode_config = FullnodeConfig::default();
let _ = Fullnode::new(
leader_node,
&leader_keypair,