aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorLőrinc <pap.lorinc@gmail.com>2024-11-18 16:23:36 +0100
committerLőrinc <pap.lorinc@gmail.com>2024-11-25 20:09:44 +0100
commit11f3bc229ccd4b20191855fb1df882cfa6145264 (patch)
treebf738c7ed848ef16661f2e9fca60ad9cafa3cbb3 /src/test
parent152fefe7a22b7da3cfe2815083634bece9c5654e (diff)
refactor: Reserve vectors in fuzz tests
* Since the main LIMITED_WHILE stated `outpoints.size() < 200'000`, I've presized outpoints accordingly. * `tx_mut.vin` and `tx_mut.vout` weren't caught by the clang-tidy, but addressed them anyway.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/fuzz/txorphan.cpp3
-rw-r--r--src/test/fuzz/util.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/src/test/fuzz/txorphan.cpp b/src/test/fuzz/txorphan.cpp
index 5129c05a39..31af1afff5 100644
--- a/src/test/fuzz/txorphan.cpp
+++ b/src/test/fuzz/txorphan.cpp
@@ -38,6 +38,7 @@ FUZZ_TARGET(txorphan, .init = initialize_orphanage)
TxOrphanage orphanage;
std::vector<COutPoint> outpoints; // Duplicates are tolerated
+ outpoints.reserve(200'000);
// initial outpoints used to construct transactions later
for (uint8_t i = 0; i < 4; i++) {
@@ -55,12 +56,14 @@ FUZZ_TARGET(txorphan, .init = initialize_orphanage)
const auto num_out = fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(1, 256);
// pick outpoints from outpoints as input. We allow input duplicates on purpose, given we are not
// running any transaction validation logic before adding transactions to the orphanage
+ tx_mut.vin.reserve(num_in);
for (uint32_t i = 0; i < num_in; i++) {
auto& prevout = PickValue(fuzzed_data_provider, outpoints);
// try making transactions unique by setting a random nSequence, but allow duplicate transactions if they happen
tx_mut.vin.emplace_back(prevout, CScript{}, fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(0, CTxIn::SEQUENCE_FINAL));
}
// output amount will not affect txorphanage
+ tx_mut.vout.reserve(num_out);
for (uint32_t i = 0; i < num_out; i++) {
tx_mut.vout.emplace_back(CAmount{0}, CScript{});
}
diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h
index 8e2b8639c2..38be59fb64 100644
--- a/src/test/fuzz/util.h
+++ b/src/test/fuzz/util.h
@@ -79,6 +79,7 @@ template<typename B = uint8_t>
{
const size_t n_elements = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, max_vector_size);
std::vector<std::string> r;
+ r.reserve(n_elements);
for (size_t i = 0; i < n_elements; ++i) {
r.push_back(fuzzed_data_provider.ConsumeRandomLengthString(max_string_length));
}
@@ -90,6 +91,7 @@ template <typename T>
{
const size_t n_elements = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, max_vector_size);
std::vector<T> r;
+ r.reserve(n_elements);
for (size_t i = 0; i < n_elements; ++i) {
r.push_back(fuzzed_data_provider.ConsumeIntegral<T>());
}