Unit-tests can use ordinary keypairs

This commit is contained in:
Greg Fitzgerald 2019-02-21 22:43:35 -07:00 committed by Grimes
parent 778583ad08
commit 4602d3bf46
3 changed files with 34 additions and 33 deletions

View File

@ -14,7 +14,6 @@ use crate::service::Service;
use crate::storage_stage::StorageState;
use crate::tpu::Tpu;
use crate::tvu::{Sockets, Tvu, TvuRotationInfo, TvuRotationReceiver};
use crate::voting_keypair::VotingKeypair;
use log::Level;
use solana_metrics::counter::Counter;
use solana_sdk::genesis_block::GenesisBlock;
@ -106,14 +105,17 @@ pub struct Fullnode {
}
impl Fullnode {
pub fn new(
pub fn new<T>(
mut node: Node,
keypair: &Arc<Keypair>,
ledger_path: &str,
voting_keypair: VotingKeypair,
voting_keypair: T,
entrypoint_info_option: Option<&NodeInfo>,
config: &FullnodeConfig,
) -> Self {
) -> Self
where
T: 'static + KeypairUtil + Sync + Send,
{
info!("creating bank...");
let id = keypair.pubkey();
@ -438,7 +440,7 @@ mod tests {
validator_node,
&Arc::new(validator_keypair),
&validator_ledger_path,
VotingKeypair::new(),
Keypair::new(),
Some(&leader_node.info),
&FullnodeConfig::default(),
);
@ -476,7 +478,7 @@ mod tests {
validator_node,
&Arc::new(validator_keypair),
&validator_ledger_path,
VotingKeypair::new(),
Keypair::new(),
Some(&leader_node.info),
&FullnodeConfig::default(),
)
@ -513,8 +515,7 @@ mod tests {
let leader_scheduler_config =
LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, active_window_num_slots);
let bootstrap_leader_keypair = Arc::new(bootstrap_leader_keypair);
let voting_keypair = VotingKeypair::new_local(&bootstrap_leader_keypair);
let voting_keypair = Keypair::new();
let mut fullnode_config = FullnodeConfig::default();
fullnode_config.leader_scheduler_config = leader_scheduler_config;
@ -537,7 +538,7 @@ mod tests {
// Start the bootstrap leader
let bootstrap_leader = Fullnode::new(
bootstrap_leader_node,
&bootstrap_leader_keypair,
&Arc::new(bootstrap_leader_keypair),
&bootstrap_leader_ledger_path,
voting_keypair,
None,
@ -604,7 +605,7 @@ mod tests {
bootstrap_leader_node,
&bootstrap_leader_keypair,
&bootstrap_leader_ledger_path,
VotingKeypair::new(),
Keypair::new(),
Some(&bootstrap_leader_info),
&fullnode_config,
);
@ -620,7 +621,7 @@ mod tests {
validator_node,
&validator_keypair,
&validator_ledger_path,
VotingKeypair::new(),
Keypair::new(),
Some(&bootstrap_leader_info),
&fullnode_config,
);
@ -671,7 +672,7 @@ mod tests {
info!("leader: {:?}", leader_id);
info!("validator: {:?}", validator_info.id);
let voting_keypair = VotingKeypair::new_local(&validator_keypair);
let voting_keypair = Keypair::new();
// Start the validator
let validator = Fullnode::new(

View File

@ -11,13 +11,13 @@ use crate::result::{Error, Result};
use crate::rpc_subscriptions::RpcSubscriptions;
use crate::service::Service;
use crate::tvu::{TvuRotationInfo, TvuRotationSender};
use crate::voting_keypair::VotingKeypair;
use log::Level;
use solana_metrics::counter::Counter;
use solana_metrics::{influxdb, submit};
use solana_runtime::bank::Bank;
use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::KeypairUtil;
use solana_sdk::timing::duration_as_ms;
use solana_sdk::vote_transaction::VoteTransaction;
use std::sync::atomic::{AtomicBool, Ordering};
@ -56,11 +56,11 @@ pub struct ReplayStage {
impl ReplayStage {
/// Process entry blobs, already in order
#[allow(clippy::too_many_arguments)]
fn process_entries(
fn process_entries<T: KeypairUtil>(
mut entries: Vec<Entry>,
bank: &Arc<Bank>,
cluster_info: &Arc<RwLock<ClusterInfo>>,
voting_keypair: Option<&Arc<VotingKeypair>>,
voting_keypair: &Option<Arc<T>>,
ledger_entry_sender: &EntrySender,
current_blob_index: &mut u64,
last_entry_id: &Arc<RwLock<Hash>>,
@ -169,9 +169,9 @@ impl ReplayStage {
}
#[allow(clippy::new_ret_no_self, clippy::too_many_arguments)]
pub fn new(
pub fn new<T>(
my_id: Pubkey,
voting_keypair: Option<Arc<VotingKeypair>>,
voting_keypair: Option<Arc<T>>,
blocktree: Arc<Blocktree>,
bank_forks: &Arc<RwLock<BankForks>>,
bank_forks_info: &[BankForksInfo],
@ -181,7 +181,10 @@ impl ReplayStage {
ledger_signal_receiver: Receiver<bool>,
leader_scheduler: &Arc<RwLock<LeaderScheduler>>,
subscriptions: &Arc<RpcSubscriptions>,
) -> (Self, EntryReceiver) {
) -> (Self, EntryReceiver)
where
T: 'static + KeypairUtil + Send + Sync,
{
let (ledger_entry_sender, ledger_entry_receiver) = channel();
let exit_ = exit.clone();
let leader_scheduler_ = leader_scheduler.clone();
@ -299,7 +302,7 @@ impl ReplayStage {
entries,
&bank,
&cluster_info,
voting_keypair.as_ref(),
&voting_keypair,
&ledger_entry_sender,
&mut current_blob_index,
&last_entry_id,
@ -389,7 +392,6 @@ mod test {
make_active_set_entries, LeaderScheduler, LeaderSchedulerConfig,
};
use crate::replay_stage::ReplayStage;
use crate::voting_keypair::VotingKeypair;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::Hash;
use solana_sdk::signature::{Keypair, KeypairUtil};
@ -569,8 +571,7 @@ mod test {
// Set up the replay stage
let exit = Arc::new(AtomicBool::new(false));
let my_keypair = Arc::new(my_keypair);
let voting_keypair = Arc::new(VotingKeypair::new_local(&my_keypair));
let voting_keypair = Arc::new(Keypair::new());
let (to_leader_sender, _to_leader_receiver) = channel();
{
let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::default()));
@ -792,17 +793,16 @@ mod test {
}
let genesis_block = GenesisBlock::new(10_000).0;
let my_keypair = Arc::new(my_keypair);
let voting_keypair = Arc::new(VotingKeypair::new_local(&my_keypair));
let bank = Arc::new(Bank::new(&genesis_block));
let leader_scheduler_config = LeaderSchedulerConfig::default();
let leader_scheduler = LeaderScheduler::new_with_bank(&leader_scheduler_config, &bank);
let leader_scheduler = Arc::new(RwLock::new(leader_scheduler));
let voting_keypair = Some(Arc::new(Keypair::new()));
let res = ReplayStage::process_entries(
entries.clone(),
&bank,
&cluster_info_me,
Some(&voting_keypair),
&voting_keypair,
&ledger_entry_sender,
&mut current_blob_index,
&Arc::new(RwLock::new(last_entry_id)),
@ -828,7 +828,7 @@ mod test {
entries.clone(),
&bank,
&cluster_info_me,
Some(&voting_keypair),
&voting_keypair,
&ledger_entry_sender,
&mut current_blob_index,
&Arc::new(RwLock::new(last_entry_id)),

View File

@ -24,7 +24,6 @@ use crate::retransmit_stage::RetransmitStage;
use crate::rpc_subscriptions::RpcSubscriptions;
use crate::service::Service;
use crate::storage_stage::{StorageStage, StorageState};
use crate::voting_keypair::VotingKeypair;
use solana_runtime::bank::Bank;
use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey;
@ -67,8 +66,8 @@ impl Tvu {
/// * `sockets` - fetch, repair, and retransmit sockets
/// * `blocktree` - the ledger itself
#[allow(clippy::new_ret_no_self, clippy::too_many_arguments)]
pub fn new(
voting_keypair: Option<Arc<VotingKeypair>>,
pub fn new<T>(
voting_keypair: Option<Arc<T>>,
bank_forks: &Arc<RwLock<BankForks>>,
bank_forks_info: &[BankForksInfo],
cluster_info: &Arc<RwLock<ClusterInfo>>,
@ -81,7 +80,10 @@ impl Tvu {
ledger_signal_receiver: Receiver<bool>,
leader_scheduler: Arc<RwLock<LeaderScheduler>>,
subscriptions: &Arc<RpcSubscriptions>,
) -> Self {
) -> Self
where
T: 'static + KeypairUtil + Sync + Send,
{
let exit = Arc::new(AtomicBool::new(false));
let keypair: Arc<Keypair> = cluster_info
.read()
@ -240,11 +242,9 @@ pub mod tests {
let blocktree_path = get_tmp_ledger_path("test_tvu_exit");
let (blocktree, l_receiver) = Blocktree::open_with_signal(&blocktree_path)
.expect("Expected to successfully open ledger");
let vote_account_keypair = Arc::new(Keypair::new());
let voting_keypair = VotingKeypair::new_local(&vote_account_keypair);
let (sender, _receiver) = channel();
let tvu = Tvu::new(
Some(Arc::new(voting_keypair)),
Some(Arc::new(Keypair::new())),
&Arc::new(RwLock::new(bank_forks)),
&bank_forks_info,
&cref1,