mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-01 03:01:05 +00:00
This is a step toward removing the Chain::Lock class and reducing cs_main locking. This change only affects behavior in the case where wallet last block processed falls behind the chain tip, in which case the "Block not found in chain" error will be stricter and not allow importing data from a blocks between the wallet last processed tip and the current node tip.
58 lines
2.0 KiB
C++
58 lines
2.0 KiB
C++
// Copyright (c) 2020 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include <interfaces/chain.h>
|
|
#include <test/util/setup_common.h>
|
|
#include <validation.h>
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
using interfaces::FoundBlock;
|
|
|
|
BOOST_FIXTURE_TEST_SUITE(interfaces_tests, TestChain100Setup)
|
|
|
|
BOOST_AUTO_TEST_CASE(findBlock)
|
|
{
|
|
auto chain = interfaces::MakeChain(m_node);
|
|
auto& active = ChainActive();
|
|
|
|
uint256 hash;
|
|
BOOST_CHECK(chain->findBlock(active[10]->GetBlockHash(), FoundBlock().hash(hash)));
|
|
BOOST_CHECK_EQUAL(hash, active[10]->GetBlockHash());
|
|
|
|
int height = -1;
|
|
BOOST_CHECK(chain->findBlock(active[20]->GetBlockHash(), FoundBlock().height(height)));
|
|
BOOST_CHECK_EQUAL(height, active[20]->nHeight);
|
|
|
|
CBlock data;
|
|
BOOST_CHECK(chain->findBlock(active[30]->GetBlockHash(), FoundBlock().data(data)));
|
|
BOOST_CHECK_EQUAL(data.GetHash(), active[30]->GetBlockHash());
|
|
|
|
int64_t time = -1;
|
|
BOOST_CHECK(chain->findBlock(active[40]->GetBlockHash(), FoundBlock().time(time)));
|
|
BOOST_CHECK_EQUAL(time, active[40]->GetBlockTime());
|
|
|
|
int64_t max_time = -1;
|
|
BOOST_CHECK(chain->findBlock(active[50]->GetBlockHash(), FoundBlock().maxTime(max_time)));
|
|
BOOST_CHECK_EQUAL(max_time, active[50]->GetBlockTimeMax());
|
|
|
|
int64_t mtp_time = -1;
|
|
BOOST_CHECK(chain->findBlock(active[60]->GetBlockHash(), FoundBlock().mtpTime(mtp_time)));
|
|
BOOST_CHECK_EQUAL(mtp_time, active[60]->GetMedianTimePast());
|
|
|
|
BOOST_CHECK(!chain->findBlock({}, FoundBlock()));
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(findAncestorByHash)
|
|
{
|
|
auto chain = interfaces::MakeChain(m_node);
|
|
auto& active = ChainActive();
|
|
int height = -1;
|
|
BOOST_CHECK(chain->findAncestorByHash(active[20]->GetBlockHash(), active[10]->GetBlockHash(), FoundBlock().height(height)));
|
|
BOOST_CHECK_EQUAL(height, 10);
|
|
BOOST_CHECK(!chain->findAncestorByHash(active[10]->GetBlockHash(), active[20]->GetBlockHash()));
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|