2021-02-16 14:48:20 -07:00
|
|
|
#![allow(clippy::integer_arithmetic)]
|
2021-12-03 09:00:31 -08:00
|
|
|
use {
|
2022-01-11 02:44:46 -08:00
|
|
|
crossbeam_channel::unbounded,
|
2021-12-03 09:00:31 -08:00
|
|
|
serial_test::serial,
|
|
|
|
solana_bench_tps::{
|
|
|
|
bench::{do_bench_tps, generate_and_fund_keypairs},
|
|
|
|
cli::Config,
|
|
|
|
},
|
|
|
|
solana_client::thin_client::create_client,
|
|
|
|
solana_core::validator::ValidatorConfig,
|
|
|
|
solana_faucet::faucet::run_local_faucet_with_port,
|
|
|
|
solana_gossip::cluster_info::VALIDATOR_PORT_RANGE,
|
|
|
|
solana_local_cluster::{
|
|
|
|
local_cluster::{ClusterConfig, LocalCluster},
|
|
|
|
validator_configs::make_identical_validator_configs,
|
|
|
|
},
|
|
|
|
solana_sdk::signature::{Keypair, Signer},
|
|
|
|
solana_streamer::socket::SocketAddrSpace,
|
2022-01-11 02:44:46 -08:00
|
|
|
std::{sync::Arc, time::Duration},
|
2021-03-02 21:21:30 -07:00
|
|
|
};
|
2019-09-18 13:10:50 -07:00
|
|
|
|
|
|
|
fn test_bench_tps_local_cluster(config: Config) {
|
2019-09-27 12:19:06 -07:00
|
|
|
let native_instruction_processors = vec![];
|
|
|
|
|
2019-09-18 13:10:50 -07:00
|
|
|
solana_logger::setup();
|
|
|
|
const NUM_NODES: usize = 1;
|
2021-07-23 15:25:03 +00:00
|
|
|
let cluster = LocalCluster::new(
|
|
|
|
&mut ClusterConfig {
|
|
|
|
node_stakes: vec![999_990; NUM_NODES],
|
|
|
|
cluster_lamports: 200_000_000,
|
|
|
|
validator_configs: make_identical_validator_configs(
|
|
|
|
&ValidatorConfig::default(),
|
|
|
|
NUM_NODES,
|
|
|
|
),
|
|
|
|
native_instruction_processors,
|
|
|
|
..ClusterConfig::default()
|
|
|
|
},
|
|
|
|
SocketAddrSpace::Unspecified,
|
|
|
|
);
|
2019-09-18 13:10:50 -07:00
|
|
|
|
2019-12-16 14:05:17 -07:00
|
|
|
let faucet_keypair = Keypair::new();
|
2019-09-18 13:10:50 -07:00
|
|
|
cluster.transfer(
|
|
|
|
&cluster.funding_keypair,
|
2019-12-16 14:05:17 -07:00
|
|
|
&faucet_keypair.pubkey(),
|
2019-09-18 13:10:50 -07:00
|
|
|
100_000_000,
|
|
|
|
);
|
|
|
|
|
2020-01-17 10:35:12 +08:00
|
|
|
let client = Arc::new(create_client(
|
2019-09-18 13:10:50 -07:00
|
|
|
(cluster.entry_point_info.rpc, cluster.entry_point_info.tpu),
|
2019-10-10 17:33:00 -06:00
|
|
|
VALIDATOR_PORT_RANGE,
|
2020-01-17 10:35:12 +08:00
|
|
|
));
|
2019-09-18 13:10:50 -07:00
|
|
|
|
2022-01-11 02:44:46 -08:00
|
|
|
let (addr_sender, addr_receiver) = unbounded();
|
2021-01-28 12:11:53 -08:00
|
|
|
run_local_faucet_with_port(faucet_keypair, addr_sender, None, 0);
|
|
|
|
let faucet_addr = addr_receiver
|
|
|
|
.recv_timeout(Duration::from_secs(2))
|
|
|
|
.expect("run_local_faucet")
|
|
|
|
.expect("faucet_addr");
|
2019-09-18 13:10:50 -07:00
|
|
|
|
|
|
|
let lamports_per_account = 100;
|
|
|
|
|
2019-12-18 23:50:17 -05:00
|
|
|
let keypair_count = config.tx_count * config.keypair_multiplier;
|
2020-07-23 15:08:59 -06:00
|
|
|
let keypairs = generate_and_fund_keypairs(
|
2020-01-17 10:35:12 +08:00
|
|
|
client.clone(),
|
2019-12-16 14:05:17 -07:00
|
|
|
Some(faucet_addr),
|
2019-09-18 13:10:50 -07:00
|
|
|
&config.id,
|
2019-12-18 23:50:17 -05:00
|
|
|
keypair_count,
|
2019-09-18 13:10:50 -07:00
|
|
|
lamports_per_account,
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
|
2020-07-23 15:08:59 -06:00
|
|
|
let _total = do_bench_tps(client, config, keypairs);
|
2019-11-18 16:47:01 -08:00
|
|
|
|
|
|
|
#[cfg(not(debug_assertions))]
|
|
|
|
assert!(_total > 100);
|
2019-09-18 13:10:50 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
#[serial]
|
|
|
|
fn test_bench_tps_local_cluster_solana() {
|
2020-12-13 17:26:34 -08:00
|
|
|
test_bench_tps_local_cluster(Config {
|
|
|
|
tx_count: 100,
|
|
|
|
duration: Duration::from_secs(10),
|
|
|
|
..Config::default()
|
|
|
|
});
|
2019-09-18 13:10:50 -07:00
|
|
|
}
|