From 7e66107a0090189de7e7ec20cf96c694eb2a0ca9 Mon Sep 17 00:00:00 2001 From: Pankaj Garg Date: Tue, 24 Jul 2018 22:17:03 +0000 Subject: [PATCH] Replace rayon with threads for dynamic network test --- tests/multinode.rs | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/tests/multinode.rs b/tests/multinode.rs index 98786b52edcc64..563743a709b119 100755 --- a/tests/multinode.rs +++ b/tests/multinode.rs @@ -1,11 +1,9 @@ #[macro_use] extern crate log; extern crate bincode; -extern crate rayon; extern crate serde_json; extern crate solana; -use rayon::prelude::*; use solana::crdt::TestNode; use solana::crdt::{Crdt, NodeInfo}; use solana::entry_writer::EntryWriter; @@ -22,6 +20,7 @@ use std::net::UdpSocket; use std::sync::atomic::AtomicBool; use std::sync::{Arc, RwLock}; use std::thread::sleep; +use std::thread::Builder; use std::time::Duration; fn converge(leader: &NodeInfo, num_nodes: usize) -> Vec { @@ -391,21 +390,37 @@ fn test_multi_node_dynamic_network() { send_tx_and_retry_get_balance(&leader_data, &alice, &bob_pubkey, Some(1000)).unwrap(); assert_eq!(leader_balance, 1000); - let keypairs: Vec<(KeyPair)> = (0..N) - .into_par_iter() + let t1: Vec<_> = (0..N) + .into_iter() .map(|n| { - let keypair = KeyPair::new(); - //send some tokens to the new validator - let bal = - send_tx_and_retry_get_balance(&leader_data, &alice, &keypair.pubkey(), Some(500)); - assert_eq!(bal, Some(500)); - info!("sent balance to[{}/{}] {:x}", n, N, keypair.pubkey()); - keypair + let leader_data = leader_data.clone(); + let (alice, _ledger_path) = genesis(100_000); + Builder::new() + .name("keypair-thread".to_string()) + .spawn(move || { + info!("Spawned thread {}", n); + let keypair = KeyPair::new(); + //send some tokens to the new validator + let bal = send_tx_and_retry_get_balance( + &leader_data, + &alice, + &keypair.pubkey(), + Some(500), + ); + assert_eq!(bal, Some(500)); + info!("sent balance to[{}/{}] {:x}", n, N, keypair.pubkey()); + keypair + }) + .unwrap() }) .collect(); + info!("Waiting for keypairs to be created"); + let keypairs: Vec<_> = t1.into_iter().map(|t| t.join().unwrap()).collect(); + info!("keypairs created"); + let validators: Vec<(NodeInfo, FullNode)> = keypairs - .into_par_iter() + .into_iter() .map(|keypair| { let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey()); let rd = validator.data.clone();