Remove ValidatorConfig derive Clone, and fix local-cluster tests (#15647)
* Remove ValidatorConfig derive Clone * Add local-cluster ValidatorConfig helpers * Fix benches
This commit is contained in:
parent
b20bf8ebb0
commit
a4f0033bd7
|
@ -561,7 +561,10 @@ fn main() {
|
||||||
pub mod test {
|
pub mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use solana_core::validator::ValidatorConfig;
|
use solana_core::validator::ValidatorConfig;
|
||||||
use solana_local_cluster::local_cluster::{ClusterConfig, LocalCluster};
|
use solana_local_cluster::{
|
||||||
|
local_cluster::{ClusterConfig, LocalCluster},
|
||||||
|
validator_configs::make_identical_validator_configs,
|
||||||
|
};
|
||||||
use solana_sdk::poh_config::PohConfig;
|
use solana_sdk::poh_config::PohConfig;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -573,7 +576,7 @@ pub mod test {
|
||||||
cluster_lamports: 10_000_000,
|
cluster_lamports: 10_000_000,
|
||||||
poh_config: PohConfig::new_sleep(Duration::from_millis(50)),
|
poh_config: PohConfig::new_sleep(Duration::from_millis(50)),
|
||||||
node_stakes: vec![100; num_nodes],
|
node_stakes: vec![100; num_nodes],
|
||||||
validator_configs: vec![validator_config; num_nodes],
|
validator_configs: make_identical_validator_configs(&validator_config, num_nodes),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,23 @@
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana_bench_exchange::bench::{airdrop_lamports, do_bench_exchange, Config};
|
use solana_bench_exchange::bench::{airdrop_lamports, do_bench_exchange, Config};
|
||||||
use solana_core::gossip_service::{discover_cluster, get_multi_client};
|
use solana_core::{
|
||||||
use solana_core::validator::ValidatorConfig;
|
gossip_service::{discover_cluster, get_multi_client},
|
||||||
use solana_exchange_program::exchange_processor::process_instruction;
|
validator::ValidatorConfig,
|
||||||
use solana_exchange_program::id;
|
};
|
||||||
use solana_exchange_program::solana_exchange_program;
|
use solana_exchange_program::{
|
||||||
|
exchange_processor::process_instruction, id, solana_exchange_program,
|
||||||
|
};
|
||||||
use solana_faucet::faucet::run_local_faucet_with_port;
|
use solana_faucet::faucet::run_local_faucet_with_port;
|
||||||
use solana_local_cluster::local_cluster::{ClusterConfig, LocalCluster};
|
use solana_local_cluster::{
|
||||||
use solana_runtime::bank::Bank;
|
local_cluster::{ClusterConfig, LocalCluster},
|
||||||
use solana_runtime::bank_client::BankClient;
|
validator_configs::make_identical_validator_configs,
|
||||||
use solana_sdk::genesis_config::create_genesis_config;
|
};
|
||||||
use solana_sdk::signature::{Keypair, Signer};
|
use solana_runtime::{bank::Bank, bank_client::BankClient};
|
||||||
use std::process::exit;
|
use solana_sdk::{
|
||||||
use std::sync::mpsc::channel;
|
genesis_config::create_genesis_config,
|
||||||
use std::time::Duration;
|
signature::{Keypair, Signer},
|
||||||
|
};
|
||||||
|
use std::{process::exit, sync::mpsc::channel, time::Duration};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
#[ignore]
|
||||||
|
@ -44,7 +48,7 @@ fn test_exchange_local_cluster() {
|
||||||
let cluster = LocalCluster::new(&mut ClusterConfig {
|
let cluster = LocalCluster::new(&mut ClusterConfig {
|
||||||
node_stakes: vec![100_000; NUM_NODES],
|
node_stakes: vec![100_000; NUM_NODES],
|
||||||
cluster_lamports: 100_000_000_000_000,
|
cluster_lamports: 100_000_000_000_000,
|
||||||
validator_configs: vec![ValidatorConfig::default(); NUM_NODES],
|
validator_configs: make_identical_validator_configs(&ValidatorConfig::default(), NUM_NODES),
|
||||||
native_instruction_processors: [solana_exchange_program!()].to_vec(),
|
native_instruction_processors: [solana_exchange_program!()].to_vec(),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,15 +1,21 @@
|
||||||
#![allow(clippy::integer_arithmetic)]
|
#![allow(clippy::integer_arithmetic)]
|
||||||
use serial_test::serial;
|
use serial_test::serial;
|
||||||
use solana_bench_tps::bench::{do_bench_tps, generate_and_fund_keypairs};
|
use solana_bench_tps::{
|
||||||
use solana_bench_tps::cli::Config;
|
bench::{do_bench_tps, generate_and_fund_keypairs},
|
||||||
|
cli::Config,
|
||||||
|
};
|
||||||
use solana_client::thin_client::create_client;
|
use solana_client::thin_client::create_client;
|
||||||
use solana_core::cluster_info::VALIDATOR_PORT_RANGE;
|
use solana_core::{cluster_info::VALIDATOR_PORT_RANGE, validator::ValidatorConfig};
|
||||||
use solana_core::validator::ValidatorConfig;
|
|
||||||
use solana_faucet::faucet::run_local_faucet_with_port;
|
use solana_faucet::faucet::run_local_faucet_with_port;
|
||||||
use solana_local_cluster::local_cluster::{ClusterConfig, LocalCluster};
|
use solana_local_cluster::{
|
||||||
|
local_cluster::{ClusterConfig, LocalCluster},
|
||||||
|
validator_configs::make_identical_validator_configs,
|
||||||
|
};
|
||||||
use solana_sdk::signature::{Keypair, Signer};
|
use solana_sdk::signature::{Keypair, Signer};
|
||||||
use std::sync::{mpsc::channel, Arc};
|
use std::{
|
||||||
use std::time::Duration;
|
sync::{mpsc::channel, Arc},
|
||||||
|
time::Duration,
|
||||||
|
};
|
||||||
|
|
||||||
fn test_bench_tps_local_cluster(config: Config) {
|
fn test_bench_tps_local_cluster(config: Config) {
|
||||||
let native_instruction_processors = vec![];
|
let native_instruction_processors = vec![];
|
||||||
|
@ -19,7 +25,7 @@ fn test_bench_tps_local_cluster(config: Config) {
|
||||||
let cluster = LocalCluster::new(&mut ClusterConfig {
|
let cluster = LocalCluster::new(&mut ClusterConfig {
|
||||||
node_stakes: vec![999_990; NUM_NODES],
|
node_stakes: vec![999_990; NUM_NODES],
|
||||||
cluster_lamports: 200_000_000,
|
cluster_lamports: 200_000_000,
|
||||||
validator_configs: vec![ValidatorConfig::default(); NUM_NODES],
|
validator_configs: make_identical_validator_configs(&ValidatorConfig::default(), NUM_NODES),
|
||||||
native_instruction_processors,
|
native_instruction_processors,
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
});
|
});
|
||||||
|
|
|
@ -79,7 +79,7 @@ use std::{
|
||||||
|
|
||||||
const MAX_COMPLETED_DATA_SETS_IN_CHANNEL: usize = 100_000;
|
const MAX_COMPLETED_DATA_SETS_IN_CHANNEL: usize = 100_000;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ValidatorConfig {
|
pub struct ValidatorConfig {
|
||||||
pub dev_halt_at_slot: Option<Slot>,
|
pub dev_halt_at_slot: Option<Slot>,
|
||||||
pub expected_genesis_hash: Option<Hash>,
|
pub expected_genesis_hash: Option<Hash>,
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
pub mod cluster;
|
pub mod cluster;
|
||||||
pub mod cluster_tests;
|
pub mod cluster_tests;
|
||||||
pub mod local_cluster;
|
pub mod local_cluster;
|
||||||
|
pub mod validator_configs;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
cluster::{Cluster, ClusterValidatorInfo, ValidatorInfo},
|
cluster::{Cluster, ClusterValidatorInfo, ValidatorInfo},
|
||||||
cluster_tests,
|
cluster_tests,
|
||||||
|
validator_configs::*,
|
||||||
};
|
};
|
||||||
use itertools::izip;
|
use itertools::izip;
|
||||||
use log::*;
|
use log::*;
|
||||||
|
@ -45,7 +46,7 @@ use std::{
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ClusterConfig {
|
pub struct ClusterConfig {
|
||||||
/// The validator config that should be applied to every node in the cluster
|
/// The validator config that should be applied to every node in the cluster
|
||||||
pub validator_configs: Vec<ValidatorConfig>,
|
pub validator_configs: Vec<ValidatorConfig>,
|
||||||
|
@ -110,7 +111,10 @@ impl LocalCluster {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
node_stakes: stakes,
|
node_stakes: stakes,
|
||||||
cluster_lamports,
|
cluster_lamports,
|
||||||
validator_configs: vec![ValidatorConfig::default(); num_nodes],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
num_nodes,
|
||||||
|
),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
Self::new(&mut config)
|
Self::new(&mut config)
|
||||||
|
@ -193,7 +197,7 @@ impl LocalCluster {
|
||||||
|
|
||||||
let (leader_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_config);
|
let (leader_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_config);
|
||||||
let leader_contact_info = leader_node.info.clone();
|
let leader_contact_info = leader_node.info.clone();
|
||||||
let mut leader_config = config.validator_configs[0].clone();
|
let mut leader_config = safe_clone_config(&config.validator_configs[0]);
|
||||||
leader_config.rpc_addrs = Some((leader_node.info.rpc, leader_node.info.rpc_pubsub));
|
leader_config.rpc_addrs = Some((leader_node.info.rpc, leader_node.info.rpc_pubsub));
|
||||||
leader_config.account_paths = vec![leader_ledger_path.join("accounts")];
|
leader_config.account_paths = vec![leader_ledger_path.join("accounts")];
|
||||||
let leader_keypair = Arc::new(Keypair::from_bytes(&leader_keypair.to_bytes()).unwrap());
|
let leader_keypair = Arc::new(Keypair::from_bytes(&leader_keypair.to_bytes()).unwrap());
|
||||||
|
@ -217,10 +221,9 @@ impl LocalCluster {
|
||||||
ledger_path: leader_ledger_path,
|
ledger_path: leader_ledger_path,
|
||||||
contact_info: leader_contact_info.clone(),
|
contact_info: leader_contact_info.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let cluster_leader = ClusterValidatorInfo::new(
|
let cluster_leader = ClusterValidatorInfo::new(
|
||||||
leader_info,
|
leader_info,
|
||||||
config.validator_configs[0].clone(),
|
safe_clone_config(&config.validator_configs[0]),
|
||||||
leader_server,
|
leader_server,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -255,10 +258,8 @@ impl LocalCluster {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let listener_config = ValidatorConfig {
|
let mut listener_config = safe_clone_config(&config.validator_configs[0]);
|
||||||
voting_disabled: true,
|
listener_config.voting_disabled = true;
|
||||||
..config.validator_configs[0].clone()
|
|
||||||
};
|
|
||||||
(0..config.num_listeners).for_each(|_| {
|
(0..config.num_listeners).for_each(|_| {
|
||||||
cluster.add_validator(&listener_config, 0, Arc::new(Keypair::new()), None);
|
cluster.add_validator(&listener_config, 0, Arc::new(Keypair::new()), None);
|
||||||
});
|
});
|
||||||
|
@ -339,7 +340,7 @@ impl LocalCluster {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut config = validator_config.clone();
|
let mut config = safe_clone_config(validator_config);
|
||||||
config.rpc_addrs = Some((validator_node.info.rpc, validator_node.info.rpc_pubsub));
|
config.rpc_addrs = Some((validator_node.info.rpc, validator_node.info.rpc_pubsub));
|
||||||
config.account_paths = vec![ledger_path.join("accounts")];
|
config.account_paths = vec![ledger_path.join("accounts")];
|
||||||
let voting_keypair = voting_keypair.unwrap();
|
let voting_keypair = voting_keypair.unwrap();
|
||||||
|
@ -362,7 +363,7 @@ impl LocalCluster {
|
||||||
ledger_path,
|
ledger_path,
|
||||||
contact_info,
|
contact_info,
|
||||||
},
|
},
|
||||||
validator_config.clone(),
|
safe_clone_config(validator_config),
|
||||||
validator_server,
|
validator_server,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -710,7 +711,10 @@ mod test {
|
||||||
validator_config.rpc_config.enable_validator_exit = true;
|
validator_config.rpc_config.enable_validator_exit = true;
|
||||||
const NUM_NODES: usize = 1;
|
const NUM_NODES: usize = 1;
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
validator_configs: vec![ValidatorConfig::default(); NUM_NODES],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
NUM_NODES,
|
||||||
|
),
|
||||||
node_stakes: vec![3; NUM_NODES],
|
node_stakes: vec![3; NUM_NODES],
|
||||||
cluster_lamports: 100,
|
cluster_lamports: 100,
|
||||||
ticks_per_slot: 8,
|
ticks_per_slot: 8,
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
use solana_core::validator::{ValidatorConfig, ValidatorExit};
|
||||||
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
|
pub fn safe_clone_config(config: &ValidatorConfig) -> ValidatorConfig {
|
||||||
|
ValidatorConfig {
|
||||||
|
dev_halt_at_slot: config.dev_halt_at_slot,
|
||||||
|
expected_genesis_hash: config.expected_genesis_hash,
|
||||||
|
expected_bank_hash: config.expected_bank_hash,
|
||||||
|
expected_shred_version: config.expected_shred_version,
|
||||||
|
voting_disabled: config.voting_disabled,
|
||||||
|
account_paths: config.account_paths.clone(),
|
||||||
|
account_shrink_paths: config.account_shrink_paths.clone(),
|
||||||
|
rpc_config: config.rpc_config.clone(),
|
||||||
|
rpc_addrs: config.rpc_addrs,
|
||||||
|
pubsub_config: config.pubsub_config.clone(),
|
||||||
|
snapshot_config: config.snapshot_config.clone(),
|
||||||
|
max_ledger_shreds: config.max_ledger_shreds,
|
||||||
|
broadcast_stage_type: config.broadcast_stage_type.clone(),
|
||||||
|
enable_partition: config.enable_partition.clone(),
|
||||||
|
enforce_ulimit_nofile: config.enforce_ulimit_nofile,
|
||||||
|
fixed_leader_schedule: config.fixed_leader_schedule.clone(),
|
||||||
|
wait_for_supermajority: config.wait_for_supermajority,
|
||||||
|
new_hard_forks: config.new_hard_forks.clone(),
|
||||||
|
trusted_validators: config.trusted_validators.clone(),
|
||||||
|
repair_validators: config.repair_validators.clone(),
|
||||||
|
gossip_validators: config.gossip_validators.clone(),
|
||||||
|
halt_on_trusted_validators_accounts_hash_mismatch: config
|
||||||
|
.halt_on_trusted_validators_accounts_hash_mismatch,
|
||||||
|
accounts_hash_fault_injection_slots: config.accounts_hash_fault_injection_slots,
|
||||||
|
frozen_accounts: config.frozen_accounts.clone(),
|
||||||
|
no_rocksdb_compaction: config.no_rocksdb_compaction,
|
||||||
|
rocksdb_compaction_interval: config.rocksdb_compaction_interval,
|
||||||
|
rocksdb_max_compaction_jitter: config.rocksdb_max_compaction_jitter,
|
||||||
|
accounts_hash_interval_slots: config.accounts_hash_interval_slots,
|
||||||
|
max_genesis_archive_unpacked_size: config.max_genesis_archive_unpacked_size,
|
||||||
|
wal_recovery_mode: config.wal_recovery_mode.clone(),
|
||||||
|
poh_verify: config.poh_verify,
|
||||||
|
cuda: config.cuda,
|
||||||
|
require_tower: config.require_tower,
|
||||||
|
debug_keys: config.debug_keys.clone(),
|
||||||
|
contact_debug_interval: config.contact_debug_interval,
|
||||||
|
contact_save_interval: config.contact_save_interval,
|
||||||
|
bpf_jit: config.bpf_jit,
|
||||||
|
send_transaction_retry_ms: config.send_transaction_retry_ms,
|
||||||
|
send_transaction_leader_forward_count: config.send_transaction_leader_forward_count,
|
||||||
|
no_poh_speed_test: config.no_poh_speed_test,
|
||||||
|
poh_pinned_cpu_core: config.poh_pinned_cpu_core,
|
||||||
|
account_indexes: config.account_indexes.clone(),
|
||||||
|
accounts_db_caching_enabled: config.accounts_db_caching_enabled,
|
||||||
|
warp_slot: config.warp_slot,
|
||||||
|
accounts_db_test_hash_calculation: config.accounts_db_test_hash_calculation,
|
||||||
|
accounts_db_use_index_hash_calculation: config.accounts_db_use_index_hash_calculation,
|
||||||
|
tpu_coalesce_ms: config.tpu_coalesce_ms,
|
||||||
|
validator_exit: Arc::new(RwLock::new(ValidatorExit::default())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn make_identical_validator_configs(
|
||||||
|
config: &ValidatorConfig,
|
||||||
|
num: usize,
|
||||||
|
) -> Vec<ValidatorConfig> {
|
||||||
|
let mut configs = vec![];
|
||||||
|
for _ in 0..num {
|
||||||
|
configs.push(safe_clone_config(config));
|
||||||
|
}
|
||||||
|
configs
|
||||||
|
}
|
|
@ -31,6 +31,7 @@ use solana_local_cluster::{
|
||||||
cluster::Cluster,
|
cluster::Cluster,
|
||||||
cluster_tests,
|
cluster_tests,
|
||||||
local_cluster::{ClusterConfig, LocalCluster},
|
local_cluster::{ClusterConfig, LocalCluster},
|
||||||
|
validator_configs::*,
|
||||||
};
|
};
|
||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
bank_forks::{ArchiveFormat, SnapshotConfig},
|
bank_forks::{ArchiveFormat, SnapshotConfig},
|
||||||
|
@ -77,7 +78,7 @@ fn test_ledger_cleanup_service() {
|
||||||
cluster_lamports: 10_000,
|
cluster_lamports: 10_000,
|
||||||
poh_config: PohConfig::new_sleep(Duration::from_millis(50)),
|
poh_config: PohConfig::new_sleep(Duration::from_millis(50)),
|
||||||
node_stakes: vec![100; num_nodes],
|
node_stakes: vec![100; num_nodes],
|
||||||
validator_configs: vec![validator_config; num_nodes],
|
validator_configs: make_identical_validator_configs(&validator_config, num_nodes),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let mut cluster = LocalCluster::new(&mut config);
|
let mut cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -264,7 +265,7 @@ fn test_validator_exit_2() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 10_000,
|
cluster_lamports: 10_000,
|
||||||
node_stakes: vec![100; num_nodes],
|
node_stakes: vec![100; num_nodes],
|
||||||
validator_configs: vec![validator_config; num_nodes],
|
validator_configs: make_identical_validator_configs(&validator_config, num_nodes),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let local = LocalCluster::new(&mut config);
|
let local = LocalCluster::new(&mut config);
|
||||||
|
@ -283,7 +284,7 @@ fn test_leader_failure_4() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 10_000,
|
cluster_lamports: 10_000,
|
||||||
node_stakes: vec![100; 4],
|
node_stakes: vec![100; 4],
|
||||||
validator_configs: vec![validator_config; num_nodes],
|
validator_configs: make_identical_validator_configs(&validator_config, num_nodes),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let local = LocalCluster::new(&mut config);
|
let local = LocalCluster::new(&mut config);
|
||||||
|
@ -361,7 +362,7 @@ fn run_cluster_partition<E, F>(
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports,
|
cluster_lamports,
|
||||||
node_stakes,
|
node_stakes,
|
||||||
validator_configs: vec![validator_config; num_nodes],
|
validator_configs: make_identical_validator_configs(&validator_config, num_nodes),
|
||||||
validator_keys: Some(
|
validator_keys: Some(
|
||||||
validator_keys
|
validator_keys
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -655,7 +656,7 @@ fn test_two_unbalanced_stakes() {
|
||||||
let mut cluster = LocalCluster::new(&mut ClusterConfig {
|
let mut cluster = LocalCluster::new(&mut ClusterConfig {
|
||||||
node_stakes: vec![999_990, 3],
|
node_stakes: vec![999_990, 3],
|
||||||
cluster_lamports: 1_000_000,
|
cluster_lamports: 1_000_000,
|
||||||
validator_configs: vec![validator_config; 2],
|
validator_configs: make_identical_validator_configs(&validator_config, 2),
|
||||||
ticks_per_slot: num_ticks_per_slot,
|
ticks_per_slot: num_ticks_per_slot,
|
||||||
slots_per_epoch: num_slots_per_epoch,
|
slots_per_epoch: num_slots_per_epoch,
|
||||||
stakers_slot_offset: num_slots_per_epoch,
|
stakers_slot_offset: num_slots_per_epoch,
|
||||||
|
@ -683,7 +684,7 @@ fn test_forwarding() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
node_stakes: vec![999_990, 3],
|
node_stakes: vec![999_990, 3],
|
||||||
cluster_lamports: 2_000_000,
|
cluster_lamports: 2_000_000,
|
||||||
validator_configs: vec![ValidatorConfig::default(); 2],
|
validator_configs: make_identical_validator_configs(&ValidatorConfig::default(), 2),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let cluster = LocalCluster::new(&mut config);
|
let cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -713,7 +714,7 @@ fn test_restart_node() {
|
||||||
let mut cluster = LocalCluster::new(&mut ClusterConfig {
|
let mut cluster = LocalCluster::new(&mut ClusterConfig {
|
||||||
node_stakes: vec![100; 1],
|
node_stakes: vec![100; 1],
|
||||||
cluster_lamports: 100,
|
cluster_lamports: 100,
|
||||||
validator_configs: vec![validator_config.clone()],
|
validator_configs: vec![safe_clone_config(&validator_config)],
|
||||||
ticks_per_slot,
|
ticks_per_slot,
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
@ -748,7 +749,7 @@ fn test_listener_startup() {
|
||||||
node_stakes: vec![100; 1],
|
node_stakes: vec![100; 1],
|
||||||
cluster_lamports: 1_000,
|
cluster_lamports: 1_000,
|
||||||
num_listeners: 3,
|
num_listeners: 3,
|
||||||
validator_configs: vec![ValidatorConfig::default(); 1],
|
validator_configs: make_identical_validator_configs(&ValidatorConfig::default(), 1),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let cluster = LocalCluster::new(&mut config);
|
let cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -765,7 +766,7 @@ fn test_mainnet_beta_cluster_type() {
|
||||||
cluster_type: ClusterType::MainnetBeta,
|
cluster_type: ClusterType::MainnetBeta,
|
||||||
node_stakes: vec![100; 1],
|
node_stakes: vec![100; 1],
|
||||||
cluster_lamports: 1_000,
|
cluster_lamports: 1_000,
|
||||||
validator_configs: vec![ValidatorConfig::default(); 1],
|
validator_configs: make_identical_validator_configs(&ValidatorConfig::default(), 1),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let cluster = LocalCluster::new(&mut config);
|
let cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -874,14 +875,11 @@ fn test_frozen_account_from_genesis() {
|
||||||
validator_keys: Some(vec![(validator_identity.clone(), true)]),
|
validator_keys: Some(vec![(validator_identity.clone(), true)]),
|
||||||
node_stakes: vec![100; 1],
|
node_stakes: vec![100; 1],
|
||||||
cluster_lamports: 1_000,
|
cluster_lamports: 1_000,
|
||||||
validator_configs: vec![
|
validator_configs: vec![ValidatorConfig {
|
||||||
ValidatorConfig {
|
|
||||||
// Freeze the validator identity account
|
// Freeze the validator identity account
|
||||||
frozen_accounts: vec![validator_identity.pubkey()],
|
frozen_accounts: vec![validator_identity.pubkey()],
|
||||||
..ValidatorConfig::default()
|
..ValidatorConfig::default()
|
||||||
};
|
}],
|
||||||
1
|
|
||||||
],
|
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
generate_frozen_account_panic(LocalCluster::new(&mut config), validator_identity);
|
generate_frozen_account_panic(LocalCluster::new(&mut config), validator_identity);
|
||||||
|
@ -902,7 +900,10 @@ fn test_frozen_account_from_snapshot() {
|
||||||
validator_keys: Some(vec![(validator_identity.clone(), true)]),
|
validator_keys: Some(vec![(validator_identity.clone(), true)]),
|
||||||
node_stakes: vec![100; 1],
|
node_stakes: vec![100; 1],
|
||||||
cluster_lamports: 1_000,
|
cluster_lamports: 1_000,
|
||||||
validator_configs: vec![snapshot_test_config.validator_config.clone()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&snapshot_test_config.validator_config,
|
||||||
|
1,
|
||||||
|
),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let mut cluster = LocalCluster::new(&mut config);
|
let mut cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -1033,7 +1034,10 @@ fn test_snapshot_download() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
node_stakes: vec![stake],
|
node_stakes: vec![stake],
|
||||||
cluster_lamports: 1_000_000,
|
cluster_lamports: 1_000_000,
|
||||||
validator_configs: vec![leader_snapshot_test_config.validator_config.clone()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&leader_snapshot_test_config.validator_config,
|
||||||
|
1,
|
||||||
|
),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1096,8 +1100,8 @@ fn test_snapshot_restart_tower() {
|
||||||
node_stakes: vec![10000, 10],
|
node_stakes: vec![10000, 10],
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
validator_configs: vec![
|
validator_configs: vec![
|
||||||
leader_snapshot_test_config.validator_config.clone(),
|
safe_clone_config(&leader_snapshot_test_config.validator_config),
|
||||||
validator_snapshot_test_config.validator_config.clone(),
|
safe_clone_config(&validator_snapshot_test_config.validator_config),
|
||||||
],
|
],
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
|
@ -1174,7 +1178,10 @@ fn test_snapshots_blockstore_floor() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
node_stakes: vec![10000],
|
node_stakes: vec![10000],
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
validator_configs: vec![leader_snapshot_test_config.validator_config.clone()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&leader_snapshot_test_config.validator_config,
|
||||||
|
1,
|
||||||
|
),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1277,7 +1284,10 @@ fn test_snapshots_restart_validity() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
node_stakes: vec![10000],
|
node_stakes: vec![10000],
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
validator_configs: vec![snapshot_test_config.validator_config.clone()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&snapshot_test_config.validator_config,
|
||||||
|
1,
|
||||||
|
),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1311,7 +1321,10 @@ fn test_snapshots_restart_validity() {
|
||||||
// Restart node
|
// Restart node
|
||||||
trace!("Restarting cluster from snapshot");
|
trace!("Restarting cluster from snapshot");
|
||||||
let nodes = cluster.get_node_pubkeys();
|
let nodes = cluster.get_node_pubkeys();
|
||||||
cluster.exit_restart_node(&nodes[0], snapshot_test_config.validator_config.clone());
|
cluster.exit_restart_node(
|
||||||
|
&nodes[0],
|
||||||
|
safe_clone_config(&snapshot_test_config.validator_config),
|
||||||
|
);
|
||||||
|
|
||||||
// Verify account balances on validator
|
// Verify account balances on validator
|
||||||
trace!("Verifying balances");
|
trace!("Verifying balances");
|
||||||
|
@ -1380,7 +1393,7 @@ fn test_wait_for_max_stake() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 10_000,
|
cluster_lamports: 10_000,
|
||||||
node_stakes: vec![100; 4],
|
node_stakes: vec![100; 4],
|
||||||
validator_configs: vec![validator_config; 4],
|
validator_configs: make_identical_validator_configs(&validator_config, 4),
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
};
|
};
|
||||||
let cluster = LocalCluster::new(&mut config);
|
let cluster = LocalCluster::new(&mut config);
|
||||||
|
@ -1453,7 +1466,10 @@ fn test_optimistic_confirmation_violation_detection() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
node_stakes: node_stakes.clone(),
|
node_stakes: node_stakes.clone(),
|
||||||
validator_configs: vec![ValidatorConfig::default(); node_stakes.len()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
node_stakes.len(),
|
||||||
|
),
|
||||||
validator_keys: Some(validator_keys),
|
validator_keys: Some(validator_keys),
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
@ -1786,7 +1802,10 @@ fn do_test_optimistic_confirmation_violation_with_or_without_tower(with_tower: b
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
node_stakes: node_stakes.clone(),
|
node_stakes: node_stakes.clone(),
|
||||||
validator_configs: vec![ValidatorConfig::default(); node_stakes.len()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
node_stakes.len(),
|
||||||
|
),
|
||||||
validator_keys: Some(validator_keys),
|
validator_keys: Some(validator_keys),
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
@ -1965,7 +1984,10 @@ fn do_test_future_tower(cluster_mode: ClusterMode) {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
node_stakes: node_stakes.clone(),
|
node_stakes: node_stakes.clone(),
|
||||||
validator_configs: vec![ValidatorConfig::default(); node_stakes.len()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
node_stakes.len(),
|
||||||
|
),
|
||||||
validator_keys: Some(validator_keys),
|
validator_keys: Some(validator_keys),
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
@ -2069,7 +2091,10 @@ fn test_hard_fork_invalidates_tower() {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
node_stakes: node_stakes.clone(),
|
node_stakes: node_stakes.clone(),
|
||||||
validator_configs: vec![ValidatorConfig::default(); node_stakes.len()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
node_stakes.len(),
|
||||||
|
),
|
||||||
validator_keys: Some(validator_keys),
|
validator_keys: Some(validator_keys),
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
@ -2363,7 +2388,10 @@ fn run_test_load_program_accounts(scan_commitment: CommitmentConfig) {
|
||||||
let mut config = ClusterConfig {
|
let mut config = ClusterConfig {
|
||||||
cluster_lamports: 100_000,
|
cluster_lamports: 100_000,
|
||||||
node_stakes: node_stakes.clone(),
|
node_stakes: node_stakes.clone(),
|
||||||
validator_configs: vec![ValidatorConfig::default(); node_stakes.len()],
|
validator_configs: make_identical_validator_configs(
|
||||||
|
&ValidatorConfig::default(),
|
||||||
|
node_stakes.len(),
|
||||||
|
),
|
||||||
validator_keys: Some(validator_keys),
|
validator_keys: Some(validator_keys),
|
||||||
slots_per_epoch,
|
slots_per_epoch,
|
||||||
stakers_slot_offset: slots_per_epoch,
|
stakers_slot_offset: slots_per_epoch,
|
||||||
|
|
Loading…
Reference in New Issue