v30.3-roots.1 · Commit 7: [PATCH 07/68] build: adapt Roots maintenance and assurance to Core 30.3
src/test/mempool_tests.cpp
Before: src/test/mempool_tests.cpp · After: src/test/mempool_tests.cpp
File metadata
index 2d8d0baa9677ed32f3dbdf617842f7533e584e67..099cc8ea6a9560cab430fac079384aff96ee47ea 100644
Download original patch · Release notes
Diff rows 1–36 of 36. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.
src/test/mempool_tests.cpp
CHANGED
|
@@ -11,12 +11,36 @@
|
|
|
11
11
|
#include <test/util/setup_common.h>
|
|
12
12
|
|
|
13
13
|
#include <boost/test/unit_test.hpp>
|
|
14
|
+
#include <array>
|
|
15
|
+
#include <limits>
|
|
14
16
|
#include <vector>
|
|
15
17
|
|
|
16
18
|
BOOST_FIXTURE_TEST_SUITE(mempool_tests, TestingSetup)
|
|
17
19
|
|
|
18
20
|
static constexpr auto REMOVAL_REASON_DUMMY = MemPoolRemovalReason::REPLACED;
|
|
19
21
|
|
|
22
|
+
BOOST_AUTO_TEST_CASE(MempoolExtraWeightBoundary)
|
|
23
|
+
{
|
|
24
|
+
CMutableTransaction tx;
|
|
25
|
+
tx.vin.resize(1);
|
|
26
|
+
tx.vout.emplace_back(0, CScript{} << OP_RETURN << std::vector<unsigned char>(100, 0));
|
|
27
|
+
const CTransactionRef txref{MakeTransactionRef(tx)};
|
|
28
|
+
CCoinsView view;
|
|
29
|
+
CCoinsViewCache cache{&view};
|
|
30
|
+
const int32_t max_extra_weight{CalculateExtraTxWeight(*txref, cache, std::numeric_limits<unsigned int>::max())};
|
|
31
|
+
BOOST_REQUIRE_EQUAL(max_extra_weight, std::numeric_limits<int32_t>::max());
|
|
32
|
+
const int32_t tx_weight{GetTransactionWeight(*txref)};
|
|
33
|
+
for (const int32_t extra_weight : std::array<int32_t, 4>{0, 4, max_extra_weight - tx_weight, max_extra_weight}) {
|
|
34
|
+
const CTxMemPoolEntry entry{txref, 0, 0, 1, 0, COIN_AGE_CACHE_ZERO, false, extra_weight, 0, {}};
|
|
35
|
+
// Configured carrier cost can reach the clamp; its virtual size must
|
|
36
|
+
// remain positive and charge every weight unit across INT32_MAX.
|
|
37
|
+
BOOST_CHECK_EQUAL(entry.GetTxSize(), (int64_t{tx_weight} + extra_weight + 3) / 4);
|
|
38
|
+
BOOST_CHECK_GT(entry.GetTxSize(), 0);
|
|
39
|
+
BOOST_CHECK_EQUAL(entry.GetSizeWithAncestors(), entry.GetTxSize());
|
|
40
|
+
BOOST_CHECK_EQUAL(entry.GetSizeWithDescendants(), entry.GetTxSize());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
20
44
|
class MemPoolTest final : public CTxMemPool
|
|
21
45
|
{
|
|
22
46
|
public:
|