This checks the response from ledger::dependencies_confirmed to ensure it supports pruned blocks. (#3218)
This commit is contained in:
parent
5e1aa73cd8
commit
2fc6329a11
2 changed files with 53 additions and 1 deletions
|
|
@ -3238,6 +3238,58 @@ TEST (ledger, dependents_confirmed)
|
|||
ASSERT_TRUE (ledger.dependents_confirmed (transaction, *receive2));
|
||||
}
|
||||
|
||||
TEST (ledger, dependents_confirmed_pruning)
|
||||
{
|
||||
nano::block_builder builder;
|
||||
nano::logger_mt logger;
|
||||
auto store = nano::make_store (logger, nano::unique_path ());
|
||||
ASSERT_FALSE (store->init_error ());
|
||||
nano::stat stats;
|
||||
nano::ledger ledger (*store, stats);
|
||||
ledger.pruning = true;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
store->initialize (transaction, genesis, ledger.cache);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
auto send1 = builder.state ()
|
||||
.account (nano::genesis_account)
|
||||
.previous (genesis.hash ())
|
||||
.representative (nano::genesis_account)
|
||||
.balance (nano::genesis_amount - 100)
|
||||
.link (key1.pub)
|
||||
.sign (nano::dev_genesis_key.prv, nano::dev_genesis_key.pub)
|
||||
.work (*pool.generate (genesis.hash ()))
|
||||
.build_shared ();
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, *send1).code);
|
||||
auto send2 = builder.state ()
|
||||
.account (nano::genesis_account)
|
||||
.previous (send1->hash ())
|
||||
.representative (nano::genesis_account)
|
||||
.balance (nano::genesis_amount - 200)
|
||||
.link (key1.pub)
|
||||
.sign (nano::dev_genesis_key.prv, nano::dev_genesis_key.pub)
|
||||
.work (*pool.generate (send1->hash ()))
|
||||
.build_shared ();
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, *send2).code);
|
||||
nano::confirmation_height_info height;
|
||||
ASSERT_FALSE (ledger.store.confirmation_height_get (transaction, nano::genesis_account, height));
|
||||
height.height = 3;
|
||||
ledger.store.confirmation_height_put (transaction, nano::genesis_account, height);
|
||||
ASSERT_TRUE (ledger.block_confirmed (transaction, send1->hash ()));
|
||||
ASSERT_EQ (2, ledger.pruning_action (transaction, send2->hash (), 1));
|
||||
auto receive1 = builder.state ()
|
||||
.account (key1.pub)
|
||||
.previous (0)
|
||||
.representative (nano::genesis_account)
|
||||
.balance (100)
|
||||
.link (send1->hash ())
|
||||
.sign (key1.prv, key1.pub)
|
||||
.work (*pool.generate (key1.pub))
|
||||
.build_shared ();
|
||||
ASSERT_TRUE (ledger.dependents_confirmed (transaction, *receive1));
|
||||
}
|
||||
|
||||
TEST (ledger, block_confirmed)
|
||||
{
|
||||
nano::block_builder builder;
|
||||
|
|
|
|||
|
|
@ -1172,7 +1172,7 @@ bool nano::ledger::dependents_confirmed (nano::transaction const & transaction_a
|
|||
auto result (hash_a.is_zero ());
|
||||
if (!result)
|
||||
{
|
||||
result = block_confirmed (transaction_a, hash_a);
|
||||
result = block_confirmed_or_pruned_exists (transaction_a, hash_a);
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue