Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/test/wallet_tests.cpp
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | // Verify ScanForWalletTransactions accommodates a null start block. | ||||
LOCK(wallet.cs_wallet); | LOCK(wallet.cs_wallet); | ||||
wallet.SetLastBlockProcessed(::ChainActive().Height(), | wallet.SetLastBlockProcessed(::ChainActive().Height(), | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
} | } | ||||
AddKey(wallet, coinbaseKey); | AddKey(wallet, coinbaseKey); | ||||
WalletRescanReserver reserver(wallet); | WalletRescanReserver reserver(wallet); | ||||
reserver.reserve(); | reserver.reserve(); | ||||
CWallet::ScanResult result = wallet.ScanForWalletTransactions( | CWallet::ScanResult result = wallet.ScanForWalletTransactions( | ||||
BlockHash(), BlockHash(), reserver, false /* update */); | BlockHash(), {} /* max_height */, reserver, false /* update */); | ||||
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | ||||
BOOST_CHECK(result.last_failed_block.IsNull()); | BOOST_CHECK(result.last_failed_block.IsNull()); | ||||
BOOST_CHECK(result.last_scanned_block.IsNull()); | BOOST_CHECK(result.last_scanned_block.IsNull()); | ||||
BOOST_CHECK(!result.last_scanned_height); | BOOST_CHECK(!result.last_scanned_height); | ||||
BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, Amount::zero()); | BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, Amount::zero()); | ||||
} | } | ||||
// Verify ScanForWalletTransactions picks up transactions in both the old | // Verify ScanForWalletTransactions picks up transactions in both the old | ||||
// and new block files. | // and new block files. | ||||
{ | { | ||||
CWallet wallet(Params(), chain.get(), WalletLocation(), | CWallet wallet(Params(), chain.get(), WalletLocation(), | ||||
WalletDatabase::CreateDummy()); | WalletDatabase::CreateDummy()); | ||||
{ | { | ||||
LOCK(wallet.cs_wallet); | LOCK(wallet.cs_wallet); | ||||
wallet.SetLastBlockProcessed(::ChainActive().Height(), | wallet.SetLastBlockProcessed(::ChainActive().Height(), | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
} | } | ||||
AddKey(wallet, coinbaseKey); | AddKey(wallet, coinbaseKey); | ||||
WalletRescanReserver reserver(wallet); | WalletRescanReserver reserver(wallet); | ||||
reserver.reserve(); | reserver.reserve(); | ||||
CWallet::ScanResult result = wallet.ScanForWalletTransactions( | CWallet::ScanResult result = wallet.ScanForWalletTransactions( | ||||
oldTip->GetBlockHash(), BlockHash(), reserver, false /* update */); | oldTip->GetBlockHash(), {} /* max_height */, reserver, | ||||
false /* update */); | |||||
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | ||||
BOOST_CHECK(result.last_failed_block.IsNull()); | BOOST_CHECK(result.last_failed_block.IsNull()); | ||||
BOOST_CHECK_EQUAL(result.last_scanned_block, newTip->GetBlockHash()); | BOOST_CHECK_EQUAL(result.last_scanned_block, newTip->GetBlockHash()); | ||||
BOOST_CHECK_EQUAL(*result.last_scanned_height, newTip->nHeight); | BOOST_CHECK_EQUAL(*result.last_scanned_height, newTip->nHeight); | ||||
BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, 100 * COIN); | BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, 100 * COIN); | ||||
} | } | ||||
// Prune the older block file. | // Prune the older block file. | ||||
Show All 9 Lines | // file. | ||||
LOCK(wallet.cs_wallet); | LOCK(wallet.cs_wallet); | ||||
wallet.SetLastBlockProcessed(::ChainActive().Height(), | wallet.SetLastBlockProcessed(::ChainActive().Height(), | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
} | } | ||||
AddKey(wallet, coinbaseKey); | AddKey(wallet, coinbaseKey); | ||||
WalletRescanReserver reserver(wallet); | WalletRescanReserver reserver(wallet); | ||||
reserver.reserve(); | reserver.reserve(); | ||||
CWallet::ScanResult result = wallet.ScanForWalletTransactions( | CWallet::ScanResult result = wallet.ScanForWalletTransactions( | ||||
oldTip->GetBlockHash(), BlockHash(), reserver, false /* update */); | oldTip->GetBlockHash(), {} /* max_height */, reserver, | ||||
false /* update */); | |||||
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE); | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE); | ||||
BOOST_CHECK_EQUAL(result.last_failed_block, oldTip->GetBlockHash()); | BOOST_CHECK_EQUAL(result.last_failed_block, oldTip->GetBlockHash()); | ||||
BOOST_CHECK_EQUAL(result.last_scanned_block, newTip->GetBlockHash()); | BOOST_CHECK_EQUAL(result.last_scanned_block, newTip->GetBlockHash()); | ||||
BOOST_CHECK_EQUAL(*result.last_scanned_height, newTip->nHeight); | BOOST_CHECK_EQUAL(*result.last_scanned_height, newTip->nHeight); | ||||
BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, 50 * COIN); | BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, 50 * COIN); | ||||
} | } | ||||
// Prune the remaining block file. | // Prune the remaining block file. | ||||
PruneOneBlockFile(newTip->GetBlockPos().nFile); | PruneOneBlockFile(newTip->GetBlockPos().nFile); | ||||
UnlinkPrunedFiles({newTip->GetBlockPos().nFile}); | UnlinkPrunedFiles({newTip->GetBlockPos().nFile}); | ||||
// Verify ScanForWalletTransactions scans no blocks. | // Verify ScanForWalletTransactions scans no blocks. | ||||
{ | { | ||||
CWallet wallet(Params(), chain.get(), WalletLocation(), | CWallet wallet(Params(), chain.get(), WalletLocation(), | ||||
WalletDatabase::CreateDummy()); | WalletDatabase::CreateDummy()); | ||||
{ | { | ||||
LOCK(wallet.cs_wallet); | LOCK(wallet.cs_wallet); | ||||
wallet.SetLastBlockProcessed(::ChainActive().Height(), | wallet.SetLastBlockProcessed(::ChainActive().Height(), | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
} | } | ||||
AddKey(wallet, coinbaseKey); | AddKey(wallet, coinbaseKey); | ||||
WalletRescanReserver reserver(wallet); | WalletRescanReserver reserver(wallet); | ||||
reserver.reserve(); | reserver.reserve(); | ||||
CWallet::ScanResult result = wallet.ScanForWalletTransactions( | CWallet::ScanResult result = wallet.ScanForWalletTransactions( | ||||
oldTip->GetBlockHash(), BlockHash(), reserver, false /* update */); | oldTip->GetBlockHash(), {} /* max_height */, reserver, | ||||
false /* update */); | |||||
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE); | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::FAILURE); | ||||
BOOST_CHECK_EQUAL(result.last_failed_block, newTip->GetBlockHash()); | BOOST_CHECK_EQUAL(result.last_failed_block, newTip->GetBlockHash()); | ||||
BOOST_CHECK(result.last_scanned_block.IsNull()); | BOOST_CHECK(result.last_scanned_block.IsNull()); | ||||
BOOST_CHECK(!result.last_scanned_height); | BOOST_CHECK(!result.last_scanned_height); | ||||
BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, Amount::zero()); | BOOST_CHECK_EQUAL(wallet.GetBalance().m_mine_immature, Amount::zero()); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 363 Lines • ▼ Show 20 Lines | ListCoinsTestingSetup() { | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
} | } | ||||
bool firstRun; | bool firstRun; | ||||
wallet->LoadWallet(firstRun); | wallet->LoadWallet(firstRun); | ||||
AddKey(*wallet, coinbaseKey); | AddKey(*wallet, coinbaseKey); | ||||
WalletRescanReserver reserver(*wallet); | WalletRescanReserver reserver(*wallet); | ||||
reserver.reserve(); | reserver.reserve(); | ||||
CWallet::ScanResult result = wallet->ScanForWalletTransactions( | CWallet::ScanResult result = wallet->ScanForWalletTransactions( | ||||
::ChainActive().Genesis()->GetBlockHash(), BlockHash(), reserver, | ::ChainActive().Genesis()->GetBlockHash(), {} /* max_height */, | ||||
false /* update */); | reserver, false /* update */); | ||||
BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); | ||||
BOOST_CHECK_EQUAL(result.last_scanned_block, | BOOST_CHECK_EQUAL(result.last_scanned_block, | ||||
::ChainActive().Tip()->GetBlockHash()); | ::ChainActive().Tip()->GetBlockHash()); | ||||
BOOST_CHECK_EQUAL(*result.last_scanned_height, | BOOST_CHECK_EQUAL(*result.last_scanned_height, | ||||
::ChainActive().Height()); | ::ChainActive().Height()); | ||||
BOOST_CHECK(result.last_failed_block.IsNull()); | BOOST_CHECK(result.last_failed_block.IsNull()); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 126 Lines • Show Last 20 Lines |