Helper function for filtering/creating clients in bench-exchange (#3903)
This commit is contained in:
parent
e0acd48944
commit
4abe95abec
|
@ -4,7 +4,11 @@ use crate::order_book::*;
|
||||||
use itertools::izip;
|
use itertools::izip;
|
||||||
use log::*;
|
use log::*;
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
|
use solana::cluster_info::FULLNODE_PORT_RANGE;
|
||||||
|
use solana::contact_info::ContactInfo;
|
||||||
use solana::gen_keys::GenKeys;
|
use solana::gen_keys::GenKeys;
|
||||||
|
use solana_client::thin_client::create_client;
|
||||||
|
use solana_client::thin_client::ThinClient;
|
||||||
use solana_drone::drone::request_airdrop_transaction;
|
use solana_drone::drone::request_airdrop_transaction;
|
||||||
use solana_exchange_api::exchange_instruction;
|
use solana_exchange_api::exchange_instruction;
|
||||||
use solana_exchange_api::exchange_state::*;
|
use solana_exchange_api::exchange_state::*;
|
||||||
|
@ -1007,15 +1011,30 @@ pub fn airdrop_lamports(client: &Client, drone_addr: &SocketAddr, id: &Keypair,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_clients(nodes: Vec<ContactInfo>) -> Vec<ThinClient> {
|
||||||
|
nodes
|
||||||
|
.iter()
|
||||||
|
.filter_map(|node| {
|
||||||
|
let cluster_entrypoint = node;
|
||||||
|
let cluster_addrs = cluster_entrypoint.client_facing_addr();
|
||||||
|
if ContactInfo::is_valid_address(&cluster_addrs.0)
|
||||||
|
&& ContactInfo::is_valid_address(&cluster_addrs.1)
|
||||||
|
{
|
||||||
|
let client = create_client(cluster_addrs, FULLNODE_PORT_RANGE);
|
||||||
|
Some(client)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use solana::cluster_info::FULLNODE_PORT_RANGE;
|
|
||||||
use solana::contact_info::ContactInfo;
|
|
||||||
use solana::fullnode::FullnodeConfig;
|
use solana::fullnode::FullnodeConfig;
|
||||||
use solana::gossip_service::discover_nodes;
|
use solana::gossip_service::discover_nodes;
|
||||||
use solana::local_cluster::{ClusterConfig, LocalCluster};
|
use solana::local_cluster::{ClusterConfig, LocalCluster};
|
||||||
use solana_client::thin_client::create_client;
|
|
||||||
use solana_drone::drone::run_local_drone;
|
use solana_drone::drone::run_local_drone;
|
||||||
use solana_exchange_api::exchange_processor::process_instruction;
|
use solana_exchange_api::exchange_processor::process_instruction;
|
||||||
use solana_runtime::bank::Bank;
|
use solana_runtime::bank::Bank;
|
||||||
|
@ -1072,21 +1091,7 @@ mod tests {
|
||||||
exit(1);
|
exit(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
let clients: Vec<_> = nodes
|
let clients = get_clients(nodes);
|
||||||
.iter()
|
|
||||||
.filter_map(|node| {
|
|
||||||
let cluster_entrypoint = node.clone();
|
|
||||||
let cluster_addrs = cluster_entrypoint.client_facing_addr();
|
|
||||||
if ContactInfo::is_valid_address(&cluster_addrs.0)
|
|
||||||
&& ContactInfo::is_valid_address(&cluster_addrs.1)
|
|
||||||
{
|
|
||||||
let client = create_client(cluster_addrs, FULLNODE_PORT_RANGE);
|
|
||||||
Some(client)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
if clients.len() < NUM_NODES {
|
if clients.len() < NUM_NODES {
|
||||||
error!(
|
error!(
|
||||||
|
|
|
@ -2,12 +2,9 @@ pub mod bench;
|
||||||
mod cli;
|
mod cli;
|
||||||
pub mod order_book;
|
pub mod order_book;
|
||||||
|
|
||||||
use crate::bench::{airdrop_lamports, do_bench_exchange, Config};
|
use crate::bench::{airdrop_lamports, do_bench_exchange, get_clients, Config};
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana::cluster_info::FULLNODE_PORT_RANGE;
|
|
||||||
use solana::contact_info::ContactInfo;
|
|
||||||
use solana::gossip_service::discover_nodes;
|
use solana::gossip_service::discover_nodes;
|
||||||
use solana_client::thin_client::create_client;
|
|
||||||
use solana_sdk::signature::KeypairUtil;
|
use solana_sdk::signature::KeypairUtil;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -35,21 +32,7 @@ fn main() {
|
||||||
panic!("Failed to discover nodes");
|
panic!("Failed to discover nodes");
|
||||||
});
|
});
|
||||||
|
|
||||||
let clients: Vec<_> = nodes
|
let clients = get_clients(nodes);
|
||||||
.iter()
|
|
||||||
.filter_map(|node| {
|
|
||||||
let cluster_entrypoint = node.clone();
|
|
||||||
let cluster_addrs = cluster_entrypoint.client_facing_addr();
|
|
||||||
if ContactInfo::is_valid_address(&cluster_addrs.0)
|
|
||||||
&& ContactInfo::is_valid_address(&cluster_addrs.1)
|
|
||||||
{
|
|
||||||
let client = create_client(cluster_addrs, FULLNODE_PORT_RANGE);
|
|
||||||
Some(client)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
info!("{} nodes found", clients.len());
|
info!("{} nodes found", clients.len());
|
||||||
if clients.len() < num_nodes {
|
if clients.len() < num_nodes {
|
||||||
|
|
Loading…
Reference in New Issue