From 8ad719d57492a44fa7d81c810c8a85876eb1da5b Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Mon, 10 Jan 2022 08:57:57 +0400 Subject: [PATCH] Added 10m accounts memory test. Signed-off-by: Aleksandr --- client/benches/torii.rs | 8 ++--- client/tests/million_accounts.rs | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 client/tests/million_accounts.rs diff --git a/client/benches/torii.rs b/client/benches/torii.rs index 7194d394b24..14a2345e770 100644 --- a/client/benches/torii.rs +++ b/client/benches/torii.rs @@ -64,8 +64,8 @@ fn query_requests(criterion: &mut Criterion) { if !client_config.torii_api_url.starts_with("http://") { client_config.torii_api_url = format!("http://{}", client_config.torii_api_url); } - if !client_config.torii_status_url.starts_with("http://") { - client_config.torii_status_url = format!("http://{}", client_config.torii_status_url); + if !client_config.torii_telemetry_url.starts_with("http://") { + client_config.torii_telemetry_url = format!("http://{}", client_config.torii_telemetry_url); } let mut iroha_client = Client::new(&client_config); thread::sleep(std::time::Duration::from_millis(5000)); @@ -148,8 +148,8 @@ fn instruction_submits(criterion: &mut Criterion) { if !client_config.torii_api_url.starts_with("http://") { client_config.torii_api_url = format!("http://{}", client_config.torii_api_url); } - if !client_config.torii_status_url.starts_with("http://") { - client_config.torii_status_url = format!("http://{}", client_config.torii_status_url); + if !client_config.torii_telemetry_url.starts_with("http://") { + client_config.torii_telemetry_url = format!("http://{}", client_config.torii_telemetry_url); } let mut iroha_client = Client::new(&client_config); thread::sleep(std::time::Duration::from_millis(5000)); diff --git a/client/tests/million_accounts.rs b/client/tests/million_accounts.rs new file mode 100644 index 00000000000..44f82144ac9 --- /dev/null +++ b/client/tests/million_accounts.rs @@ -0,0 +1,53 @@ +#![allow(missing_docs, clippy::pedantic, clippy::restriction)] + +use std::thread; + +use iroha_core::{ + genesis::{GenesisNetwork, GenesisNetworkTrait, GenesisTransaction, RawGenesisBlock}, + prelude::*, + samples::get_config, +}; +use test_network::{get_key_pair, Peer as TestPeer, TestRuntime}; +use tokio::runtime::Runtime; + +fn generate_accounts(num: u32) -> Vec { + let mut ret = Vec::with_capacity(usize::try_from(num).expect("panic")); + for _i in 0..num { + ret.push( + GenesisTransaction::new( + &format!("Alice-{}", num), + &format!("wonderland-{}", num), + &PublicKey::default(), + ) + .expect("Failed to create Genesis"), + ); + } + ret +} + +fn generate_genesis(num: u32) -> RawGenesisBlock { + let transactions = generate_accounts(num); + RawGenesisBlock { transactions } +} + +#[test] +#[ignore = "Very slow. run with `cargo test --release` to significantly improve performance."] +fn create_million_accounts() { + let mut peer = ::new().expect("Failed to create peer"); + let configuration = get_config( + std::iter::once(peer.id.clone()).collect(), + Some(get_key_pair()), + ); + let rt = Runtime::test(); + let genesis = GenesisNetwork::from_configuration( + true, + generate_genesis(1000000), + &configuration.genesis, + configuration.sumeragi.max_instruction_number, + ) + .expect("genesis creation failed"); + + rt.block_on(peer.start_with_config(genesis, configuration)); + + thread::sleep(std::time::Duration::from_millis(50000)); +}