Harmonize Fullnode::new* function arguments

This commit is contained in:
Michael Vines 2019-01-28 20:10:38 -08:00
parent d8861c2a5f
commit 12cddf725e
5 changed files with 171 additions and 185 deletions

View File

@ -254,12 +254,14 @@ fn main() {
let mut fullnode = Fullnode::new( let mut fullnode = Fullnode::new(
node, node,
ledger_path,
keypair.clone(), keypair.clone(),
signer_option, ledger_path,
cluster_entrypoint,
no_sigverify,
Arc::new(RwLock::new(leader_scheduler)), Arc::new(RwLock::new(leader_scheduler)),
signer_option,
cluster_entrypoint
.map(|i| NodeInfo::new_entry_point(&i))
.as_ref(),
no_sigverify,
Some(rpc_port), Some(rpc_port),
); );

View File

@ -80,27 +80,28 @@ pub struct Fullnode {
pub role_notifiers: (TvuRotationReceiver, TpuRotationReceiver), pub role_notifiers: (TvuRotationReceiver, TpuRotationReceiver),
} }
impl Fullnode {
pub fn new(
node: Node,
ledger_path: &str,
keypair: Arc<Keypair>,
vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_addr: Option<SocketAddr>,
sigverify_disabled: bool,
leader_scheduler: Arc<RwLock<LeaderScheduler>>,
rpc_port: Option<u16>,
) -> Self {
// TODO: remove this, temporary parameter to configure // TODO: remove this, temporary parameter to configure
// storage amount differently for test configurations // storage amount differently for test configurations
// so tests don't take forever to run. // so tests don't take forever to run.
const NUM_HASHES_FOR_STORAGE_ROTATE: u64 = 1024; const NUM_HASHES_FOR_STORAGE_ROTATE: u64 = 1024;
impl Fullnode {
pub fn new(
node: Node,
keypair: Arc<Keypair>,
ledger_path: &str,
leader_scheduler: Arc<RwLock<LeaderScheduler>>,
vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_info_option: Option<&NodeInfo>,
sigverify_disabled: bool,
rpc_port: Option<u16>,
) -> Self {
Self::new_with_storage_rotate( Self::new_with_storage_rotate(
node, node,
ledger_path,
keypair, keypair,
ledger_path,
vote_signer, vote_signer,
entrypoint_addr, entrypoint_info_option,
sigverify_disabled, sigverify_disabled,
leader_scheduler, leader_scheduler,
rpc_port, rpc_port,
@ -110,44 +111,27 @@ impl Fullnode {
pub fn new_with_storage_rotate( pub fn new_with_storage_rotate(
node: Node, node: Node,
ledger_path: &str,
keypair: Arc<Keypair>, keypair: Arc<Keypair>,
ledger_path: &str,
vote_signer: Option<Arc<VoteSignerProxy>>, vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_addr: Option<SocketAddr>, entrypoint_info_option: Option<&NodeInfo>,
sigverify_disabled: bool, sigverify_disabled: bool,
leader_scheduler: Arc<RwLock<LeaderScheduler>>, leader_scheduler: Arc<RwLock<LeaderScheduler>>,
rpc_port: Option<u16>, rpc_port: Option<u16>,
storage_rotate_count: u64, storage_rotate_count: u64,
) -> Self { ) -> Self {
info!("creating bank...");
let (genesis_block, db_ledger) = Self::make_db_ledger(ledger_path); let (genesis_block, db_ledger) = Self::make_db_ledger(ledger_path);
let (bank, entry_height, last_entry_id) = let (bank, entry_height, last_entry_id) =
Self::new_bank_from_db_ledger(&genesis_block, &db_ledger, leader_scheduler); Self::new_bank_from_db_ledger(&genesis_block, &db_ledger, leader_scheduler);
info!("creating networking stack...");
let local_gossip_addr = node.sockets.gossip.local_addr().unwrap();
info!(
"starting... local gossip address: {} (advertising {})",
local_gossip_addr, node.info.gossip
);
let mut rpc_addr = node.info.rpc;
if let Some(port) = rpc_port {
rpc_addr.set_port(port);
}
info!("node rpc address: {}", rpc_addr);
info!("node entrypoint_addr: {:?}", entrypoint_addr);
let entrypoint_info = entrypoint_addr.map(|i| NodeInfo::new_entry_point(&i));
Self::new_with_bank_and_db_ledger( Self::new_with_bank_and_db_ledger(
node,
keypair, keypair,
vote_signer,
bank, bank,
&db_ledger, &db_ledger,
entry_height, entry_height,
&last_entry_id, &last_entry_id,
node, vote_signer,
entrypoint_info.as_ref(), entrypoint_info_option,
sigverify_disabled, sigverify_disabled,
rpc_port, rpc_port,
storage_rotate_count, storage_rotate_count,
@ -156,44 +140,42 @@ impl Fullnode {
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub fn new_with_bank( pub fn new_with_bank(
node: Node,
keypair: Arc<Keypair>, keypair: Arc<Keypair>,
vote_signer: Option<Arc<VoteSignerProxy>>,
bank: Bank,
ledger_path: &str, ledger_path: &str,
bank: Bank,
entry_height: u64, entry_height: u64,
last_entry_id: &Hash, last_entry_id: &Hash,
node: Node, vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_info_option: Option<&NodeInfo>, entrypoint_info_option: Option<&NodeInfo>,
sigverify_disabled: bool, sigverify_disabled: bool,
rpc_port: Option<u16>, rpc_port: Option<u16>,
storage_rotate_count: u64,
) -> Self { ) -> Self {
let (_genesis_block, db_ledger) = Self::make_db_ledger(ledger_path); let (_genesis_block, db_ledger) = Self::make_db_ledger(ledger_path);
Self::new_with_bank_and_db_ledger( Self::new_with_bank_and_db_ledger(
node,
keypair, keypair,
vote_signer,
bank, bank,
&db_ledger, &db_ledger,
entry_height, entry_height,
&last_entry_id, &last_entry_id,
node, vote_signer,
entrypoint_info_option, entrypoint_info_option,
sigverify_disabled, sigverify_disabled,
rpc_port, rpc_port,
storage_rotate_count, NUM_HASHES_FOR_STORAGE_ROTATE,
) )
} }
/// Create a fullnode instance acting as a leader or validator.
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub fn new_with_bank_and_db_ledger( fn new_with_bank_and_db_ledger(
mut node: Node,
keypair: Arc<Keypair>, keypair: Arc<Keypair>,
vote_signer: Option<Arc<VoteSignerProxy>>,
bank: Bank, bank: Bank,
db_ledger: &Arc<DbLedger>, db_ledger: &Arc<DbLedger>,
entry_height: u64, entry_height: u64,
last_entry_id: &Hash, last_entry_id: &Hash,
mut node: Node, vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_info_option: Option<&NodeInfo>, entrypoint_info_option: Option<&NodeInfo>,
sigverify_disabled: bool, sigverify_disabled: bool,
rpc_port: Option<u16>, rpc_port: Option<u16>,
@ -201,8 +183,6 @@ impl Fullnode {
) -> Self { ) -> Self {
let mut rpc_addr = node.info.rpc; let mut rpc_addr = node.info.rpc;
let mut rpc_pubsub_addr = node.info.rpc_pubsub; let mut rpc_pubsub_addr = node.info.rpc_pubsub;
// Use custom RPC port, if provided (`Some(port)`)
// RPC port may be any valid open port on the node
// If rpc_port == `None`, node will listen on the ports set in NodeInfo // If rpc_port == `None`, node will listen on the ports set in NodeInfo
if let Some(port) = rpc_port { if let Some(port) = rpc_port {
rpc_addr.set_port(port); rpc_addr.set_port(port);
@ -211,10 +191,19 @@ impl Fullnode {
node.info.rpc_pubsub = rpc_pubsub_addr; node.info.rpc_pubsub = rpc_pubsub_addr;
} }
info!("node rpc address: {}", node.info.rpc);
info!("node entrypoint_info: {:?}", entrypoint_info_option);
let local_gossip_addr = node.sockets.gossip.local_addr().unwrap();
info!(
"node local gossip address: {} (advertising {})",
local_gossip_addr, node.info.gossip
);
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let bank = Arc::new(bank); let bank = Arc::new(bank);
node.info.wallclock = timestamp(); node.info.wallclock = timestamp();
assert_eq!(keypair.pubkey(), node.info.id);
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_keypair( let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_keypair(
node.info, node.info,
keypair.clone(), keypair.clone(),
@ -274,7 +263,8 @@ impl Fullnode {
cluster_info.write().unwrap().set_leader(scheduled_leader); cluster_info.write().unwrap().set_leader(scheduled_leader);
// todo always start leader and validator, keep leader side switching between tpu forwarder and regular tpu. // TODO: always start leader and validator, keep leader side switching between tpu
// forwarder and regular tpu.
let sockets = Sockets { let sockets = Sockets {
repair: node repair: node
.sockets .sockets
@ -294,7 +284,7 @@ impl Fullnode {
.collect(), .collect(),
}; };
//setup channels for rotation indications // Setup channels for rotation indications
let (to_leader_sender, to_leader_receiver) = channel(); let (to_leader_sender, to_leader_receiver) = channel();
let (to_validator_sender, to_validator_receiver) = channel(); let (to_validator_sender, to_validator_receiver) = channel();
@ -442,7 +432,7 @@ impl Fullnode {
} }
} }
//used for notifying many nodes in parallel to exit // Used for notifying many nodes in parallel to exit
pub fn exit(&self) { pub fn exit(&self) {
self.exit.store(true, Ordering::Relaxed); self.exit.store(true, Ordering::Relaxed);
if let Some(ref rpc_service) = self.rpc_service { if let Some(ref rpc_service) = self.rpc_service {
@ -534,7 +524,6 @@ mod tests {
make_active_set_entries, LeaderScheduler, LeaderSchedulerConfig, make_active_set_entries, LeaderScheduler, LeaderSchedulerConfig,
}; };
use crate::service::Service; use crate::service::Service;
use crate::storage_stage::STORAGE_ROTATE_TEST_COUNT;
use crate::streamer::responder; use crate::streamer::responder;
use crate::tpu::TpuReturnType; use crate::tpu::TpuReturnType;
use crate::tvu::TvuReturnType; use crate::tvu::TvuReturnType;
@ -565,17 +554,16 @@ mod tests {
let keypair = Arc::new(keypair); let keypair = Arc::new(keypair);
let signer = VoteSignerProxy::new_local(&keypair); let signer = VoteSignerProxy::new_local(&keypair);
let v = Fullnode::new_with_bank( let v = Fullnode::new_with_bank(
tn,
keypair, keypair,
Some(Arc::new(signer)),
bank,
&validator_ledger_path, &validator_ledger_path,
bank,
entry_height, entry_height,
&last_id, &last_id,
tn, Some(Arc::new(signer)),
Some(&entry), Some(&entry),
false, false,
None, None,
STORAGE_ROTATE_TEST_COUNT,
); );
v.close().unwrap(); v.close().unwrap();
remove_dir_all(validator_ledger_path).unwrap(); remove_dir_all(validator_ledger_path).unwrap();
@ -608,17 +596,16 @@ mod tests {
let keypair = Arc::new(keypair); let keypair = Arc::new(keypair);
let signer = VoteSignerProxy::new_local(&keypair); let signer = VoteSignerProxy::new_local(&keypair);
Fullnode::new_with_bank( Fullnode::new_with_bank(
tn,
keypair, keypair,
Some(Arc::new(signer)),
bank,
&validator_ledger_path, &validator_ledger_path,
bank,
entry_height, entry_height,
&last_id, &last_id,
tn, Some(Arc::new(signer)),
Some(&entry), Some(&entry),
false, false,
None, None,
STORAGE_ROTATE_TEST_COUNT,
) )
}) })
.collect(); .collect();
@ -683,12 +670,12 @@ mod tests {
// Start up the leader // Start up the leader
let mut bootstrap_leader = Fullnode::new( let mut bootstrap_leader = Fullnode::new(
bootstrap_leader_node, bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair, bootstrap_leader_keypair,
Some(Arc::new(signer)), &bootstrap_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -787,12 +774,12 @@ mod tests {
let vote_signer = VoteSignerProxy::new_local(&bootstrap_leader_keypair); let vote_signer = VoteSignerProxy::new_local(&bootstrap_leader_keypair);
let bootstrap_leader = Fullnode::new( let bootstrap_leader = Fullnode::new(
bootstrap_leader_node, bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair, bootstrap_leader_keypair,
Some(Arc::new(vote_signer)), &bootstrap_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(vote_signer)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -801,12 +788,12 @@ mod tests {
// Test that a node knows to transition to a leader based on parsing the ledger // Test that a node knows to transition to a leader based on parsing the ledger
let validator = Fullnode::new( let validator = Fullnode::new(
validator_node, validator_node,
&validator_ledger_path,
validator_keypair, validator_keypair,
Some(Arc::new(validator_vote_account_id)), &validator_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(validator_vote_account_id)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -829,7 +816,6 @@ mod tests {
let leader_keypair = Keypair::new(); let leader_keypair = Keypair::new();
let leader_node = Node::new_localhost_with_pubkey(leader_keypair.pubkey()); let leader_node = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
let leader_id = leader_node.info.id; let leader_id = leader_node.info.id;
let leader_gossip = leader_node.info.gossip;
// Create validator identity // Create validator identity
let num_ending_ticks = 1; let num_ending_ticks = 1;
@ -897,12 +883,12 @@ mod tests {
// Start the validator // Start the validator
let validator = Fullnode::new( let validator = Fullnode::new(
validator_node, validator_node,
&validator_ledger_path,
validator_keypair, validator_keypair,
Some(Arc::new(vote_signer)), &validator_ledger_path,
Some(leader_gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(vote_signer)),
Some(&leader_node.info),
false,
None, None,
); );

View File

@ -444,7 +444,6 @@ pub fn new_fullnode(
use crate::cluster_info::Node; use crate::cluster_info::Node;
use crate::db_ledger::create_tmp_ledger; use crate::db_ledger::create_tmp_ledger;
use crate::leader_scheduler::LeaderScheduler; use crate::leader_scheduler::LeaderScheduler;
use crate::storage_stage::STORAGE_ROTATE_TEST_COUNT;
use crate::vote_signer_proxy::VoteSignerProxy; use crate::vote_signer_proxy::VoteSignerProxy;
use solana_sdk::signature::KeypairUtil; use solana_sdk::signature::KeypairUtil;
@ -465,17 +464,16 @@ pub fn new_fullnode(
let vote_signer = VoteSignerProxy::new_local(&vote_account_keypair); let vote_signer = VoteSignerProxy::new_local(&vote_account_keypair);
let last_id = bank.last_id(); let last_id = bank.last_id();
let server = Fullnode::new_with_bank( let server = Fullnode::new_with_bank(
leader,
leader_keypair, leader_keypair,
Some(Arc::new(vote_signer)),
bank,
&ledger_path, &ledger_path,
bank,
entry_height, entry_height,
&last_id, &last_id,
leader, Some(Arc::new(vote_signer)),
None, None,
false, false,
None, None,
STORAGE_ROTATE_TEST_COUNT,
); );
(server, leader_data, genesis_block, alice, ledger_path) (server, leader_data, genesis_block, alice, ledger_path)

View File

@ -156,14 +156,14 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let leader = Fullnode::new( let leader = Fullnode::new(
leader, leader,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
None,
false,
None, None,
); );
@ -176,14 +176,14 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let validator = Fullnode::new( let validator = Fullnode::new(
validator, validator,
&zero_ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &zero_ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
@ -260,14 +260,14 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let server = Fullnode::new( let server = Fullnode::new(
leader, leader,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
None,
false,
None, None,
); );
@ -294,14 +294,14 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let val = Fullnode::new( let val = Fullnode::new(
validator, validator,
&ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
nodes.push(val); nodes.push(val);
@ -357,14 +357,14 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
let val = Fullnode::new( let val = Fullnode::new(
validator, validator,
&zero_ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &zero_ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
nodes.push(val); nodes.push(val);
@ -447,14 +447,14 @@ fn test_multi_node_basic() {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let server = Fullnode::new( let server = Fullnode::new(
leader, leader,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
None,
false,
None, None,
); );
@ -477,14 +477,14 @@ fn test_multi_node_basic() {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let val = Fullnode::new( let val = Fullnode::new(
validator, validator,
&ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
nodes.push(val); nodes.push(val);
@ -557,14 +557,14 @@ fn test_boot_validator_from_file() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let leader_fullnode = Fullnode::new( let leader_fullnode = Fullnode::new(
leader, leader,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
None,
false,
None, None,
); );
let leader_balance = let leader_balance =
@ -582,14 +582,14 @@ fn test_boot_validator_from_file() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let val_fullnode = Fullnode::new( let val_fullnode = Fullnode::new(
validator, validator,
&ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
let mut client = mk_client(&validator_data); let mut client = mk_client(&validator_data);
@ -615,14 +615,14 @@ fn create_leader(
let leader_data = leader.info.clone(); let leader_data = leader.info.clone();
let leader_fullnode = Fullnode::new( let leader_fullnode = Fullnode::new(
leader, leader,
&ledger_path,
leader_keypair, leader_keypair,
Some(signer), &ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_data.id, leader_data.id,
))), ))),
Some(signer),
None,
false,
None, None,
); );
(leader_data, leader_fullnode) (leader_data, leader_fullnode)
@ -692,14 +692,14 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let val_fullnode = Fullnode::new( let val_fullnode = Fullnode::new(
validator, validator,
&stale_ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &stale_ledger_path,
Some(leader_data.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_data.id, leader_data.id,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
false,
None, None,
); );
@ -761,14 +761,14 @@ fn test_multi_node_dynamic_network() {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let server = Fullnode::new( let server = Fullnode::new(
leader, leader,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
true,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
None,
true,
None, None,
); );
info!( info!(
@ -836,14 +836,14 @@ fn test_multi_node_dynamic_network() {
let signer_proxy = VoteSignerProxy::new_local(&keypair); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let val = Fullnode::new( let val = Fullnode::new(
validator, validator,
&ledger_path,
keypair, keypair,
Some(Arc::new(signer_proxy)), &ledger_path,
Some(leader_data.gossip),
true,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_pubkey, leader_pubkey,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_data),
true,
None, None,
); );
(rd, val) (rd, val)
@ -1019,12 +1019,12 @@ fn test_leader_to_validator_transition() {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let mut leader = Fullnode::new( let mut leader = Fullnode::new(
leader_node, leader_node,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
Some(leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&leader_info),
false,
None, None,
); );
@ -1174,12 +1174,12 @@ fn test_leader_validator_basic() {
let signer_proxy = VoteSignerProxy::new_local(&validator_keypair); let signer_proxy = VoteSignerProxy::new_local(&validator_keypair);
let mut validator = Fullnode::new( let mut validator = Fullnode::new(
validator_node, validator_node,
&validator_ledger_path,
validator_keypair, validator_keypair,
Some(Arc::new(signer_proxy)), &validator_ledger_path,
Some(leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&leader_info),
false,
None, None,
); );
@ -1187,12 +1187,12 @@ fn test_leader_validator_basic() {
let signer_proxy = VoteSignerProxy::new_local(&leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&leader_keypair);
let mut leader = Fullnode::new( let mut leader = Fullnode::new(
leader_node, leader_node,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
Some(leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&leader_info),
false,
None, None,
); );
@ -1382,12 +1382,12 @@ fn test_dropped_handoff_recovery() {
ledger_paths.push(bootstrap_leader_ledger_path.clone()); ledger_paths.push(bootstrap_leader_ledger_path.clone());
let bootstrap_leader = Fullnode::new( let bootstrap_leader = Fullnode::new(
bootstrap_leader_node, bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair, bootstrap_leader_keypair,
Some(Arc::new(signer_proxy)), &bootstrap_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -1395,22 +1395,22 @@ fn test_dropped_handoff_recovery() {
// Start up the validators other than the "next_leader" validator // Start up the validators other than the "next_leader" validator
for i in 0..(N - 1) { for i in 0..(N - 1) {
let kp = Arc::new(Keypair::new()); let keypair = Arc::new(Keypair::new());
let validator_ledger_path = let validator_ledger_path =
tmp_copy_ledger(&genesis_ledger_path, "test_dropped_handoff_recovery"); tmp_copy_ledger(&genesis_ledger_path, "test_dropped_handoff_recovery");
ledger_paths.push(validator_ledger_path.clone()); ledger_paths.push(validator_ledger_path.clone());
let validator_id = kp.pubkey(); let validator_id = keypair.pubkey();
info!("validator {}: {}", i, validator_id); info!("validator {}: {}", i, validator_id);
let validator_node = Node::new_localhost_with_pubkey(validator_id); let validator_node = Node::new_localhost_with_pubkey(validator_id);
let signer_proxy = VoteSignerProxy::new_local(&kp); let signer_proxy = VoteSignerProxy::new_local(&keypair);
let validator = Fullnode::new( let validator = Fullnode::new(
validator_node, validator_node,
keypair,
&validator_ledger_path, &validator_ledger_path,
kp,
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -1432,12 +1432,12 @@ fn test_dropped_handoff_recovery() {
let signer_proxy = VoteSignerProxy::new_local(&next_leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&next_leader_keypair);
let next_leader = Fullnode::new( let next_leader = Fullnode::new(
next_leader_node, next_leader_node,
&next_leader_ledger_path,
next_leader_keypair, next_leader_keypair,
Some(Arc::new(signer_proxy)), &next_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -1582,12 +1582,12 @@ fn test_full_leader_validator_network() {
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))); Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config)));
let validator = Fullnode::new( let validator = Fullnode::new(
validator_node, validator_node,
&validator_ledger_path,
kp.clone(), kp.clone(),
Some(Arc::new(signer_proxy)), &validator_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
leader_scheduler.clone(), leader_scheduler.clone(),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -1600,12 +1600,12 @@ fn test_full_leader_validator_network() {
let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))); let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config)));
let bootstrap_leader = Fullnode::new( let bootstrap_leader = Fullnode::new(
bootstrap_leader_node, bootstrap_leader_node,
&bootstrap_leader_ledger_path,
leader_keypair.clone(), leader_keypair.clone(),
Some(Arc::new(signer_proxy)), &bootstrap_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
leader_scheduler.clone(), leader_scheduler.clone(),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );
@ -1778,12 +1778,12 @@ fn test_broadcast_last_tick() {
let signer_proxy = VoteSignerProxy::new_local(&bootstrap_leader_keypair); let signer_proxy = VoteSignerProxy::new_local(&bootstrap_leader_keypair);
let mut bootstrap_leader = Fullnode::new( let mut bootstrap_leader = Fullnode::new(
bootstrap_leader_node, bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair, bootstrap_leader_keypair,
Some(Arc::new(signer_proxy)), &bootstrap_leader_ledger_path,
Some(bootstrap_leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))), Arc::new(RwLock::new(LeaderScheduler::new(&leader_scheduler_config))),
Some(Arc::new(signer_proxy)),
Some(&bootstrap_leader_info),
false,
None, None,
); );

View File

@ -51,8 +51,8 @@ fn test_replicator_startup() {
let leader = Fullnode::new_with_storage_rotate( let leader = Fullnode::new_with_storage_rotate(
leader_node, leader_node,
&leader_ledger_path,
leader_keypair, leader_keypair,
&leader_ledger_path,
Some(Arc::new(signer_proxy)), Some(Arc::new(signer_proxy)),
None, None,
false, false,
@ -81,10 +81,10 @@ fn test_replicator_startup() {
let validator = Fullnode::new_with_storage_rotate( let validator = Fullnode::new_with_storage_rotate(
validator_node, validator_node,
&validator_ledger_path,
validator_keypair, validator_keypair,
&validator_ledger_path,
Some(Arc::new(signer_proxy)), Some(Arc::new(signer_proxy)),
Some(leader_info.gossip), Some(&leader_info),
false, false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_info.id, leader_info.id,
@ -278,14 +278,14 @@ fn test_replicator_startup_ledger_hang() {
let _ = Fullnode::new( let _ = Fullnode::new(
leader_node, leader_node,
&leader_ledger_path,
leader_keypair, leader_keypair,
Some(Arc::new(signer_proxy)), &leader_ledger_path,
None,
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_info.id.clone(), leader_info.id.clone(),
))), ))),
Some(Arc::new(signer_proxy)),
None,
false,
None, None,
); );
@ -295,14 +295,14 @@ fn test_replicator_startup_ledger_hang() {
let _ = Fullnode::new( let _ = Fullnode::new(
validator_node, validator_node,
&validator_ledger_path,
validator_keypair, validator_keypair,
Some(Arc::new(signer_proxy)), &validator_ledger_path,
Some(leader_info.gossip),
false,
Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader( Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
leader_info.id, leader_info.id,
))), ))),
Some(Arc::new(signer_proxy)),
Some(&leader_info),
false,
None, None,
); );