Skip to content

Commit 9c9cc2b

Browse files
esotericnonsensefanquake
authored andcommitted
qa: Add RPC tests for weight in mempool entry
1 parent 54aaa78 commit 9c9cc2b

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

test/functional/feature_segwit.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,16 @@ def run_test(self):
226226
assert tx.wit.is_null() # This should not be a segwit input
227227
assert txid1 in self.nodes[0].getrawmempool()
228228

229+
tx1_hex = self.nodes[0].gettransaction(txid1)['hex']
230+
tx1 = FromHex(CTransaction(), tx1_hex)
231+
232+
# Check that wtxid is properly reported in mempool entry (txid1)
233+
assert_equal(int(self.nodes[0].getmempoolentry(txid1)["wtxid"], 16), tx1.calc_sha256(True))
234+
235+
# Check that weight and vsize are properly reported in mempool entry (txid1)
236+
assert_equal(self.nodes[0].getmempoolentry(txid1)["vsize"], (self.nodes[0].getmempoolentry(txid1)["weight"] + 3) // 4)
237+
assert_equal(self.nodes[0].getmempoolentry(txid1)["weight"], len(tx1.serialize_without_witness())*3 + len(tx1.serialize_with_witness()))
238+
229239
# Now create tx2, which will spend from txid1.
230240
tx = CTransaction()
231241
tx.vin.append(CTxIn(COutPoint(int(txid1, 16), 0), b''))
@@ -235,6 +245,13 @@ def run_test(self):
235245
tx = FromHex(CTransaction(), tx2_hex)
236246
assert not tx.wit.is_null()
237247

248+
# Check that wtxid is properly reported in mempool entry (txid2)
249+
assert_equal(int(self.nodes[0].getmempoolentry(txid2)["wtxid"], 16), tx.calc_sha256(True))
250+
251+
# Check that weight and vsize are properly reported in mempool entry (txid2)
252+
assert_equal(self.nodes[0].getmempoolentry(txid2)["vsize"], (self.nodes[0].getmempoolentry(txid2)["weight"] + 3) // 4)
253+
assert_equal(self.nodes[0].getmempoolentry(txid2)["weight"], len(tx.serialize_without_witness())*3 + len(tx.serialize_with_witness()))
254+
238255
# Now create tx3, which will spend from txid2
239256
tx = CTransaction()
240257
tx.vin.append(CTxIn(COutPoint(int(txid2, 16), 0), b""))
@@ -251,9 +268,13 @@ def run_test(self):
251268
assert txid2 in template_txids
252269
assert txid3 in template_txids
253270

254-
# Check that wtxid is properly reported in mempool entry
271+
# Check that wtxid is properly reported in mempool entry (txid3)
255272
assert_equal(int(self.nodes[0].getmempoolentry(txid3)["wtxid"], 16), tx.calc_sha256(True))
256273

274+
# Check that weight and vsize are properly reported in mempool entry (txid3)
275+
assert_equal(self.nodes[0].getmempoolentry(txid3)["vsize"], (self.nodes[0].getmempoolentry(txid3)["weight"] + 3) // 4)
276+
assert_equal(self.nodes[0].getmempoolentry(txid3)["weight"], len(tx.serialize_without_witness())*3 + len(tx.serialize_with_witness()))
277+
257278
# Mine a block to clear the gbt cache again.
258279
self.nodes[0].generate(1)
259280

0 commit comments

Comments
 (0)