Helper function for filtering/creating clients in bench-exchange (#3903)

This commit is contained in:
sakridge 2019-04-19 14:05:07 -07:00 committed by GitHub
parent e0acd48944
commit 4abe95abec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 37 deletions

View File

@ -4,7 +4,11 @@ use crate::order_book::*;
use itertools::izip;
use log::*;
use rayon::prelude::*;
use solana::cluster_info::FULLNODE_PORT_RANGE;
use solana::contact_info::ContactInfo;
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_exchange_api::exchange_instruction;
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)]
mod tests {
use super::*;
use solana::cluster_info::FULLNODE_PORT_RANGE;
use solana::contact_info::ContactInfo;
use solana::fullnode::FullnodeConfig;
use solana::gossip_service::discover_nodes;
use solana::local_cluster::{ClusterConfig, LocalCluster};
use solana_client::thin_client::create_client;
use solana_drone::drone::run_local_drone;
use solana_exchange_api::exchange_processor::process_instruction;
use solana_runtime::bank::Bank;
@ -1072,21 +1091,7 @@ mod tests {
exit(1);
});
let clients: Vec<_> = 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();
let clients = get_clients(nodes);
if clients.len() < NUM_NODES {
error!(

View File

@ -2,12 +2,9 @@ pub mod bench;
mod cli;
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 solana::cluster_info::FULLNODE_PORT_RANGE;
use solana::contact_info::ContactInfo;
use solana::gossip_service::discover_nodes;
use solana_client::thin_client::create_client;
use solana_sdk::signature::KeypairUtil;
fn main() {
@ -35,21 +32,7 @@ fn main() {
panic!("Failed to discover nodes");
});
let clients: Vec<_> = 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();
let clients = get_clients(nodes);
info!("{} nodes found", clients.len());
if clients.len() < num_nodes {