Submit leader's vote after observing 2/3 validator votes (#780)
* fixup! * fixups! * send the vote and count it * actually vote * test * Spelling fixes * Process the voting transaction in the leader's bank * Send tokens to the leader * Give leader tokens in more cases * Test for write_stage::leader_vote * Request airdrop inside fullnode and not the script * Change readme to indicate that drone should be up before leader And start drone before leader in snap scripts * Rename _kp => _keypair for keypairs and other review fixups * Remove empty else * tweak test_leader_vote numbers to be closer to testing 2/3 boundary * combine creating blob and transaction for leader/validator
This commit is contained in:
committed by
anatoly yakovenko
parent
7c5172a65e
commit
2ea6f86199
@ -91,7 +91,9 @@ fn test_multi_node_validator_catchup_from_zero() {
|
||||
logger::setup();
|
||||
const N: usize = 5;
|
||||
trace!("test_multi_node_validator_catchup_from_zero");
|
||||
let leader = TestNode::new_localhost();
|
||||
let leader_keypair = KeyPair::new();
|
||||
let leader_pubkey = leader_keypair.pubkey().clone();
|
||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let leader_data = leader.data.clone();
|
||||
let bob_pubkey = KeyPair::new().pubkey();
|
||||
|
||||
@ -100,9 +102,15 @@ fn test_multi_node_validator_catchup_from_zero() {
|
||||
leader,
|
||||
true,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
None,
|
||||
leader_keypair,
|
||||
None,
|
||||
);
|
||||
|
||||
// Send leader some tokens to vote
|
||||
let leader_balance =
|
||||
send_tx_and_retry_get_balance(&leader_data, &alice, &leader_pubkey, None).unwrap();
|
||||
info!("leader balance {}", leader_balance);
|
||||
|
||||
let mut nodes = vec![server];
|
||||
for _ in 0..N {
|
||||
let keypair = KeyPair::new();
|
||||
@ -111,7 +119,7 @@ fn test_multi_node_validator_catchup_from_zero() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
nodes.push(val);
|
||||
@ -145,7 +153,7 @@ fn test_multi_node_validator_catchup_from_zero() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
nodes.push(val);
|
||||
@ -191,7 +199,9 @@ fn test_multi_node_basic() {
|
||||
logger::setup();
|
||||
const N: usize = 5;
|
||||
trace!("test_multi_node_basic");
|
||||
let leader = TestNode::new_localhost();
|
||||
let leader_keypair = KeyPair::new();
|
||||
let leader_pubkey = leader_keypair.pubkey().clone();
|
||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let leader_data = leader.data.clone();
|
||||
let bob_pubkey = KeyPair::new().pubkey();
|
||||
let (alice, ledger_path) = genesis(10_000);
|
||||
@ -199,9 +209,15 @@ fn test_multi_node_basic() {
|
||||
leader,
|
||||
true,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
None,
|
||||
leader_keypair,
|
||||
None,
|
||||
);
|
||||
|
||||
// Send leader some tokens to vote
|
||||
let leader_balance =
|
||||
send_tx_and_retry_get_balance(&leader_data, &alice, &leader_pubkey, None).unwrap();
|
||||
info!("leader balance {}", leader_balance);
|
||||
|
||||
let mut nodes = vec![server];
|
||||
for _ in 0..N {
|
||||
let keypair = KeyPair::new();
|
||||
@ -210,7 +226,7 @@ fn test_multi_node_basic() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
nodes.push(val);
|
||||
@ -244,7 +260,8 @@ fn test_multi_node_basic() {
|
||||
#[test]
|
||||
fn test_boot_validator_from_file() {
|
||||
logger::setup();
|
||||
let leader = TestNode::new_localhost();
|
||||
let leader_keypair = KeyPair::new();
|
||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let bob_pubkey = KeyPair::new().pubkey();
|
||||
let (alice, ledger_path) = genesis(100_000);
|
||||
let leader_data = leader.data.clone();
|
||||
@ -252,7 +269,7 @@ fn test_boot_validator_from_file() {
|
||||
leader,
|
||||
true,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
None,
|
||||
leader_keypair,
|
||||
None,
|
||||
);
|
||||
let leader_balance =
|
||||
@ -269,7 +286,7 @@ fn test_boot_validator_from_file() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
let mut client = mk_client(&validator_data);
|
||||
@ -282,13 +299,14 @@ fn test_boot_validator_from_file() {
|
||||
}
|
||||
|
||||
fn create_leader(ledger_path: &str) -> (NodeInfo, FullNode) {
|
||||
let leader = TestNode::new_localhost();
|
||||
let leader_keypair = KeyPair::new();
|
||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let leader_data = leader.data.clone();
|
||||
let leader_fullnode = FullNode::new(
|
||||
leader,
|
||||
true,
|
||||
LedgerFile::Path(ledger_path.to_string()),
|
||||
None,
|
||||
leader_keypair,
|
||||
None,
|
||||
);
|
||||
(leader_data, leader_fullnode)
|
||||
@ -339,7 +357,7 @@ fn test_leader_restart_validator_start_from_old_ledger() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(stale_ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
|
||||
@ -387,7 +405,9 @@ fn test_multi_node_dynamic_network() {
|
||||
Err(_) => std::usize::MAX,
|
||||
};
|
||||
|
||||
let leader = TestNode::new_localhost();
|
||||
let leader_keypair = KeyPair::new();
|
||||
let leader_pubkey = leader_keypair.pubkey().clone();
|
||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let bob_pubkey = KeyPair::new().pubkey();
|
||||
let (alice, ledger_path) = genesis(10_000_000);
|
||||
let alice_arc = Arc::new(RwLock::new(alice));
|
||||
@ -396,9 +416,19 @@ fn test_multi_node_dynamic_network() {
|
||||
leader,
|
||||
true,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
None,
|
||||
leader_keypair,
|
||||
None,
|
||||
);
|
||||
|
||||
// Send leader some tokens to vote
|
||||
let leader_balance = send_tx_and_retry_get_balance(
|
||||
&leader_data,
|
||||
&alice_arc.read().unwrap(),
|
||||
&leader_pubkey,
|
||||
None,
|
||||
).unwrap();
|
||||
info!("leader balance {}", leader_balance);
|
||||
|
||||
info!("{:x} LEADER", leader_data.debug_id());
|
||||
let leader_balance = retry_send_tx_and_retry_get_balance(
|
||||
&leader_data,
|
||||
@ -464,7 +494,7 @@ fn test_multi_node_dynamic_network() {
|
||||
validator,
|
||||
false,
|
||||
LedgerFile::Path(ledger_path.clone()),
|
||||
Some(keypair),
|
||||
keypair,
|
||||
Some(leader_data.contact_info.ncp),
|
||||
);
|
||||
(rd, val)
|
||||
|
Reference in New Issue
Block a user