Refactor vote signer code (#2368)

* Refactor vote signer code

* fixed test compilation errors

* address clippy errors

* fix missing macro_use

* move macro use

* review comments
This commit is contained in:
Pankaj Garg
2019-01-10 09:21:38 -08:00
committed by GitHub
parent 7122139e12
commit 2dbe8fc1a9
13 changed files with 433 additions and 579 deletions

View File

@@ -652,18 +652,17 @@ impl Service for Fullnode {
mod tests {
use crate::bank::Bank;
use crate::cluster_info::Node;
use crate::create_vote_account::*;
use crate::db_ledger::*;
use crate::entry::make_consecutive_blobs;
use crate::fullnode::{Fullnode, FullnodeReturnType, NodeRole, TvuReturnType};
use crate::leader_scheduler::{
make_active_set_entries, LeaderScheduler, LeaderSchedulerConfig,
};
use crate::rpc_request::{RpcClient, RpcRequest};
use crate::local_vote_signer_service::LocalVoteSignerService;
use crate::service::Service;
use crate::streamer::responder;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil, Signature};
use crate::vote_signer_proxy::VoteSignerProxy;
use solana_sdk::signature::{Keypair, KeypairUtil};
use std::cmp;
use std::fs::remove_dir_all;
use std::net::UdpSocket;
@@ -861,7 +860,7 @@ mod tests {
// Write the entries to the ledger that will cause leader rotation
// after the bootstrap height
let (signer, t_signer, signer_exit) = local_vote_signer_service().unwrap();
let (signer_service, signer) = LocalVoteSignerService::new();
let (active_set_entries, validator_vote_account_id) = make_active_set_entries(
&validator_keypair,
signer,
@@ -913,7 +912,8 @@ mod tests {
{
// Test that a node knows to transition to a validator based on parsing the ledger
let leader_vote_id = register_node(signer, bootstrap_leader_keypair.clone());
let vote_signer = VoteSignerProxy::new(&bootstrap_leader_keypair, signer);
let leader_vote_id = vote_signer.vote_account.clone();
let bootstrap_leader = Fullnode::new(
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
@@ -962,21 +962,7 @@ mod tests {
DbLedger::destroy(&path).expect("Expected successful database destruction");
let _ignored = remove_dir_all(&path);
}
stop_local_vote_signer_service(t_signer, &signer_exit);
}
fn register_node(signer: SocketAddr, keypair: Arc<Keypair>) -> Pubkey {
let rpc_client = RpcClient::new_from_socket(signer);
let msg = "Registering a new node";
let sig = Signature::new(&keypair.sign(msg.as_bytes()).as_ref());
let params = json!([keypair.pubkey(), sig, msg.as_bytes()]);
let resp = RpcRequest::RegisterNode
.make_rpc_request(&rpc_client, 1, Some(params))
.unwrap();
let vote_account_id: Pubkey = serde_json::from_value(resp).unwrap();
vote_account_id
signer_service.join().unwrap();
}
#[test]
@@ -1013,7 +999,7 @@ mod tests {
// after the bootstrap height
//
// 2) A vote from the validator
let (signer, t_signer, signer_exit) = local_vote_signer_service().unwrap();
let (signer_service, signer) = LocalVoteSignerService::new();
let (active_set_entries, _validator_vote_account_id) = make_active_set_entries(
&validator_keypair,
signer,
@@ -1056,7 +1042,8 @@ mod tests {
);
let validator_keypair = Arc::new(validator_keypair);
let vote_id = register_node(signer, validator_keypair.clone());
let vote_signer = VoteSignerProxy::new(&validator_keypair, signer);
let vote_id = vote_signer.vote_account.clone();
// Start the validator
let mut validator = Fullnode::new(
validator_node,
@@ -1132,7 +1119,7 @@ mod tests {
);
// Shut down
stop_local_vote_signer_service(t_signer, &signer_exit);
signer_service.join().unwrap();
t_responder.join().expect("responder thread join");
validator.close().unwrap();
DbLedger::destroy(&validator_ledger_path)