]> Git Repo - VerusCoin.git/commitdiff
Add test for -mempooltxinputlimit
authorJack Grigg <[email protected]>
Sat, 17 Jun 2017 02:59:16 +0000 (14:59 +1200)
committerJack Grigg <[email protected]>
Sat, 17 Jun 2017 02:59:16 +0000 (14:59 +1200)
src/gtest/test_mempool.cpp

index 88b0e25933ee565497b89a281118ffb64306c194..e84b2deadcfef0cf37a17f73c2ecd9518ba3c5b5 100644 (file)
@@ -1,10 +1,13 @@
 #include <gtest/gtest.h>
 #include <gtest/gtest-spi.h>
 
+#include "consensus/validation.h"
 #include "core_io.h"
+#include "main.h"
 #include "primitives/transaction.h"
 #include "txmempool.h"
 #include "policy/fees.h"
+#include "util.h"
 
 // Fake the input of transaction 5295156213414ed77f6e538e7e8ebe14492156906b9fe995b242477818789364
 // - 532639cc6bebed47c1c69ae36dd498c68a012e74ad12729adbd3dbb56f8f3f4a, 0
@@ -87,3 +90,45 @@ TEST(Mempool, PriorityStatsDoNotCrash) {
 
     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");
+}
+
This page took 0.027212 seconds and 4 git commands to generate.