solana-test-validator
now uses FileTowerStorage
This commit is contained in:
parent
e9722474eb
commit
7ddda30126
@ -1,5 +1,8 @@
|
||||
use {
|
||||
crate::validator::{Validator, ValidatorConfig, ValidatorStartProgress},
|
||||
crate::{
|
||||
tower_storage::TowerStorage,
|
||||
validator::{Validator, ValidatorConfig, ValidatorStartProgress},
|
||||
},
|
||||
solana_client::rpc_client::RpcClient,
|
||||
solana_gossip::{
|
||||
cluster_info::{ClusterInfo, Node},
|
||||
@ -76,6 +79,7 @@ impl Default for TestValidatorNodeConfig {
|
||||
pub struct TestValidatorGenesis {
|
||||
fee_rate_governor: FeeRateGovernor,
|
||||
ledger_path: Option<PathBuf>,
|
||||
tower_storage: Option<Arc<dyn TowerStorage>>,
|
||||
pub rent: Rent,
|
||||
rpc_config: JsonRpcConfig,
|
||||
rpc_ports: Option<(u16, u16)>, // (JsonRpc, JsonRpcPubSub), None == random ports
|
||||
@ -97,6 +101,11 @@ impl TestValidatorGenesis {
|
||||
self
|
||||
}
|
||||
|
||||
pub fn tower_storage(&mut self, tower_storage: Arc<dyn TowerStorage>) -> &mut Self {
|
||||
self.tower_storage = Some(tower_storage);
|
||||
self
|
||||
}
|
||||
|
||||
/// Check if a given TestValidator ledger has already been initialized
|
||||
pub fn ledger_exists(ledger_path: &Path) -> bool {
|
||||
ledger_path.join("vote-account-keypair.json").exists()
|
||||
@ -484,7 +493,7 @@ impl TestValidator {
|
||||
}
|
||||
}
|
||||
|
||||
let validator_config = ValidatorConfig {
|
||||
let mut validator_config = ValidatorConfig {
|
||||
rpc_addrs: Some((
|
||||
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), node.info.rpc.port()),
|
||||
SocketAddr::new(
|
||||
@ -514,6 +523,9 @@ impl TestValidator {
|
||||
no_wait_for_vote_to_start_leader: true,
|
||||
..ValidatorConfig::default()
|
||||
};
|
||||
if let Some(ref tower_storage) = config.tower_storage {
|
||||
validator_config.tower_storage = tower_storage.clone();
|
||||
}
|
||||
|
||||
let validator = Some(Validator::new(
|
||||
node,
|
||||
|
@ -6,7 +6,7 @@ use {
|
||||
},
|
||||
std::{
|
||||
fs::{self, File},
|
||||
io::BufReader,
|
||||
io::{self, BufReader},
|
||||
path::PathBuf,
|
||||
},
|
||||
};
|
||||
@ -70,9 +70,10 @@ pub struct NullTowerStorage {}
|
||||
|
||||
impl TowerStorage for NullTowerStorage {
|
||||
fn load(&self, _node_pubkey: &Pubkey) -> Result<SavedTower> {
|
||||
Err(TowerError::WrongTower(
|
||||
"NullTowerStorage has no storage".into(),
|
||||
))
|
||||
Err(TowerError::IoError(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
"NullTowerStorage::load() not available",
|
||||
)))
|
||||
}
|
||||
|
||||
fn store(&self, _saved_tower: &SavedTower) -> Result<()> {
|
||||
|
@ -13,7 +13,7 @@ use crate::{
|
||||
serve_repair_service::ServeRepairService,
|
||||
sigverify,
|
||||
snapshot_packager_service::{PendingSnapshotPackage, SnapshotPackagerService},
|
||||
tower_storage::{FileTowerStorage, TowerStorage},
|
||||
tower_storage::TowerStorage,
|
||||
tpu::{Tpu, DEFAULT_TPU_COALESCE_MS},
|
||||
tvu::{Sockets, Tvu, TvuConfig},
|
||||
};
|
||||
@ -183,7 +183,7 @@ impl Default for ValidatorConfig {
|
||||
wal_recovery_mode: None,
|
||||
poh_verify: true,
|
||||
require_tower: false,
|
||||
tower_storage: Arc::new(FileTowerStorage::new(PathBuf::default())),
|
||||
tower_storage: Arc::new(crate::tower_storage::NullTowerStorage::default()),
|
||||
debug_keys: None,
|
||||
contact_debug_interval: DEFAULT_CONTACT_DEBUG_INTERVAL_MILLIS,
|
||||
contact_save_interval: DEFAULT_CONTACT_SAVE_INTERVAL_MILLIS,
|
||||
|
@ -509,6 +509,8 @@ fn main() {
|
||||
let mut genesis = TestValidatorGenesis::default();
|
||||
genesis.max_ledger_shreds = value_of(&matches, "limit_ledger_size");
|
||||
|
||||
let tower_storage = Arc::new(FileTowerStorage::new(ledger_path.clone()));
|
||||
|
||||
let admin_service_cluster_info = Arc::new(RwLock::new(None));
|
||||
admin_rpc_service::run(
|
||||
&ledger_path,
|
||||
@ -522,7 +524,7 @@ fn main() {
|
||||
validator_exit: genesis.validator_exit.clone(),
|
||||
authorized_voter_keypairs: genesis.authorized_voter_keypairs.clone(),
|
||||
cluster_info: admin_service_cluster_info.clone(),
|
||||
tower_storage: Arc::new(FileTowerStorage::new(ledger_path.clone())),
|
||||
tower_storage: tower_storage.clone(),
|
||||
},
|
||||
);
|
||||
let dashboard = if output == Output::Dashboard {
|
||||
@ -540,6 +542,7 @@ fn main() {
|
||||
|
||||
genesis
|
||||
.ledger_path(&ledger_path)
|
||||
.tower_storage(tower_storage)
|
||||
.add_account(
|
||||
faucet_pubkey,
|
||||
AccountSharedData::new(faucet_lamports, 0, &system_program::id()),
|
||||
|
Loading…
x
Reference in New Issue
Block a user