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

Start validators in parallel in multinode test #727

Merged
merged 1 commit into from
Jul 23, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions tests/multinode.rs
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#[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 Down Expand Up @@ -389,24 +391,32 @@ 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 validators: Vec<(NodeInfo, FullNode)> = (0..N)
.into_iter()
let keypairs: Vec<(KeyPair)> = (0..N)
.into_par_iter()
.map(|n| {
let keypair = KeyPair::new();
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
let rd = validator.data.clone();
//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
})
.collect();

let validators: Vec<(NodeInfo, FullNode)> = keypairs
.into_par_iter()
.map(|keypair| {
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
let rd = validator.data.clone();
info!("starting {:8x} {:x}", keypair.pubkey(), rd.debug_id());
let val = FullNode::new(
validator,
false,
LedgerFile::Path(ledger_path.clone()),
Some(keypair),
Some(leader_data.contact_info.ncp),
);
info!("started[{}/{}] {:x}", n, N, rd.debug_id());
(rd, val)
})
.collect();
Expand Down