Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
Replace rayon with threads for dynamic network test
Browse files Browse the repository at this point in the history
  • Loading branch information
pgarg66 committed Jul 24, 2018
1 parent 2b528e2 commit 7e66107
Showing 1 changed file with 27 additions and 12 deletions.
39 changes: 27 additions & 12 deletions tests/multinode.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<NodeInfo> {
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 7e66107

Please sign in to comment.