cargo fmt
This commit is contained in:
parent
a344eb7dd0
commit
4196cf43e8
|
@ -37,8 +37,7 @@ fn bench_process_transaction(bencher: &mut Bencher) {
|
||||||
|
|
||||||
// Finally, return the transaction to the benchmark.
|
// Finally, return the transaction to the benchmark.
|
||||||
tx
|
tx
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
bencher.iter(|| {
|
bencher.iter(|| {
|
||||||
// Since benchmarker runs this multiple times, we need to clear the signatures.
|
// Since benchmarker runs this multiple times, we need to clear the signatures.
|
||||||
|
|
|
@ -116,8 +116,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
|
||||||
i as i64,
|
i as i64,
|
||||||
mint.last_id(),
|
mint.last_id(),
|
||||||
)
|
)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let (verified_sender, verified_receiver) = channel();
|
let (verified_sender, verified_receiver) = channel();
|
||||||
let (signal_sender, signal_receiver) = channel();
|
let (signal_sender, signal_receiver) = channel();
|
||||||
|
@ -131,8 +130,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
|
||||||
mint_total / num_src_accounts as i64,
|
mint_total / num_src_accounts as i64,
|
||||||
mint.last_id(),
|
mint.last_id(),
|
||||||
)
|
)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
bencher.iter(move || {
|
bencher.iter(move || {
|
||||||
let bank = Arc::new(Bank::new(&mint));
|
let bank = Arc::new(Bank::new(&mint));
|
||||||
|
@ -143,8 +141,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let len = (*x).read().unwrap().packets.len();
|
let len = (*x).read().unwrap().packets.len();
|
||||||
(x, iter::repeat(1).take(len).collect())
|
(x, iter::repeat(1).take(len).collect())
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
verified_sender.send(verified_setup).unwrap();
|
verified_sender.send(verified_setup).unwrap();
|
||||||
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
||||||
|
@ -157,8 +154,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let len = (*x).read().unwrap().packets.len();
|
let len = (*x).read().unwrap().packets.len();
|
||||||
(x, iter::repeat(1).take(len).collect())
|
(x, iter::repeat(1).take(len).collect())
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
verified_sender.send(verified).unwrap();
|
verified_sender.send(verified).unwrap();
|
||||||
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
||||||
|
@ -187,8 +183,7 @@ fn bench_banking_stage_single_from(bencher: &mut Bencher) {
|
||||||
i as i64,
|
i as i64,
|
||||||
mint.last_id(),
|
mint.last_id(),
|
||||||
)
|
)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let (verified_sender, verified_receiver) = channel();
|
let (verified_sender, verified_receiver) = channel();
|
||||||
let (signal_sender, signal_receiver) = channel();
|
let (signal_sender, signal_receiver) = channel();
|
||||||
|
@ -201,8 +196,7 @@ fn bench_banking_stage_single_from(bencher: &mut Bencher) {
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let len = (*x).read().unwrap().packets.len();
|
let len = (*x).read().unwrap().packets.len();
|
||||||
(x, iter::repeat(1).take(len).collect())
|
(x, iter::repeat(1).take(len).collect())
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
verified_sender.send(verified).unwrap();
|
verified_sender.send(verified).unwrap();
|
||||||
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
@ -449,8 +449,7 @@ impl Bank {
|
||||||
.map(|(acc, tx)| match acc {
|
.map(|(acc, tx)| match acc {
|
||||||
Err(e) => Err(e.clone()),
|
Err(e) => Err(e.clone()),
|
||||||
Ok(ref mut accounts) => Self::execute_transaction(tx, accounts),
|
Ok(ref mut accounts) => Self::execute_transaction(tx, accounts),
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
let execution_elapsed = now.elapsed();
|
let execution_elapsed = now.elapsed();
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
Self::store_accounts(&res, &loaded_accounts, &mut accounts);
|
Self::store_accounts(&res, &loaded_accounts, &mut accounts);
|
||||||
|
@ -1010,8 +1009,7 @@ mod tests {
|
||||||
let last_id = hash(&serialize(&i).unwrap()); // Unique hash
|
let last_id = hash(&serialize(&i).unwrap()); // Unique hash
|
||||||
bank.register_entry_id(&last_id);
|
bank.register_entry_id(&last_id);
|
||||||
last_id
|
last_id
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
assert_eq!(bank.count_valid_ids(&[]).len(), 0);
|
assert_eq!(bank.count_valid_ids(&[]).len(), 0);
|
||||||
assert_eq!(bank.count_valid_ids(&[mint.last_id()]).len(), 0);
|
assert_eq!(bank.count_valid_ids(&[mint.last_id()]).len(), 0);
|
||||||
for (i, id) in bank.count_valid_ids(&ids).iter().enumerate() {
|
for (i, id) in bank.count_valid_ids(&ids).iter().enumerate() {
|
||||||
|
|
|
@ -52,8 +52,7 @@ impl BankingStage {
|
||||||
_ => error!("{:?}", e),
|
_ => error!("{:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
(BankingStage { thread_hdl }, signal_receiver)
|
(BankingStage { thread_hdl }, signal_receiver)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,8 +65,7 @@ impl BankingStage {
|
||||||
deserialize(&x.data[0..x.meta.size])
|
deserialize(&x.data[0..x.meta.size])
|
||||||
.map(|req| (req, x.meta.addr()))
|
.map(|req| (req, x.meta.addr()))
|
||||||
.ok()
|
.ok()
|
||||||
})
|
}).collect()
|
||||||
.collect()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Process the incoming packets and send output `Signal` messages to `signal_sender`.
|
/// Process the incoming packets and send output `Signal` messages to `signal_sender`.
|
||||||
|
@ -105,8 +103,7 @@ impl BankingStage {
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
debug!("process_transactions");
|
debug!("process_transactions");
|
||||||
let results = bank.process_transactions(transactions);
|
let results = bank.process_transactions(transactions);
|
||||||
|
|
|
@ -68,8 +68,7 @@ fn main() -> Result<()> {
|
||||||
.value_name("NUM")
|
.value_name("NUM")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("Use NUM receive sockets"),
|
.help("Use NUM receive sockets"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
if let Some(n) = matches.value_of("num-recv-sockets") {
|
if let Some(n) = matches.value_of("num-recv-sockets") {
|
||||||
num_sockets = max(num_sockets, n.to_string().parse().expect("integer"));
|
num_sockets = max(num_sockets, n.to_string().parse().expect("integer"));
|
||||||
|
|
|
@ -134,8 +134,7 @@ fn send_barrier_transaction(barrier_client: &mut ThinClient, last_id: &mut Hash,
|
||||||
.add_tag(
|
.add_tag(
|
||||||
"op",
|
"op",
|
||||||
influxdb::Value::String("send_barrier_transaction".to_string()),
|
influxdb::Value::String("send_barrier_transaction".to_string()),
|
||||||
)
|
).add_field("poll_count", influxdb::Value::Integer(poll_count))
|
||||||
.add_field("poll_count", influxdb::Value::Integer(poll_count))
|
|
||||||
.add_field("duration", influxdb::Value::Integer(duration_ms as i64))
|
.add_field("duration", influxdb::Value::Integer(duration_ms as i64))
|
||||||
.to_owned(),
|
.to_owned(),
|
||||||
);
|
);
|
||||||
|
@ -146,8 +145,7 @@ fn send_barrier_transaction(barrier_client: &mut ThinClient, last_id: &mut Hash,
|
||||||
&id.pubkey(),
|
&id.pubkey(),
|
||||||
&Duration::from_millis(100),
|
&Duration::from_millis(100),
|
||||||
&Duration::from_secs(10),
|
&Duration::from_secs(10),
|
||||||
)
|
).expect("Failed to get balance");
|
||||||
.expect("Failed to get balance");
|
|
||||||
if balance != 1 {
|
if balance != 1 {
|
||||||
panic!("Expected an account balance of 1 (balance: {}", balance);
|
panic!("Expected an account balance of 1 (balance: {}", balance);
|
||||||
}
|
}
|
||||||
|
@ -194,8 +192,7 @@ fn generate_txs(
|
||||||
} else {
|
} else {
|
||||||
Transaction::new(keypair, id.pubkey(), 1, *last_id)
|
Transaction::new(keypair, id.pubkey(), 1, *last_id)
|
||||||
}
|
}
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let duration = signing_start.elapsed();
|
let duration = signing_start.elapsed();
|
||||||
let ns = duration.as_secs() * 1_000_000_000 + u64::from(duration.subsec_nanos());
|
let ns = duration.as_secs() * 1_000_000_000 + u64::from(duration.subsec_nanos());
|
||||||
|
@ -213,8 +210,7 @@ fn generate_txs(
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration",
|
"duration",
|
||||||
influxdb::Value::Integer(duration_as_ms(&duration) as i64),
|
influxdb::Value::Integer(duration_as_ms(&duration) as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
let sz = transactions.len() / threads;
|
let sz = transactions.len() / threads;
|
||||||
|
@ -266,8 +262,7 @@ fn do_tx_transfers(
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration",
|
"duration",
|
||||||
influxdb::Value::Integer(duration_as_ms(&transfer_start.elapsed()) as i64),
|
influxdb::Value::Integer(duration_as_ms(&transfer_start.elapsed()) as i64),
|
||||||
)
|
).add_field("count", influxdb::Value::Integer(tx_len as i64))
|
||||||
.add_field("count", influxdb::Value::Integer(tx_len as i64))
|
|
||||||
.to_owned(),
|
.to_owned(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -591,10 +586,8 @@ fn main() {
|
||||||
.name("solana-client-sample".to_string())
|
.name("solana-client-sample".to_string())
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
sample_tx_count(&exit_signal, &maxes, first_tx_count, &v, sample_period);
|
sample_tx_count(&exit_signal, &maxes, first_tx_count, &v, sample_period);
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
}).collect();
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let shared_txs: Arc<RwLock<VecDeque<Vec<Transaction>>>> =
|
let shared_txs: Arc<RwLock<VecDeque<Vec<Transaction>>>> =
|
||||||
Arc::new(RwLock::new(VecDeque::new()));
|
Arc::new(RwLock::new(VecDeque::new()));
|
||||||
|
@ -619,10 +612,8 @@ fn main() {
|
||||||
&shared_tx_active_thread_count,
|
&shared_tx_active_thread_count,
|
||||||
&total_tx_sent_count,
|
&total_tx_sent_count,
|
||||||
);
|
);
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
}).collect();
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// generate and send transactions for the specified duration
|
// generate and send transactions for the specified duration
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
|
|
|
@ -48,8 +48,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("rendezvous with the network at this gossip entry point"),
|
.help("rendezvous with the network at this gossip entry point"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("keypair")
|
Arg::with_name("keypair")
|
||||||
.short("k")
|
.short("k")
|
||||||
.long("keypair")
|
.long("keypair")
|
||||||
|
@ -57,22 +56,19 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("File to read the client's keypair from"),
|
.help("File to read the client's keypair from"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("slice")
|
Arg::with_name("slice")
|
||||||
.long("slice")
|
.long("slice")
|
||||||
.value_name("SECONDS")
|
.value_name("SECONDS")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("Time slice over which to limit requests to drone"),
|
.help("Time slice over which to limit requests to drone"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("cap")
|
Arg::with_name("cap")
|
||||||
.long("cap")
|
.long("cap")
|
||||||
.value_name("NUMBER")
|
.value_name("NUMBER")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("Request limit for time slice"),
|
.help("Request limit for time slice"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let network = matches
|
let network = matches
|
||||||
.value_of("network")
|
.value_of("network")
|
||||||
|
@ -159,8 +155,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
io::ErrorKind::Other,
|
io::ErrorKind::Other,
|
||||||
format!("Drone response: {:?}", err),
|
format!("Drone response: {:?}", err),
|
||||||
))
|
))
|
||||||
}))
|
})).then(|_| Ok(()));
|
||||||
.then(|_| Ok(()));
|
|
||||||
tokio::spawn(server)
|
tokio::spawn(server)
|
||||||
});
|
});
|
||||||
tokio::run(done);
|
tokio::run(done);
|
||||||
|
|
|
@ -21,31 +21,27 @@ fn main() {
|
||||||
.long("local")
|
.long("local")
|
||||||
.takes_value(false)
|
.takes_value(false)
|
||||||
.help("detect network address from local machine configuration"),
|
.help("detect network address from local machine configuration"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("keypair")
|
Arg::with_name("keypair")
|
||||||
.short("k")
|
.short("k")
|
||||||
.long("keypair")
|
.long("keypair")
|
||||||
.value_name("PATH")
|
.value_name("PATH")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("/path/to/id.json"),
|
.help("/path/to/id.json"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("public")
|
Arg::with_name("public")
|
||||||
.short("p")
|
.short("p")
|
||||||
.long("public")
|
.long("public")
|
||||||
.takes_value(false)
|
.takes_value(false)
|
||||||
.help("detect public network address using public servers"),
|
.help("detect public network address using public servers"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("bind")
|
Arg::with_name("bind")
|
||||||
.short("b")
|
.short("b")
|
||||||
.long("bind")
|
.long("bind")
|
||||||
.value_name("PORT")
|
.value_name("PORT")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("bind to port or address"),
|
.help("bind to port or address"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let bind_addr: SocketAddr = {
|
let bind_addr: SocketAddr = {
|
||||||
let mut bind_addr = parse_port_or_addr(matches.value_of("bind"), FULLNODE_PORT_RANGE.0);
|
let mut bind_addr = parse_port_or_addr(matches.value_of("bind"), FULLNODE_PORT_RANGE.0);
|
||||||
|
|
|
@ -36,16 +36,14 @@ fn main() -> () {
|
||||||
.value_name("FILE")
|
.value_name("FILE")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("run with the identity found in FILE"),
|
.help("run with the identity found in FILE"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("network")
|
Arg::with_name("network")
|
||||||
.short("n")
|
.short("n")
|
||||||
.long("network")
|
.long("network")
|
||||||
.value_name("HOST:PORT")
|
.value_name("HOST:PORT")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("connect/rendezvous with the network at this gossip entry point"),
|
.help("connect/rendezvous with the network at this gossip entry point"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("ledger")
|
Arg::with_name("ledger")
|
||||||
.short("l")
|
.short("l")
|
||||||
.long("ledger")
|
.long("ledger")
|
||||||
|
@ -53,8 +51,7 @@ fn main() -> () {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("use DIR as persistent ledger location"),
|
.help("use DIR as persistent ledger location"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let (keypair, ncp) = if let Some(i) = matches.value_of("identity") {
|
let (keypair, ncp) = if let Some(i) = matches.value_of("identity") {
|
||||||
let path = i.to_string();
|
let path = i.to_string();
|
||||||
|
|
|
@ -25,8 +25,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("Number of tokens with which to initialize mint"),
|
.help("Number of tokens with which to initialize mint"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("ledger")
|
Arg::with_name("ledger")
|
||||||
.short("l")
|
.short("l")
|
||||||
.long("ledger")
|
.long("ledger")
|
||||||
|
@ -34,8 +33,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("use DIR as persistent ledger location"),
|
.help("use DIR as persistent ledger location"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let tokens = value_t_or_exit!(matches, "tokens", i64);
|
let tokens = value_t_or_exit!(matches, "tokens", i64);
|
||||||
let ledger_path = matches.value_of("ledger").unwrap();
|
let ledger_path = matches.value_of("ledger").unwrap();
|
||||||
|
|
|
@ -22,8 +22,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.value_name("PATH")
|
.value_name("PATH")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("path to generated file"),
|
.help("path to generated file"),
|
||||||
)
|
).get_matches();
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let rnd = SystemRandom::new();
|
let rnd = SystemRandom::new();
|
||||||
let pkcs8_bytes = Ed25519KeyPair::generate_pkcs8(&rnd)?;
|
let pkcs8_bytes = Ed25519KeyPair::generate_pkcs8(&rnd)?;
|
||||||
|
|
|
@ -69,23 +69,20 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.value_name("PATH")
|
.value_name("PATH")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("/path/to/leader.json"),
|
.help("/path/to/leader.json"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("keypair")
|
Arg::with_name("keypair")
|
||||||
.short("k")
|
.short("k")
|
||||||
.long("keypair")
|
.long("keypair")
|
||||||
.value_name("PATH")
|
.value_name("PATH")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("/path/to/id.json"),
|
.help("/path/to/id.json"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("timeout")
|
Arg::with_name("timeout")
|
||||||
.long("timeout")
|
.long("timeout")
|
||||||
.value_name("SECONDS")
|
.value_name("SECONDS")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("Max SECONDS to wait to get necessary gossip from the network"),
|
.help("Max SECONDS to wait to get necessary gossip from the network"),
|
||||||
)
|
).subcommand(
|
||||||
.subcommand(
|
|
||||||
SubCommand::with_name("airdrop")
|
SubCommand::with_name("airdrop")
|
||||||
.about("Request a batch of tokens")
|
.about("Request a batch of tokens")
|
||||||
.arg(
|
.arg(
|
||||||
|
@ -96,8 +93,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The number of tokens to request"),
|
.help("The number of tokens to request"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(
|
||||||
.subcommand(
|
|
||||||
SubCommand::with_name("pay")
|
SubCommand::with_name("pay")
|
||||||
.about("Send a payment")
|
.about("Send a payment")
|
||||||
.arg(
|
.arg(
|
||||||
|
@ -107,16 +103,14 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The number of tokens to send"),
|
.help("The number of tokens to send"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("to")
|
Arg::with_name("to")
|
||||||
.long("to")
|
.long("to")
|
||||||
.value_name("PUBKEY")
|
.value_name("PUBKEY")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("The pubkey of recipient"),
|
.help("The pubkey of recipient"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(
|
||||||
.subcommand(
|
|
||||||
SubCommand::with_name("confirm")
|
SubCommand::with_name("confirm")
|
||||||
.about("Confirm your payment by signature")
|
.about("Confirm your payment by signature")
|
||||||
.arg(
|
.arg(
|
||||||
|
@ -126,8 +120,7 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The transaction signature to confirm"),
|
.help("The transaction signature to confirm"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(SubCommand::with_name("balance").about("Get your balance"))
|
||||||
.subcommand(SubCommand::with_name("balance").about("Get your balance"))
|
|
||||||
.subcommand(SubCommand::with_name("address").about("Get your public key"))
|
.subcommand(SubCommand::with_name("address").about("Get your public key"))
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,7 @@ impl BlobFetchStage {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|socket| {
|
.map(|socket| {
|
||||||
streamer::blob_receiver(socket, exit.clone(), recycler.clone(), sender.clone())
|
streamer::blob_receiver(socket, exit.clone(), recycler.clone(), sender.clone())
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
(BlobFetchStage { exit, thread_hdls }, receiver)
|
(BlobFetchStage { exit, thread_hdls }, receiver)
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,8 +183,7 @@ impl BroadcastStage {
|
||||||
.name("solana-broadcaster".to_string())
|
.name("solana-broadcaster".to_string())
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
Self::run(&sock, &crdt, &window, entry_height, &recycler, &receiver);
|
Self::run(&sock, &crdt, &window, entry_height, &recycler, &receiver);
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
BroadcastStage { thread_hdl }
|
BroadcastStage { thread_hdl }
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,8 +86,7 @@ impl Counter {
|
||||||
.add_field(
|
.add_field(
|
||||||
"count",
|
"count",
|
||||||
influxdb::Value::Integer(counts as i64 - lastlog as i64),
|
influxdb::Value::Integer(counts as i64 - lastlog as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
self.lastlog
|
self.lastlog
|
||||||
.compare_and_swap(lastlog, counts, Ordering::Relaxed);
|
.compare_and_swap(lastlog, counts, Ordering::Relaxed);
|
||||||
|
|
30
src/crdt.rs
30
src/crdt.rs
|
@ -277,8 +277,7 @@ impl Crdt {
|
||||||
node.contact_info.rpu.to_string(),
|
node.contact_info.rpu.to_string(),
|
||||||
node.contact_info.tpu.to_string()
|
node.contact_info.tpu.to_string()
|
||||||
)
|
)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
format!(
|
format!(
|
||||||
" NodeInfo.contact_info | Node identifier\n\
|
" NodeInfo.contact_info | Node identifier\n\
|
||||||
|
@ -402,8 +401,7 @@ impl Crdt {
|
||||||
trace!("{} purge skipped {} {} {}", self.id, k, now - v, limit);
|
trace!("{} purge skipped {} {} {}", self.id, k, now - v, limit);
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
inc_new_counter_info!("crdt-purge-count", dead_ids.len());
|
inc_new_counter_info!("crdt-purge-count", dead_ids.len());
|
||||||
|
|
||||||
|
@ -450,8 +448,7 @@ impl Crdt {
|
||||||
trace!("{}:broadcast node {} {}", me.id, v.id, v.contact_info.tvu);
|
trace!("{}:broadcast node {} {}", me.id, v.id, v.contact_info.tvu);
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
})
|
}).cloned()
|
||||||
.cloned()
|
|
||||||
.collect();
|
.collect();
|
||||||
cloned_table
|
cloned_table
|
||||||
}
|
}
|
||||||
|
@ -552,8 +549,7 @@ impl Crdt {
|
||||||
v.contact_info.tvu
|
v.contact_info.tvu
|
||||||
);
|
);
|
||||||
e
|
e
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
trace!("broadcast results {}", errs.len());
|
trace!("broadcast results {}", errs.len());
|
||||||
for e in errs {
|
for e in errs {
|
||||||
|
@ -607,8 +603,7 @@ impl Crdt {
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
trace!("retransmit orders {}", orders.len());
|
trace!("retransmit orders {}", orders.len());
|
||||||
let errs: Vec<_> = orders
|
let errs: Vec<_> = orders
|
||||||
.par_iter()
|
.par_iter()
|
||||||
|
@ -623,8 +618,7 @@ impl Crdt {
|
||||||
//TODO profile this, may need multiple sockets for par_iter
|
//TODO profile this, may need multiple sockets for par_iter
|
||||||
assert!(rblob.meta.size <= BLOB_SIZE);
|
assert!(rblob.meta.size <= BLOB_SIZE);
|
||||||
s.send_to(&rblob.data[..rblob.meta.size], &v.contact_info.tvu)
|
s.send_to(&rblob.data[..rblob.meta.size], &v.contact_info.tvu)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
for e in errs {
|
for e in errs {
|
||||||
if let Err(e) = &e {
|
if let Err(e) = &e {
|
||||||
inc_new_counter_info!("crdt-retransmit-send_to_error", 1, 1);
|
inc_new_counter_info!("crdt-retransmit-send_to_error", 1, 1);
|
||||||
|
@ -666,8 +660,7 @@ impl Crdt {
|
||||||
r.id != Pubkey::default()
|
r.id != Pubkey::default()
|
||||||
&& (Self::is_valid_address(&r.contact_info.tpu)
|
&& (Self::is_valid_address(&r.contact_info.tpu)
|
||||||
|| Self::is_valid_address(&r.contact_info.tvu))
|
|| Self::is_valid_address(&r.contact_info.tvu))
|
||||||
})
|
}).map(|x| x.ledger_state.last_id)
|
||||||
.map(|x| x.ledger_state.last_id)
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -702,8 +695,7 @@ impl Crdt {
|
||||||
v.id != self.id
|
v.id != self.id
|
||||||
&& !v.contact_info.ncp.ip().is_unspecified()
|
&& !v.contact_info.ncp.ip().is_unspecified()
|
||||||
&& !v.contact_info.ncp.ip().is_multicast()
|
&& !v.contact_info.ncp.ip().is_multicast()
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let choose_peer_strategy = ChooseWeightedPeerStrategy::new(
|
let choose_peer_strategy = ChooseWeightedPeerStrategy::new(
|
||||||
&self.remote,
|
&self.remote,
|
||||||
|
@ -867,8 +859,7 @@ impl Crdt {
|
||||||
let time_left = GOSSIP_SLEEP_MILLIS - elapsed;
|
let time_left = GOSSIP_SLEEP_MILLIS - elapsed;
|
||||||
sleep(Duration::from_millis(time_left));
|
sleep(Duration::from_millis(time_left));
|
||||||
}
|
}
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
fn run_window_request(
|
fn run_window_request(
|
||||||
from: &NodeInfo,
|
from: &NodeInfo,
|
||||||
|
@ -1191,8 +1182,7 @@ impl Crdt {
|
||||||
me.table.len()
|
me.table.len()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_valid_ip(addr: IpAddr) -> bool {
|
fn is_valid_ip(addr: IpAddr) -> bool {
|
||||||
|
|
|
@ -143,12 +143,10 @@ impl Drone {
|
||||||
.add_field(
|
.add_field(
|
||||||
"request_amount",
|
"request_amount",
|
||||||
influxdb::Value::Integer(request_amount as i64),
|
influxdb::Value::Integer(request_amount as i64),
|
||||||
)
|
).add_field(
|
||||||
.add_field(
|
|
||||||
"request_current",
|
"request_current",
|
||||||
influxdb::Value::Integer(self.request_current as i64),
|
influxdb::Value::Integer(self.request_current as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
client.retry_transfer_signed(&tx, 10)
|
client.retry_transfer_signed(&tx, 10)
|
||||||
} else {
|
} else {
|
||||||
|
@ -215,8 +213,7 @@ pub fn run_local_drone(mint_keypair: Keypair, network: SocketAddr, sender: Sende
|
||||||
io::ErrorKind::Other,
|
io::ErrorKind::Other,
|
||||||
format!("Drone response: {:?}", err),
|
format!("Drone response: {:?}", err),
|
||||||
))
|
))
|
||||||
}))
|
})).then(|_| Ok(()));
|
||||||
.then(|_| Ok(()));
|
|
||||||
tokio::spawn(server)
|
tokio::spawn(server)
|
||||||
});
|
});
|
||||||
tokio::run(done);
|
tokio::run(done);
|
||||||
|
|
|
@ -112,7 +112,8 @@ impl Entry {
|
||||||
id: Hash::default(),
|
id: Hash::default(),
|
||||||
transactions,
|
transactions,
|
||||||
has_more: false,
|
has_more: false,
|
||||||
}).unwrap() <= BLOB_DATA_SIZE as u64
|
}).unwrap()
|
||||||
|
<= BLOB_DATA_SIZE as u64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates the next Tick Entry `num_hashes` after `start_hash`.
|
/// Creates the next Tick Entry `num_hashes` after `start_hash`.
|
||||||
|
|
|
@ -327,8 +327,7 @@ pub fn generate_coding(
|
||||||
.map(|(i, l)| {
|
.map(|(i, l)| {
|
||||||
trace!("{} i: {} data: {}", id, i, l.data[0]);
|
trace!("{} i: {} data: {}", id, i, l.data[0]);
|
||||||
&l.data[..max_data_size]
|
&l.data[..max_data_size]
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut coding_locks: Vec<_> = coding_blobs
|
let mut coding_locks: Vec<_> = coding_blobs
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -341,8 +340,7 @@ pub fn generate_coding(
|
||||||
.map(|(i, l)| {
|
.map(|(i, l)| {
|
||||||
trace!("{} i: {} coding: {}", id, i, l.data[0],);
|
trace!("{} i: {} coding: {}", id, i, l.data[0],);
|
||||||
&mut l.data_mut()[..max_data_size]
|
&mut l.data_mut()[..max_data_size]
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
generate_coding_blocks(coding_ptrs.as_mut_slice(), &data_ptrs)?;
|
generate_coding_blocks(coding_ptrs.as_mut_slice(), &data_ptrs)?;
|
||||||
debug!(
|
debug!(
|
||||||
|
|
|
@ -33,8 +33,7 @@ impl FetchStage {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|socket| {
|
.map(|socket| {
|
||||||
streamer::receiver(socket, exit.clone(), recycler.clone(), sender.clone())
|
streamer::receiver(socket, exit.clone(), recycler.clone(), sender.clone())
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
(FetchStage { exit, thread_hdls }, receiver)
|
(FetchStage { exit, thread_hdls }, receiver)
|
||||||
}
|
}
|
||||||
|
|
|
@ -384,8 +384,7 @@ mod tests {
|
||||||
let bank = Bank::new(&alice);
|
let bank = Bank::new(&alice);
|
||||||
let entry = tn.info.clone();
|
let entry = tn.info.clone();
|
||||||
Fullnode::new_with_bank(keypair, bank, 0, &[], tn, Some(&entry), None, false)
|
Fullnode::new_with_bank(keypair, bank, 0, &[], tn, Some(&entry), None, false)
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
//each validator can exit in parallel to speed many sequential calls to `join`
|
//each validator can exit in parallel to speed many sequential calls to `join`
|
||||||
vals.iter().for_each(|v| v.exit());
|
vals.iter().for_each(|v| v.exit());
|
||||||
//while join is called sequentially, the above exit call notified all the
|
//while join is called sequentially, the above exit call notified all the
|
||||||
|
|
|
@ -598,8 +598,7 @@ mod tests {
|
||||||
)],
|
)],
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
})
|
}).collect()
|
||||||
.collect()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_test_entries() -> Vec<Entry> {
|
fn make_test_entries() -> Vec<Entry> {
|
||||||
|
|
|
@ -342,12 +342,10 @@ mod test {
|
||||||
.add_field(
|
.add_field(
|
||||||
"random_bool",
|
"random_bool",
|
||||||
influxdb::Value::Boolean(random::<u8>() < 128),
|
influxdb::Value::Boolean(random::<u8>() < 128),
|
||||||
)
|
).add_field(
|
||||||
.add_field(
|
|
||||||
"random_int",
|
"random_int",
|
||||||
influxdb::Value::Integer(random::<u8>() as i64),
|
influxdb::Value::Integer(random::<u8>() as i64),
|
||||||
)
|
).to_owned();
|
||||||
.to_owned();
|
|
||||||
agent.submit(point);
|
agent.submit(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,7 @@ impl RecordStage {
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
let mut recorder = Recorder::new(start_hash);
|
let mut recorder = Recorder::new(start_hash);
|
||||||
let _ = Self::process_signals(&mut recorder, &signal_receiver, &entry_sender);
|
let _ = Self::process_signals(&mut recorder, &signal_receiver, &entry_sender);
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
(RecordStage { thread_hdl }, entry_receiver)
|
(RecordStage { thread_hdl }, entry_receiver)
|
||||||
}
|
}
|
||||||
|
@ -72,8 +71,7 @@ impl RecordStage {
|
||||||
}
|
}
|
||||||
recorder.hash();
|
recorder.hash();
|
||||||
}
|
}
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
(RecordStage { thread_hdl }, entry_receiver)
|
(RecordStage { thread_hdl }, entry_receiver)
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,8 +111,7 @@ impl ReplicateStage {
|
||||||
_ => error!("{:?}", e),
|
_ => error!("{:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let thread_hdls = vec![t_responder, t_replicate];
|
let thread_hdls = vec![t_responder, t_replicate];
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,7 @@ impl RequestStage {
|
||||||
deserialize(&x.data[0..x.meta.size])
|
deserialize(&x.data[0..x.meta.size])
|
||||||
.map(|req| (req, x.meta.addr()))
|
.map(|req| (req, x.meta.addr()))
|
||||||
.ok()
|
.ok()
|
||||||
})
|
}).collect()
|
||||||
.collect()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_request_packets(
|
pub fn process_request_packets(
|
||||||
|
@ -103,8 +102,7 @@ impl RequestStage {
|
||||||
_ => error!("{:?}", e),
|
_ => error!("{:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
(
|
(
|
||||||
RequestStage {
|
RequestStage {
|
||||||
thread_hdl,
|
thread_hdl,
|
||||||
|
|
|
@ -69,8 +69,7 @@ fn retransmitter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
trace!("exiting retransmitter");
|
trace!("exiting retransmitter");
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct RetransmitStage {
|
pub struct RetransmitStage {
|
||||||
|
|
|
@ -96,8 +96,7 @@ pub fn ed25519_verify_cpu(batches: &[SharedPackets]) -> Vec<Vec<u8>> {
|
||||||
.par_iter()
|
.par_iter()
|
||||||
.map(verify_packet)
|
.map(verify_packet)
|
||||||
.collect()
|
.collect()
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
inc_new_counter_info!("ed25519_verify_cpu", count);
|
inc_new_counter_info!("ed25519_verify_cpu", count);
|
||||||
rv
|
rv
|
||||||
}
|
}
|
||||||
|
@ -115,8 +114,7 @@ pub fn ed25519_verify_disabled(batches: &[SharedPackets]) -> Vec<Vec<u8>> {
|
||||||
.par_iter()
|
.par_iter()
|
||||||
.map(verify_packet_disabled)
|
.map(verify_packet_disabled)
|
||||||
.collect()
|
.collect()
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
inc_new_counter_info!("ed25519_verify_disabled", count);
|
inc_new_counter_info!("ed25519_verify_disabled", count);
|
||||||
rv
|
rv
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,8 +89,7 @@ impl SigVerifyStage {
|
||||||
.add_field(
|
.add_field(
|
||||||
"total_time_ms",
|
"total_time_ms",
|
||||||
influxdb::Value::Integer(total_time_ms as i64),
|
influxdb::Value::Integer(total_time_ms as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -58,8 +58,7 @@ pub fn receiver(
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
let _ = recv_loop(&sock, &exit, &recycler, &packet_sender);
|
let _ = recv_loop(&sock, &exit, &recycler, &packet_sender);
|
||||||
()
|
()
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn recv_send(sock: &UdpSocket, recycler: &BlobRecycler, r: &BlobReceiver) -> Result<()> {
|
fn recv_send(sock: &UdpSocket, recycler: &BlobRecycler, r: &BlobReceiver) -> Result<()> {
|
||||||
|
@ -104,8 +103,7 @@ pub fn responder(
|
||||||
_ => warn!("{} responder error: {:?}", name, e),
|
_ => warn!("{} responder error: {:?}", name, e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO, we would need to stick block authentication before we create the
|
//TODO, we would need to stick block authentication before we create the
|
||||||
|
@ -137,8 +135,7 @@ pub fn blob_receiver(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
let _ = recv_blobs(&recycler, &sock, &s);
|
let _ = recv_blobs(&recycler, &sock, &s);
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -163,8 +163,7 @@ impl ThinClient {
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration_ms",
|
"duration_ms",
|
||||||
influxdb::Value::Integer(timing::duration_as_ms(&now.elapsed()) as i64),
|
influxdb::Value::Integer(timing::duration_as_ms(&now.elapsed()) as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
@ -285,8 +284,7 @@ impl ThinClient {
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration_ms",
|
"duration_ms",
|
||||||
influxdb::Value::Integer(timing::duration_as_ms(elapsed) as i64),
|
influxdb::Value::Integer(timing::duration_as_ms(elapsed) as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,8 +357,7 @@ impl ThinClient {
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration_ms",
|
"duration_ms",
|
||||||
influxdb::Value::Integer(timing::duration_as_ms(&now.elapsed()) as i64),
|
influxdb::Value::Integer(timing::duration_as_ms(&now.elapsed()) as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
self.signature_status
|
self.signature_status
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,8 +83,7 @@ fn get_last_id_to_vote_on(
|
||||||
.add_field(
|
.add_field(
|
||||||
"valid_peers",
|
"valid_peers",
|
||||||
influxdb::Value::Integer(valid_ids.len() as i64),
|
influxdb::Value::Integer(valid_ids.len() as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if valid_ids.len() > super_majority_index {
|
if valid_ids.len() > super_majority_index {
|
||||||
|
@ -103,8 +102,7 @@ fn get_last_id_to_vote_on(
|
||||||
.add_field(
|
.add_field(
|
||||||
"duration_ms",
|
"duration_ms",
|
||||||
influxdb::Value::Integer((now - *last_valid_validator_timestamp) as i64),
|
influxdb::Value::Integer((now - *last_valid_validator_timestamp) as i64),
|
||||||
)
|
).to_owned(),
|
||||||
.to_owned(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,8 +404,7 @@ pub mod tests {
|
||||||
// sleep to get a different timestamp in the bank
|
// sleep to get a different timestamp in the bank
|
||||||
sleep(Duration::from_millis(1));
|
sleep(Duration::from_millis(1));
|
||||||
last_id
|
last_id
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
// see that we fail to have 2/3rds consensus
|
// see that we fail to have 2/3rds consensus
|
||||||
assert!(
|
assert!(
|
||||||
|
|
|
@ -279,8 +279,7 @@ mod tests {
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The number of tokens to request"),
|
.help("The number of tokens to request"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(
|
||||||
.subcommand(
|
|
||||||
SubCommand::with_name("pay")
|
SubCommand::with_name("pay")
|
||||||
.about("Send a payment")
|
.about("Send a payment")
|
||||||
.arg(
|
.arg(
|
||||||
|
@ -290,16 +289,14 @@ mod tests {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The number of tokens to send"),
|
.help("The number of tokens to send"),
|
||||||
)
|
).arg(
|
||||||
.arg(
|
|
||||||
Arg::with_name("to")
|
Arg::with_name("to")
|
||||||
.long("to")
|
.long("to")
|
||||||
.value_name("PUBKEY")
|
.value_name("PUBKEY")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("The pubkey of recipient"),
|
.help("The pubkey of recipient"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(
|
||||||
.subcommand(
|
|
||||||
SubCommand::with_name("confirm")
|
SubCommand::with_name("confirm")
|
||||||
.about("Confirm your payment by signature")
|
.about("Confirm your payment by signature")
|
||||||
.arg(
|
.arg(
|
||||||
|
@ -309,8 +306,7 @@ mod tests {
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The transaction signature to confirm"),
|
.help("The transaction signature to confirm"),
|
||||||
),
|
),
|
||||||
)
|
).subcommand(SubCommand::with_name("balance").about("Get your balance"))
|
||||||
.subcommand(SubCommand::with_name("balance").about("Get your balance"))
|
|
||||||
.subcommand(SubCommand::with_name("address").about("Get your public key"));
|
.subcommand(SubCommand::with_name("address").about("Get your public key"));
|
||||||
|
|
||||||
let test_airdrop = test_commands
|
let test_airdrop = test_commands
|
||||||
|
|
|
@ -90,8 +90,7 @@ impl WindowUtil for Window {
|
||||||
}
|
}
|
||||||
self[i].clear_data(recycler);
|
self[i].clear_data(recycler);
|
||||||
Some(pix)
|
Some(pix)
|
||||||
})
|
}).collect()
|
||||||
.collect()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn repair(
|
fn repair(
|
||||||
|
@ -140,8 +139,7 @@ impl WindowUtil for Window {
|
||||||
} else {
|
} else {
|
||||||
" "
|
" "
|
||||||
}
|
}
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
|
|
||||||
let buf: Vec<_> = self
|
let buf: Vec<_> = self
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -157,8 +155,7 @@ impl WindowUtil for Window {
|
||||||
// data.is_none()
|
// data.is_none()
|
||||||
"c"
|
"c"
|
||||||
}
|
}
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
format!(
|
format!(
|
||||||
"\n{}: WINDOW ({}): {}\n{}: WINDOW ({}): {}",
|
"\n{}: WINDOW ({}): {}\n{}: WINDOW ({}): {}",
|
||||||
id,
|
id,
|
||||||
|
|
|
@ -61,7 +61,8 @@ fn add_block_to_retransmit_queue(
|
||||||
leader_id
|
leader_id
|
||||||
);
|
);
|
||||||
if p.get_id()
|
if p.get_id()
|
||||||
.expect("get_id in fn add_block_to_retransmit_queue") == leader_id
|
.expect("get_id in fn add_block_to_retransmit_queue")
|
||||||
|
== leader_id
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
//need to copy the retransmitted blob
|
//need to copy the retransmitted blob
|
||||||
|
@ -293,8 +294,7 @@ pub fn window_service(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -561,8 +561,7 @@ mod test {
|
||||||
let rv = repair_backoff(&mut last, &mut times, 1) as usize;
|
let rv = repair_backoff(&mut last, &mut times, 1) as usize;
|
||||||
assert_eq!(times, x + 2);
|
assert_eq!(times, x + 2);
|
||||||
rv
|
rv
|
||||||
})
|
}).sum();
|
||||||
.sum();
|
|
||||||
assert_eq!(times, 128);
|
assert_eq!(times, 128);
|
||||||
assert_eq!(last, 1);
|
assert_eq!(last, 1);
|
||||||
repair_backoff(&mut last, &mut times, 1);
|
repair_backoff(&mut last, &mut times, 1);
|
||||||
|
@ -571,8 +570,7 @@ mod test {
|
||||||
assert_eq!(times, 2);
|
assert_eq!(times, 2);
|
||||||
assert_eq!(last, 2);
|
assert_eq!(last, 2);
|
||||||
total
|
total
|
||||||
})
|
}).sum();
|
||||||
.sum();
|
|
||||||
let avg = res / num_tests;
|
let avg = res / num_tests;
|
||||||
assert!(avg >= 3);
|
assert!(avg >= 3);
|
||||||
assert!(avg <= 5);
|
assert!(avg <= 5);
|
||||||
|
|
|
@ -126,8 +126,7 @@ impl WriteStage {
|
||||||
error!("{:?}", e);
|
error!("{:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let thread_hdls = vec![t_responder, thread_hdl];
|
let thread_hdls = vec![t_responder, thread_hdl];
|
||||||
(WriteStage { thread_hdls }, blob_receiver)
|
(WriteStage { thread_hdls }, blob_receiver)
|
||||||
|
|
|
@ -176,8 +176,7 @@ pub fn crdt_retransmit() -> result::Result<()> {
|
||||||
s.set_read_timeout(Some(Duration::new(1, 0))).unwrap();
|
s.set_read_timeout(Some(Duration::new(1, 0))).unwrap();
|
||||||
let res = s.recv_from(&mut b.data);
|
let res = s.recv_from(&mut b.data);
|
||||||
res.is_err() //true if failed to receive the retransmit packet
|
res.is_err() //true if failed to receive the retransmit packet
|
||||||
})
|
}).collect();
|
||||||
.collect();
|
|
||||||
//true if failed receive the retransmit packet, r2, and r3 should succeed
|
//true if failed receive the retransmit packet, r2, and r3 should succeed
|
||||||
//r1 was the sender, so it should fail to receive the packet
|
//r1 was the sender, so it should fail to receive the packet
|
||||||
assert_eq!(res, [true, false, false]);
|
assert_eq!(res, [true, false, false]);
|
||||||
|
|
|
@ -593,10 +593,8 @@ fn test_multi_node_dynamic_network() {
|
||||||
assert_eq!(bal, Some(500));
|
assert_eq!(bal, Some(500));
|
||||||
info!("sent balance to[{}/{}] {}", n, num_nodes, keypair.pubkey());
|
info!("sent balance to[{}/{}] {}", n, num_nodes, keypair.pubkey());
|
||||||
keypair
|
keypair
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
}).collect();
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
info!("Waiting for keypairs to be created");
|
info!("Waiting for keypairs to be created");
|
||||||
let keypairs: Vec<_> = t1.into_iter().map(|t| t.join().unwrap()).collect();
|
let keypairs: Vec<_> = t1.into_iter().map(|t| t.join().unwrap()).collect();
|
||||||
|
@ -622,10 +620,8 @@ fn test_multi_node_dynamic_network() {
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
(rd, val)
|
(rd, val)
|
||||||
})
|
}).unwrap()
|
||||||
.unwrap()
|
}).collect();
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
let mut validators: Vec<_> = t2.into_iter().map(|t| t.join().unwrap()).collect();
|
let mut validators: Vec<_> = t2.into_iter().map(|t| t.join().unwrap()).collect();
|
||||||
|
|
||||||
|
@ -645,8 +641,7 @@ fn test_multi_node_dynamic_network() {
|
||||||
&alice_arc.read().unwrap().keypair(),
|
&alice_arc.read().unwrap().keypair(),
|
||||||
bob_pubkey,
|
bob_pubkey,
|
||||||
&last_id,
|
&last_id,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
expected_balance += 500;
|
expected_balance += 500;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue