Update test harness to set a delegate on validator vote accounts

This commit is contained in:
Carl 2019-03-05 13:23:12 -08:00 committed by Greg Fitzgerald
parent c24d95c885
commit 76a7038335
1 changed files with 22 additions and 7 deletions

View File

@ -85,7 +85,7 @@ impl LocalCluster {
Self::create_and_fund_vote_account( Self::create_and_fund_vote_account(
&mut client, &mut client,
voting_keypair.pubkey(), &voting_keypair,
&validator_keypair, &validator_keypair,
1, 1,
) )
@ -148,15 +148,18 @@ impl LocalCluster {
fn create_and_fund_vote_account( fn create_and_fund_vote_account(
client: &mut ThinClient, client: &mut ThinClient,
vote_account: Pubkey, vote_account: &Keypair,
from_account: &Arc<Keypair>, from_account: &Arc<Keypair>,
amount: u64, amount: u64,
) -> Result<()> { ) -> Result<()> {
let vote_account_pubkey = vote_account.pubkey();
let delegate_id = from_account.pubkey();
// Create the vote account if necessary // Create the vote account if necessary
if client.poll_get_balance(&vote_account).unwrap_or(0) == 0 { if client.poll_get_balance(&vote_account_pubkey).unwrap_or(0) == 0 {
// 1) Create vote account
let mut transaction = VoteTransaction::new_account( let mut transaction = VoteTransaction::new_account(
from_account, from_account,
vote_account, vote_account_pubkey,
client.get_recent_blockhash(), client.get_recent_blockhash(),
amount, amount,
1, 1,
@ -165,14 +168,26 @@ impl LocalCluster {
client client
.retry_transfer(&from_account, &mut transaction, 5) .retry_transfer(&from_account, &mut transaction, 5)
.expect("client transfer"); .expect("client transfer");
retry_get_balance(client, &vote_account, Some(amount)).expect("get balance"); retry_get_balance(client, &vote_account_pubkey, Some(amount)).expect("get balance");
// 2) Set delegate for new vote account
let mut transaction = VoteTransaction::delegate_vote_account(
vote_account,
client.get_recent_blockhash(),
delegate_id,
1,
);
client
.retry_transfer(&from_account, &mut transaction, 5)
.expect("client transfer");
} }
info!("Checking for vote account registration"); info!("Checking for vote account registration");
let vote_account_user_data = client.get_account_userdata(&vote_account); let vote_account_user_data = client.get_account_userdata(&vote_account_pubkey);
if let Ok(Some(vote_account_user_data)) = vote_account_user_data { if let Ok(Some(vote_account_user_data)) = vote_account_user_data {
if let Ok(vote_state) = VoteState::deserialize(&vote_account_user_data) { if let Ok(vote_state) = VoteState::deserialize(&vote_account_user_data) {
if vote_state.delegate_id == vote_account { if vote_state.delegate_id == delegate_id {
return Ok(()); return Ok(());
} }
} }