|
@@ -20,7 +20,7 @@ use {
|
|
|
geyser_plugin_manager::GeyserPluginManager, GeyserPluginManagerRequest,
|
|
geyser_plugin_manager::GeyserPluginManager, GeyserPluginManagerRequest,
|
|
|
},
|
|
},
|
|
|
solana_gossip::{
|
|
solana_gossip::{
|
|
|
- cluster_info::{ClusterInfo, Node},
|
|
|
|
|
|
|
+ cluster_info::{ClusterInfo, Node, NodeConfig},
|
|
|
contact_info::Protocol,
|
|
contact_info::Protocol,
|
|
|
gossip_service::discover_cluster,
|
|
gossip_service::discover_cluster,
|
|
|
socketaddr,
|
|
socketaddr,
|
|
@@ -29,7 +29,7 @@ use {
|
|
|
blockstore::create_new_ledger, blockstore_options::LedgerColumnOptions,
|
|
blockstore::create_new_ledger, blockstore_options::LedgerColumnOptions,
|
|
|
create_new_tmp_ledger,
|
|
create_new_tmp_ledger,
|
|
|
},
|
|
},
|
|
|
- solana_net_utils::PortRange,
|
|
|
|
|
|
|
+ solana_net_utils::{find_available_port_in_range, PortRange},
|
|
|
solana_rpc::{rpc::JsonRpcConfig, rpc_pubsub_service::PubSubConfig},
|
|
solana_rpc::{rpc::JsonRpcConfig, rpc_pubsub_service::PubSubConfig},
|
|
|
solana_rpc_client::{nonblocking, rpc_client::RpcClient},
|
|
solana_rpc_client::{nonblocking, rpc_client::RpcClient},
|
|
|
solana_rpc_client_api::request::MAX_MULTIPLE_ACCOUNTS,
|
|
solana_rpc_client_api::request::MAX_MULTIPLE_ACCOUNTS,
|
|
@@ -63,6 +63,7 @@ use {
|
|
|
fs::{self, remove_dir_all, File},
|
|
fs::{self, remove_dir_all, File},
|
|
|
io::Read,
|
|
io::Read,
|
|
|
net::{IpAddr, Ipv4Addr, SocketAddr},
|
|
net::{IpAddr, Ipv4Addr, SocketAddr},
|
|
|
|
|
+ num::NonZero,
|
|
|
path::{Path, PathBuf},
|
|
path::{Path, PathBuf},
|
|
|
str::FromStr,
|
|
str::FromStr,
|
|
|
sync::{Arc, RwLock},
|
|
sync::{Arc, RwLock},
|
|
@@ -97,7 +98,7 @@ impl Default for TestValidatorNodeConfig {
|
|
|
const MIN_PORT_RANGE: u16 = 1024;
|
|
const MIN_PORT_RANGE: u16 = 1024;
|
|
|
const MAX_PORT_RANGE: u16 = 65535;
|
|
const MAX_PORT_RANGE: u16 = 65535;
|
|
|
|
|
|
|
|
- let bind_ip_addr = IpAddr::V4(Ipv4Addr::UNSPECIFIED);
|
|
|
|
|
|
|
+ let bind_ip_addr = IpAddr::V4(Ipv4Addr::LOCALHOST);
|
|
|
let port_range = (MIN_PORT_RANGE, MAX_PORT_RANGE);
|
|
let port_range = (MIN_PORT_RANGE, MAX_PORT_RANGE);
|
|
|
|
|
|
|
|
Self {
|
|
Self {
|
|
@@ -948,16 +949,28 @@ impl TestValidator {
|
|
|
.unwrap(),
|
|
.unwrap(),
|
|
|
)?;
|
|
)?;
|
|
|
|
|
|
|
|
- let mut node = Node::new_single_bind(
|
|
|
|
|
- &validator_identity.pubkey(),
|
|
|
|
|
- &config.node_config.gossip_addr,
|
|
|
|
|
- config.node_config.port_range,
|
|
|
|
|
- config.node_config.bind_ip_addr,
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ let node_config = NodeConfig {
|
|
|
|
|
+ gossip_addr: config.node_config.gossip_addr,
|
|
|
|
|
+ port_range: config.node_config.port_range,
|
|
|
|
|
+ bind_ip_addr: config.node_config.bind_ip_addr,
|
|
|
|
|
+ public_tpu_addr: None,
|
|
|
|
|
+ public_tpu_forwards_addr: None,
|
|
|
|
|
+ num_quic_endpoints: NonZero::new(1).unwrap(),
|
|
|
|
|
+ num_tvu_receive_sockets: NonZero::new(1).unwrap(),
|
|
|
|
|
+ num_tvu_retransmit_sockets: NonZero::new(1).unwrap(),
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ let port_range = node_config.port_range;
|
|
|
|
|
+ let mut node = Node::new_with_external_ip(&validator_identity.pubkey(), node_config);
|
|
|
|
|
+ let addr = node.info.gossip().unwrap().ip();
|
|
|
if let Some((rpc, rpc_pubsub)) = config.rpc_ports {
|
|
if let Some((rpc, rpc_pubsub)) = config.rpc_ports {
|
|
|
- let addr = node.info.gossip().unwrap().ip();
|
|
|
|
|
node.info.set_rpc((addr, rpc)).unwrap();
|
|
node.info.set_rpc((addr, rpc)).unwrap();
|
|
|
node.info.set_rpc_pubsub((addr, rpc_pubsub)).unwrap();
|
|
node.info.set_rpc_pubsub((addr, rpc_pubsub)).unwrap();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ let rpc_port = find_available_port_in_range(addr, port_range).unwrap();
|
|
|
|
|
+ let rpc_pubsub_port = find_available_port_in_range(addr, port_range).unwrap();
|
|
|
|
|
+ node.info.set_rpc((addr, rpc_port)).unwrap();
|
|
|
|
|
+ node.info.set_rpc_pubsub((addr, rpc_pubsub_port)).unwrap();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let vote_account_address = validator_vote_account.pubkey();
|
|
let vote_account_address = validator_vote_account.pubkey();
|