mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-30 07:43:48 +02:00
Merge bitcoin/bitcoin#34858: test: Use NodeClockContext in more tests
faad08e59ctest: Use NodeClockContext in more tests (MarcoFalke)fa8fe0941efuzz: Use NodeClockContext (MarcoFalke)fa9f434df8test: Allow time_point in boost checks (MarcoFalke) Pull request description: Currently mocktime is written to a global, which may leak between sub-tests (albeit some tests try to reset the mocktime on a best-effort basis). Also, when advancing it, one has to keep a counter variable around. Fix both issues by using the recently added `NodeClockContext`, which resets the mocktime once it goes out of scope. Also, it has a method to advance the mocktime by a delta. ACKs for top commit: achow101: ACKfaad08e59cseduless: Tested ACKfaad08e59cfrankomosh: Tested ACKfaad08e59c. Ran all relevant tests, all clean. Also verified that the default-constructor call sites in orphanage_tests and addrman_tests behave identically to the explicit `{Now<NodeSeconds>()}` form. ryanofsky: Code review ACKfaad08e59cbut had a question about dropping +1 in one test below. Tree-SHA512: bd56931970eed02bfcf3f3593ef64a61a8a1d8cc8adf190d6903b35df0fd7e6d865678c7d5bd23ce53d074cb2cf53a0a19212fdeb593b047dac5561859bc86b0
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <bench/bench.h>
|
||||
|
||||
#include <test/util/time.h>
|
||||
#include <util/time.h>
|
||||
|
||||
static void BenchTimeDeprecated(benchmark::Bench& bench)
|
||||
@@ -15,11 +15,10 @@ static void BenchTimeDeprecated(benchmark::Bench& bench)
|
||||
|
||||
static void BenchTimeMock(benchmark::Bench& bench)
|
||||
{
|
||||
SetMockTime(111);
|
||||
NodeClockContext clock_ctx{111s};
|
||||
bench.run([&] {
|
||||
(void)GetTime<std::chrono::seconds>();
|
||||
});
|
||||
SetMockTime(0);
|
||||
}
|
||||
|
||||
static void BenchTimeMillis(benchmark::Bench& bench)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <sync.h>
|
||||
#include <test/util/mining.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <test/util/time.h>
|
||||
#include <uint256.h>
|
||||
#include <util/time.h>
|
||||
#include <validation.h>
|
||||
@@ -32,7 +33,7 @@ static void WalletBalance(benchmark::Bench& bench, const bool set_dirty, const b
|
||||
|
||||
// Set clock to genesis block, so the descriptors/keys creation time don't interfere with the blocks scanning process.
|
||||
// The reason is 'generatetoaddress', which creates a chain with deterministic timestamps in the past.
|
||||
SetMockTime(test_setup->m_node.chainman->GetParams().GenesisBlock().nTime);
|
||||
NodeClockContext clock_ctx{test_setup->m_node.chainman->GetParams().GenesisBlock().Time()};
|
||||
CWallet wallet{test_setup->m_node.chain.get(), "", CreateMockableWalletDatabase()};
|
||||
{
|
||||
LOCK(wallet.cs_wallet);
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <script/script.h>
|
||||
#include <sync.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <test/util/time.h>
|
||||
#include <uint256.h>
|
||||
#include <util/result.h>
|
||||
#include <util/time.h>
|
||||
@@ -117,7 +118,7 @@ static void WalletCreateTx(benchmark::Bench& bench, const OutputType output_type
|
||||
const auto test_setup = MakeNoLogFileContext<const TestingSetup>();
|
||||
|
||||
// Set clock to genesis block, so the descriptors/keys creation time don't interfere with the blocks scanning process.
|
||||
SetMockTime(test_setup->m_node.chainman->GetParams().GenesisBlock().nTime);
|
||||
NodeClockContext clock_ctx{test_setup->m_node.chainman->GetParams().GenesisBlock().Time()};
|
||||
CWallet wallet{test_setup->m_node.chain.get(), "", CreateMockableWalletDatabase()};
|
||||
{
|
||||
LOCK(wallet.cs_wallet);
|
||||
@@ -172,7 +173,7 @@ static void AvailableCoins(benchmark::Bench& bench, const std::vector<OutputType
|
||||
{
|
||||
const auto test_setup = MakeNoLogFileContext<const TestingSetup>();
|
||||
// Set clock to genesis block, so the descriptors/keys creation time don't interfere with the blocks scanning process.
|
||||
SetMockTime(test_setup->m_node.chainman->GetParams().GenesisBlock().nTime);
|
||||
NodeClockContext clock_ctx{test_setup->m_node.chainman->GetParams().GenesisBlock().Time()};
|
||||
CWallet wallet{test_setup->m_node.chain.get(), "", CreateMockableWalletDatabase()};
|
||||
{
|
||||
LOCK(wallet.cs_wallet);
|
||||
|
||||
Reference in New Issue
Block a user