From: 志宇 Date: Thu, 3 Jul 2025 23:59:14 +0000 (+0000) Subject: test(bitcoind_rpc): Detect new mempool txs X-Git-Tag: bitcoind_rpc-0.21.0~5^2~4 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/psbt/enum.GetKeyError.html?a=commitdiff_plain;h=67dfb0b1482f81fe5a888e94c8f54dc5be99e409;p=bdk test(bitcoind_rpc): Detect new mempool txs --- diff --git a/crates/bitcoind_rpc/tests/test_emitter.rs b/crates/bitcoind_rpc/tests/test_emitter.rs index 9bfa1289..187325a8 100644 --- a/crates/bitcoind_rpc/tests/test_emitter.rs +++ b/crates/bitcoind_rpc/tests/test_emitter.rs @@ -11,7 +11,7 @@ use bdk_chain::{ Balance, BlockId, CanonicalizationParams, IndexedTxGraph, Merge, }; use bdk_testenv::{anyhow, TestEnv}; -use bitcoin::{hashes::Hash, Block, OutPoint, ScriptBuf, WScriptHash}; +use bitcoin::{hashes::Hash, Block, Network, OutPoint, ScriptBuf, WScriptHash}; use bitcoincore_rpc::RpcApi; /// Ensure that blocks are emitted in order even after reorg. @@ -351,7 +351,7 @@ fn tx_can_become_unconfirmed_after_reorg() -> anyhow::Result<()> { .get_new_address(None, None)? .assume_checked(); let spk_to_track = ScriptBuf::new_p2wsh(&WScriptHash::all_zeros()); - let addr_to_track = Address::from_script(&spk_to_track, bitcoin::Network::Regtest)?; + let addr_to_track = Address::from_script(&spk_to_track, Network::Regtest)?; // setup receiver let (mut recv_chain, _) = LocalChain::from_genesis_hash(env.rpc_client().get_block_hash(0)?); @@ -867,3 +867,37 @@ fn test_expect_tx_evicted() -> anyhow::Result<()> { Ok(()) } + +#[test] +fn detect_new_mempool_txs() -> anyhow::Result<()> { + let env = TestEnv::new()?; + env.mine_blocks(101, None)?; + + let addr = env + .rpc_client() + .get_new_address(None, None)? + .require_network(Network::Regtest)?; + + let mut emitter = Emitter::new( + env.rpc_client(), + CheckPoint::new(BlockId { + height: 0, + hash: env.rpc_client().get_block_hash(0)?, + }), + 0, + NO_EXPECTED_MEMPOOL_TXIDS, + ); + + while let Some(_) = emitter.next_block()? {} + + for n in 0..5 { + let txid = env.send(&addr, Amount::ONE_BTC)?; + let new_txs = emitter.mempool()?.new_txs; + assert!( + new_txs.iter().any(|(tx, _)| tx.compute_txid() == txid), + "must detect new tx {n}" + ); + } + + Ok(()) +}