Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
fuzz
validation_load_mempool.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
node/mempool_persist.h
>
6
7
#include <
node/mempool_args.h
>
8
#include <
node/mempool_persist_args.h
>
9
#include <
test/fuzz/FuzzedDataProvider.h
>
10
#include <
test/fuzz/fuzz.h
>
11
#include <
test/fuzz/util.h
>
12
#include <
test/fuzz/util/mempool.h
>
13
#include <
test/util/setup_common.h
>
14
#include <
test/util/txmempool.h
>
15
#include <
txmempool.h
>
16
#include <
util/check.h
>
17
#include <util/time.h>
18
#include <
util/translation.h
>
19
#include <validation.h>
20
21
#include <cstdint>
22
#include <vector>
23
24
using
node::DumpMempool
;
25
using
node::LoadMempool
;
26
27
using
node::MempoolPath
;
28
29
namespace
{
30
const
TestingSetup
*
g_setup
;
31
}
// namespace
32
33
void
initialize_validation_load_mempool
()
34
{
35
static
const
auto
testing_setup =
MakeNoLogFileContext<const TestingSetup>
();
36
g_setup
= testing_setup.get();
37
}
38
39
FUZZ_TARGET
(validation_load_mempool, .
init
=
initialize_validation_load_mempool
)
40
{
41
SeedRandomStateForTest
(
SeedRand::ZEROS
);
42
FuzzedDataProvider
fuzzed_data_provider{buffer.data(), buffer.size()};
43
SetMockTime
(
ConsumeTime
(fuzzed_data_provider));
44
FuzzedFileProvider
fuzzed_file_provider{fuzzed_data_provider};
45
46
bilingual_str
error;
47
CTxMemPool
pool{
MemPoolOptionsForTest
(
g_setup
->m_node), error};
48
Assert
(error.
empty
());
49
50
auto
& chainstate{
static_cast<
DummyChainState
&
>
(
g_setup
->m_node.chainman->ActiveChainstate())};
51
chainstate.SetMempool(&pool);
52
53
auto
fuzzed_fopen = [&](
const
fs::path&,
const
char
*) {
54
return
fuzzed_file_provider.
open
();
55
};
56
(void)
LoadMempool
(pool,
MempoolPath
(
g_setup
->m_args), chainstate,
57
{
58
.mockable_fopen_function = fuzzed_fopen,
59
});
60
pool.
SetLoadTried
(
true
);
61
(void)
DumpMempool
(pool,
MempoolPath
(
g_setup
->m_args), fuzzed_fopen,
true
);
62
}
FuzzedDataProvider.h
g_setup
const TestingSetup * g_setup
Definition
block_index_tree.cpp:21
check.h
Assert
#define Assert(val)
Identity function.
Definition
check.h:113
CTxMemPool
CTxMemPool stores valid-according-to-the-current-best-chain transactions that may be included in the ...
Definition
txmempool.h:187
CTxMemPool::SetLoadTried
void SetLoadTried(bool load_tried)
Set whether or not an initial attempt to load the persisted mempool was made (regardless of whether t...
Definition
txmempool.cpp:962
DummyChainState
Definition
mempool.h:16
FuzzedDataProvider
Definition
FuzzedDataProvider.h:32
FuzzedFileProvider
Definition
util.h:261
FuzzedFileProvider::open
FILE * open()
Definition
util.cpp:256
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
mempool_args.h
mempool_persist.h
mempool_persist_args.h
init
Definition
bitcoin-gui.cpp:17
node::MempoolPath
fs::path MempoolPath(const ArgsManager &argsman)
Definition
mempool_persist_args.cpp:18
node::DumpMempool
bool DumpMempool(const CTxMemPool &pool, const fs::path &dump_path, FopenFn mockable_fopen_function, bool skip_file_commit)
Dump the mempool to a file.
Definition
mempool_persist.cpp:153
node::LoadMempool
bool LoadMempool(CTxMemPool &pool, const fs::path &load_path, Chainstate &active_chainstate, ImportMempoolOptions &&opts)
Import the file and attempt to add its contents to the mempool.
Definition
mempool_persist.cpp:43
setup_common.h
MakeNoLogFileContext
std::unique_ptr< T > MakeNoLogFileContext(const ChainType chain_type=ChainType::REGTEST, TestOpts opts={})
Make a test setup that has disk access to the debug.log file disabled.
Definition
setup_common.h:250
TestingSetup
Testing setup that configures a complete environment.
Definition
setup_common.h:121
bilingual_str
Bilingual messages:
Definition
translation.h:24
bilingual_str::empty
bool empty() const
Definition
translation.h:35
mempool.h
ConsumeTime
NodeSeconds ConsumeTime(FuzzedDataProvider &fuzzed_data_provider, const std::optional< int64_t > &min, const std::optional< int64_t > &max) noexcept
Definition
util.cpp:34
util.h
SeedRandomStateForTest
void SeedRandomStateForTest(SeedRand seedtype)
Seed the global RNG state for testing and log the seed value.
Definition
random.cpp:19
SeedRand::ZEROS
@ ZEROS
Seed with a compile time constant of zeros.
Definition
random.h:19
MemPoolOptionsForTest
CTxMemPool::Options MemPoolOptionsForTest(const NodeContext &node)
Definition
txmempool.cpp:21
txmempool.h
translation.h
txmempool.h
SetMockTime
void SetMockTime(int64_t nMockTimeIn)
DEPRECATED Use SetMockTime with chrono type.
Definition
time.cpp:44
MempoolPath
fs::path MempoolPath(const ArgsManager &argsman)
Definition
mempool_persist_args.cpp:18
DumpMempool
bool DumpMempool(const CTxMemPool &pool, const fs::path &dump_path, fsbridge::FopenFn mockable_fopen_function=fsbridge::fopen, bool skip_file_commit=false)
Dump the mempool to a file.
Definition
mempool_persist.cpp:153
LoadMempool
bool LoadMempool(CTxMemPool &pool, const fs::path &load_path, Chainstate &active_chainstate, ImportMempoolOptions &&opts)
Import the file and attempt to add its contents to the mempool.
Definition
mempool_persist.cpp:43
initialize_validation_load_mempool
void initialize_validation_load_mempool()
Definition
validation_load_mempool.cpp:33
Generated on
for Bitcoin Core by
1.17.0