aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjosibake <josibake@protonmail.com>2021-08-12 15:38:28 +0200
committerjosibake <josibake@protonmail.com>2021-11-02 10:05:38 +0100
commit2ee406ce3e9c252734cb391d85044ac389c34279 (patch)
treee3c4dcda509da701bd70280a49e0d4965eab9c0d
parent35d928c63237e31c99215e2d9d84782befd618d5 (diff)
downloadbitcoin-2ee406ce3e9c252734cb391d85044ac389c34279.tar.xz
test: add functional test for deprecatedrpc=fees
Test for old fields when `-deprecatedrpc=fees` flag is passed and verify values in the deprecated fields match values in the fees sub-object.
-rwxr-xr-xtest/functional/rpc_mempool_entry_fee_fields_deprecation.py67
-rwxr-xr-xtest/functional/test_runner.py1
2 files changed, 68 insertions, 0 deletions
diff --git a/test/functional/rpc_mempool_entry_fee_fields_deprecation.py b/test/functional/rpc_mempool_entry_fee_fields_deprecation.py
new file mode 100755
index 0000000000..82761ff7c8
--- /dev/null
+++ b/test/functional/rpc_mempool_entry_fee_fields_deprecation.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+# Copyright (c) 2021 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+"""Test deprecation of fee fields from top level mempool entry object"""
+
+from test_framework.blocktools import COIN
+from test_framework.test_framework import BitcoinTestFramework
+from test_framework.util import assert_equal
+from test_framework.wallet import MiniWallet
+
+
+def assertions_helper(new_object, deprecated_object, deprecated_fields):
+ for field in deprecated_fields:
+ assert field in deprecated_object
+ assert field not in new_object
+
+
+class MempoolFeeFieldsDeprecationTest(BitcoinTestFramework):
+ def set_test_params(self):
+ self.num_nodes = 2
+ self.extra_args = [[], ["-deprecatedrpc=fees"]]
+
+ def run_test(self):
+ # we get spendable outputs from the premined chain starting
+ # at block 76. see BitcoinTestFramework._initialize_chain() for details
+ self.wallet = MiniWallet(self.nodes[0])
+ self.wallet.rescan_utxos()
+
+ # we create the tx on the first node and wait until it syncs to node_deprecated
+ # thus, any differences must be coming from getmempoolentry or getrawmempool
+ tx = self.wallet.send_self_transfer(from_node=self.nodes[0])
+ self.nodes[1].sendrawtransaction(tx["hex"])
+
+ deprecated_fields = ["ancestorfees", "descendantfees", "modifiedfee", "fee"]
+ self.test_getmempoolentry(tx["txid"], deprecated_fields)
+ self.test_getrawmempool(tx["txid"], deprecated_fields)
+ self.test_deprecated_fields_match(tx["txid"])
+
+ def test_getmempoolentry(self, txid, deprecated_fields):
+
+ self.log.info("Test getmempoolentry rpc")
+ entry = self.nodes[0].getmempoolentry(txid)
+ deprecated_entry = self.nodes[1].getmempoolentry(txid)
+ assertions_helper(entry, deprecated_entry, deprecated_fields)
+
+ def test_getrawmempool(self, txid, deprecated_fields):
+
+ self.log.info("Test getrawmempool rpc")
+ entry = self.nodes[0].getrawmempool(verbose=True)[txid]
+ deprecated_entry = self.nodes[1].getrawmempool(verbose=True)[txid]
+ assertions_helper(entry, deprecated_entry, deprecated_fields)
+
+ def test_deprecated_fields_match(self, txid):
+
+ self.log.info("Test deprecated fee fields match new fees object")
+ entry = self.nodes[0].getmempoolentry(txid)
+ deprecated_entry = self.nodes[1].getmempoolentry(txid)
+
+ assert_equal(deprecated_entry["fee"], entry["fees"]["base"])
+ assert_equal(deprecated_entry["modifiedfee"], entry["fees"]["modified"])
+ assert_equal(deprecated_entry["descendantfees"], entry["fees"]["descendant"] * COIN)
+ assert_equal(deprecated_entry["ancestorfees"], entry["fees"]["ancestor"] * COIN)
+
+
+if __name__ == "__main__":
+ MempoolFeeFieldsDeprecationTest().main()
diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py
index 916cd94b79..2fc5d2c56e 100755
--- a/test/functional/test_runner.py
+++ b/test/functional/test_runner.py
@@ -309,6 +309,7 @@ BASE_SCRIPTS = [
'feature_presegwit_node_upgrade.py',
'feature_settings.py',
'rpc_getdescriptorinfo.py',
+ 'rpc_mempool_entry_fee_fields_deprecation.py',
'rpc_help.py',
'feature_help.py',
'feature_shutdown.py',