Modified test

This commit is contained in:
Stephen Akridge 2019-03-12 21:07:06 -07:00 committed by sakridge
parent 6f76c2da6c
commit 959961b596
1 changed files with 46 additions and 22 deletions

View File

@ -501,7 +501,8 @@ mod tests {
#[test] #[test]
fn test_banking_stage_entries_only() { fn test_banking_stage_entries_only() {
let (genesis_block, mint_keypair) = GenesisBlock::new(2); solana_logger::setup();
let (genesis_block, mint_keypair) = GenesisBlock::new(10);
let bank = Arc::new(Bank::new(&genesis_block)); let bank = Arc::new(Bank::new(&genesis_block));
let start_hash = bank.last_blockhash(); let start_hash = bank.last_blockhash();
let (verified_sender, verified_receiver) = channel(); let (verified_sender, verified_receiver) = channel();
@ -511,25 +512,32 @@ mod tests {
poh_recorder.lock().unwrap().set_bank(&bank); poh_recorder.lock().unwrap().set_bank(&bank);
let banking_stage = BankingStage::new(&cluster_info, &poh_recorder, verified_receiver); let banking_stage = BankingStage::new(&cluster_info, &poh_recorder, verified_receiver);
// fund another account so we can send 2 good transactions in a single batch.
let keypair = Keypair::new();
let fund_tx =
SystemTransaction::new_account(&mint_keypair, &keypair.pubkey(), 2, start_hash, 0);
bank.process_transaction(&fund_tx).unwrap();
// good tx // good tx
let keypair = mint_keypair; let to = Keypair::new().pubkey();
let tx = SystemTransaction::new_account(&keypair, &keypair.pubkey(), 1, start_hash, 0); let tx = SystemTransaction::new_account(&mint_keypair, &to, 1, start_hash, 0);
// good tx, but no verify // good tx, but no verify
let tx_no_ver = let to2 = Keypair::new().pubkey();
SystemTransaction::new_account(&keypair, &keypair.pubkey(), 1, start_hash, 0); let tx_no_ver = SystemTransaction::new_account(&keypair, &to2, 2, start_hash, 0);
// bad tx, AccountNotFound // bad tx, AccountNotFound
let keypair = Keypair::new(); let keypair = Keypair::new();
let tx_anf = SystemTransaction::new_account(&keypair, &keypair.pubkey(), 1, start_hash, 0); let to3 = Keypair::new().pubkey();
let tx_anf = SystemTransaction::new_account(&keypair, &to3, 1, start_hash, 0);
// send 'em over // send 'em over
let packets = to_packets(&[tx, tx_no_ver, tx_anf]); let packets = to_packets(&[tx_no_ver, tx_anf, tx]);
// glad they all fit // glad they all fit
assert_eq!(packets.len(), 1); assert_eq!(packets.len(), 1);
verified_sender // tx, no_ver, anf verified_sender // no_ver, anf, tx
.send(vec![(packets[0].clone(), vec![1u8, 0u8, 1u8])]) .send(vec![(packets[0].clone(), vec![0u8, 1u8, 1u8])])
.unwrap(); .unwrap();
drop(verified_sender); drop(verified_sender);
@ -537,20 +545,36 @@ mod tests {
poh_service.join().unwrap(); poh_service.join().unwrap();
drop(poh_recorder); drop(poh_recorder);
//receive entries + ticks
let entries: Vec<Vec<Entry>> = entry_receiver
.iter()
.map(|x| x.1.into_iter().map(|e| e.0).collect())
.collect();
assert!(entries.len() >= 1);
let mut blockhash = start_hash; let mut blockhash = start_hash;
entries.iter().for_each(|entries| { let bank = Bank::new(&genesis_block);
assert_eq!(entries.len(), 1); bank.process_transaction(&fund_tx).unwrap();
assert!(entries.verify(&blockhash)); //receive entries + ticks
blockhash = entries.last().unwrap().hash; for _ in 0..10 {
}); let ventries: Vec<Vec<Entry>> = entry_receiver
.iter()
.map(|x| x.1.into_iter().map(|e| e.0).collect())
.collect();
for entries in &ventries {
for entry in entries {
bank.process_transactions(&entry.transactions)
.iter()
.for_each(|x| assert_eq!(*x, Ok(())));
}
assert!(entries.verify(&blockhash));
blockhash = entries.last().unwrap().hash;
}
if bank.get_balance(&to) == 1 {
break;
}
sleep(Duration::from_millis(200));
}
assert_eq!(bank.get_balance(&to), 1);
assert_eq!(bank.get_balance(&to2), 0);
drop(entry_receiver); drop(entry_receiver);
banking_stage.join().unwrap(); banking_stage.join().unwrap();
} }