Add test for -mempooltxinputlimit
This commit is contained in:
parent
da6d93916d
commit
5799c5f8c0
|
@ -1,10 +1,13 @@
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <gtest/gtest-spi.h>
|
#include <gtest/gtest-spi.h>
|
||||||
|
|
||||||
|
#include "consensus/validation.h"
|
||||||
#include "core_io.h"
|
#include "core_io.h"
|
||||||
|
#include "main.h"
|
||||||
#include "primitives/transaction.h"
|
#include "primitives/transaction.h"
|
||||||
#include "txmempool.h"
|
#include "txmempool.h"
|
||||||
#include "policy/fees.h"
|
#include "policy/fees.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
// Fake the input of transaction 5295156213414ed77f6e538e7e8ebe14492156906b9fe995b242477818789364
|
// Fake the input of transaction 5295156213414ed77f6e538e7e8ebe14492156906b9fe995b242477818789364
|
||||||
// - 532639cc6bebed47c1c69ae36dd498c68a012e74ad12729adbd3dbb56f8f3f4a, 0
|
// - 532639cc6bebed47c1c69ae36dd498c68a012e74ad12729adbd3dbb56f8f3f4a, 0
|
||||||
|
@ -87,3 +90,45 @@ TEST(Mempool, PriorityStatsDoNotCrash) {
|
||||||
|
|
||||||
EXPECT_EQ(dPriority, MAX_PRIORITY);
|
EXPECT_EQ(dPriority, MAX_PRIORITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Mempool, TxInputLimit) {
|
||||||
|
CTxMemPool pool(::minRelayTxFee);
|
||||||
|
bool missingInputs;
|
||||||
|
|
||||||
|
// Create an obviously-invalid transaction
|
||||||
|
CMutableTransaction mtx;
|
||||||
|
mtx.nVersion = 0;
|
||||||
|
mtx.vin.resize(10);
|
||||||
|
|
||||||
|
// Check it fails as expected
|
||||||
|
CValidationState state1;
|
||||||
|
CTransaction tx1(mtx);
|
||||||
|
EXPECT_FALSE(AcceptToMemoryPool(pool, state1, tx1, false, &missingInputs));
|
||||||
|
EXPECT_EQ(state1.GetRejectReason(), "bad-txns-version-too-low");
|
||||||
|
|
||||||
|
// Set a limit
|
||||||
|
mapArgs["-mempooltxinputlimit"] = "10";
|
||||||
|
|
||||||
|
// Check it stil fails as expected
|
||||||
|
CValidationState state2;
|
||||||
|
EXPECT_FALSE(AcceptToMemoryPool(pool, state2, tx1, false, &missingInputs));
|
||||||
|
EXPECT_EQ(state2.GetRejectReason(), "bad-txns-version-too-low");
|
||||||
|
|
||||||
|
// Resize the transaction
|
||||||
|
mtx.vin.resize(11);
|
||||||
|
|
||||||
|
// Check it now fails due to exceeding the limit
|
||||||
|
CValidationState state3;
|
||||||
|
CTransaction tx3(mtx);
|
||||||
|
EXPECT_FALSE(AcceptToMemoryPool(pool, state3, tx3, false, &missingInputs));
|
||||||
|
EXPECT_NE(state3.GetRejectReason(), "bad-txns-version-too-low");
|
||||||
|
|
||||||
|
// Clear the limit
|
||||||
|
mapArgs.erase("-mempooltxinputlimit");
|
||||||
|
|
||||||
|
// Check it no longer fails due to exceeding the limit
|
||||||
|
CValidationState state4;
|
||||||
|
EXPECT_FALSE(AcceptToMemoryPool(pool, state4, tx3, false, &missingInputs));
|
||||||
|
EXPECT_EQ(state4.GetRejectReason(), "bad-txns-version-too-low");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue