diff options
author | Lőrinc <pap.lorinc@gmail.com> | 2024-11-18 16:23:36 +0100 |
---|---|---|
committer | Lőrinc <pap.lorinc@gmail.com> | 2024-11-25 20:09:44 +0100 |
commit | 11f3bc229ccd4b20191855fb1df882cfa6145264 (patch) | |
tree | bf738c7ed848ef16661f2e9fca60ad9cafa3cbb3 /src/test | |
parent | 152fefe7a22b7da3cfe2815083634bece9c5654e (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.cpp | 3 | ||||
-rw-r--r-- | src/test/fuzz/util.h | 2 |
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>()); } |