|
1 | 1 | #[macro_use]
|
2 | 2 | extern crate log;
|
3 | 3 | extern crate bincode;
|
| 4 | +extern crate rayon; |
4 | 5 | extern crate serde_json;
|
5 | 6 | extern crate solana;
|
6 | 7 |
|
| 8 | +use rayon::prelude::*; |
7 | 9 | use solana::crdt::TestNode;
|
8 | 10 | use solana::crdt::{Crdt, NodeInfo};
|
9 | 11 | use solana::entry_writer::EntryWriter;
|
@@ -389,24 +391,32 @@ fn test_multi_node_dynamic_network() {
|
389 | 391 | send_tx_and_retry_get_balance(&leader_data, &alice, &bob_pubkey, Some(1000)).unwrap();
|
390 | 392 | assert_eq!(leader_balance, 1000);
|
391 | 393 |
|
392 |
| - let validators: Vec<(NodeInfo, FullNode)> = (0..N) |
393 |
| - .into_iter() |
| 394 | + let keypairs: Vec<(KeyPair)> = (0..N) |
| 395 | + .into_par_iter() |
394 | 396 | .map(|n| {
|
395 | 397 | let keypair = KeyPair::new();
|
396 |
| - let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey()); |
397 |
| - let rd = validator.data.clone(); |
398 | 398 | //send some tokens to the new validator
|
399 | 399 | let bal =
|
400 | 400 | send_tx_and_retry_get_balance(&leader_data, &alice, &keypair.pubkey(), Some(500));
|
401 | 401 | assert_eq!(bal, Some(500));
|
| 402 | + info!("sent balance to[{}/{}] {:x}", n, N, keypair.pubkey()); |
| 403 | + keypair |
| 404 | + }) |
| 405 | + .collect(); |
| 406 | + |
| 407 | + let validators: Vec<(NodeInfo, FullNode)> = keypairs |
| 408 | + .into_par_iter() |
| 409 | + .map(|keypair| { |
| 410 | + let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey()); |
| 411 | + let rd = validator.data.clone(); |
| 412 | + info!("starting {:8x} {:x}", keypair.pubkey(), rd.debug_id()); |
402 | 413 | let val = FullNode::new(
|
403 | 414 | validator,
|
404 | 415 | false,
|
405 | 416 | LedgerFile::Path(ledger_path.clone()),
|
406 | 417 | Some(keypair),
|
407 | 418 | Some(leader_data.contact_info.ncp),
|
408 | 419 | );
|
409 |
| - info!("started[{}/{}] {:x}", n, N, rd.debug_id()); |
410 | 420 | (rd, val)
|
411 | 421 | })
|
412 | 422 | .collect();
|
|
0 commit comments