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));
|
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)
|
TEST (ledger, block_confirmed)
|
||||||
{
|
{
|
||||||
nano::block_builder builder;
|
nano::block_builder builder;
|
||||||
|
|
|
||||||
|
|
@ -1172,7 +1172,7 @@ bool nano::ledger::dependents_confirmed (nano::transaction const & transaction_a
|
||||||
auto result (hash_a.is_zero ());
|
auto result (hash_a.is_zero ());
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
result = block_confirmed (transaction_a, hash_a);
|
result = block_confirmed_or_pruned_exists (transaction_a, hash_a);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue