ledger-tool: Add print-accounts command
(cherry picked from commit 1bf2285fa2
)
This commit is contained in:
@@ -1745,7 +1745,7 @@ impl Bank {
|
||||
.map(|(acc, _slot)| acc)
|
||||
}
|
||||
|
||||
pub fn get_program_accounts(&self, program_id: &Pubkey) -> Vec<(Pubkey, Account)> {
|
||||
pub fn get_program_accounts(&self, program_id: Option<&Pubkey>) -> Vec<(Pubkey, Account)> {
|
||||
self.rc
|
||||
.accounts
|
||||
.load_by_program(&self.ancestors, program_id)
|
||||
@@ -4702,11 +4702,24 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_bank_get_program_accounts() {
|
||||
let (genesis_config, _mint_keypair) = create_genesis_config(500);
|
||||
let (genesis_config, mint_keypair) = create_genesis_config(500);
|
||||
let parent = Arc::new(Bank::new(&genesis_config));
|
||||
|
||||
let bank0 = Arc::new(new_from_parent(&parent));
|
||||
let genesis_accounts: Vec<_> = parent.get_program_accounts(None);
|
||||
assert!(
|
||||
genesis_accounts
|
||||
.iter()
|
||||
.any(|(pubkey, _)| *pubkey == mint_keypair.pubkey()),
|
||||
"mint pubkey not found"
|
||||
);
|
||||
assert!(
|
||||
genesis_accounts
|
||||
.iter()
|
||||
.any(|(pubkey, _)| solana_sdk::sysvar::is_sysvar_id(pubkey)),
|
||||
"no sysvars found"
|
||||
);
|
||||
|
||||
let bank0 = Arc::new(new_from_parent(&parent));
|
||||
let pubkey0 = Pubkey::new_rand();
|
||||
let program_id = Pubkey::new(&[2; 32]);
|
||||
let account0 = Account::new(1, 0, &program_id);
|
||||
@@ -4720,11 +4733,11 @@ mod tests {
|
||||
let bank1 = Arc::new(new_from_parent(&bank0));
|
||||
bank1.squash();
|
||||
assert_eq!(
|
||||
bank0.get_program_accounts(&program_id),
|
||||
bank0.get_program_accounts(Some(&program_id)),
|
||||
vec![(pubkey0, account0.clone())]
|
||||
);
|
||||
assert_eq!(
|
||||
bank1.get_program_accounts(&program_id),
|
||||
bank1.get_program_accounts(Some(&program_id)),
|
||||
vec![(pubkey0, account0.clone())]
|
||||
);
|
||||
assert_eq!(
|
||||
@@ -4743,8 +4756,8 @@ mod tests {
|
||||
|
||||
let bank3 = Arc::new(new_from_parent(&bank2));
|
||||
bank3.squash();
|
||||
assert_eq!(bank1.get_program_accounts(&program_id).len(), 2);
|
||||
assert_eq!(bank3.get_program_accounts(&program_id).len(), 2);
|
||||
assert_eq!(bank1.get_program_accounts(Some(&program_id)).len(), 2);
|
||||
assert_eq!(bank3.get_program_accounts(Some(&program_id)).len(), 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
Reference in New Issue
Block a user