Skip to content

Commit bc5fecd

Browse files
committed
reverse the change to get_bound_port, make it tokio again
1 parent ba36b04 commit bc5fecd

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

rpc/tests/cli.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use predicates::str;
1313
use rpc::server::{WalletImpl, WalletServer};
1414
use rpc::wallet::{TxConfidence, WalletService, WalletServiceImpl, WalletServiceMock, WalletTx};
1515
use testenv::TestEnv;
16+
use tokio::net::TcpListener;
1617
use tokio::task::{self, JoinHandle};
1718
use tonic::transport::server::TcpIncoming;
1819
use tonic::transport::{self, Server};
@@ -100,7 +101,7 @@ fn test_cli_no_connection() {
100101
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
101102
async fn test_cli_wallet_balance() {
102103
let testenv = TestEnv::new().expect("testEnv could not start");
103-
let (port, listener) = TestEnv::get_bound_port().expect("listener");
104+
let (port, listener) = TestEnv::get_bound_port().await.expect("listener");
104105
spawn_wallet_grpc_service(
105106
listener,
106107
WalletServiceImpl::create_with_rpc_params(testenv.bitcoin_core_rpc_client().unwrap()),
@@ -116,7 +117,7 @@ async fn test_cli_wallet_balance() {
116117
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
117118
async fn test_cli_new_address() {
118119
let testenv = TestEnv::new().expect("testEnv could not start"); // TODO: this doesnt make sense as a CLI make only sense if the bitcoind is
119-
let (port, listener) = TestEnv::get_bound_port().expect("listener");
120+
let (port, listener) = TestEnv::get_bound_port().await.expect("listener");
120121
spawn_wallet_grpc_service(
121122
listener,
122123
WalletServiceImpl::create_with_rpc_params(testenv.bitcoin_core_rpc_client().unwrap()),
@@ -141,7 +142,7 @@ async fn test_cli_list_unspent() {
141142
.some_call(matching!()).returns(vec![mock_utxo()]);
142143
let mock_wallet_service = Unimock::new(clause).no_verify_in_drop();
143144

144-
let (port, listener) = TestEnv::get_bound_port().expect("listener");
145+
let (port, listener) = TestEnv::get_bound_port().await.expect("listener");
145146
spawn_wallet_grpc_service(listener, mock_wallet_service);
146147

147148
task::spawn_blocking(move || assert_cli_with_port(port, ["list-unspent"]))
@@ -159,7 +160,7 @@ async fn test_cli_notify_confidence() {
159160
.answers(&|_, _| mock_confidence_stream());
160161
let mock_wallet_service = Unimock::new(clause).no_verify_in_drop();
161162

162-
let (port, listener) = TestEnv::get_bound_port().expect("listener");
163+
let (port, listener) = TestEnv::get_bound_port().await.expect("listener");
163164
spawn_wallet_grpc_service(listener, mock_wallet_service);
164165

165166
task::spawn_blocking(move || assert_cli_with_port(port, ["notify-confidence",
@@ -236,13 +237,11 @@ fn assert_cli_with_port<'a>(port: u16, args: impl IntoIterator<Item=&'a str>) ->
236237
}
237238

238239
fn spawn_wallet_grpc_service(
239-
listener: std::net::TcpListener,
240+
listener: TcpListener,
240241
wallet_service: impl WalletService + Send + Sync + 'static,
241242
) -> JoinHandle<Result<(), transport::Error>> {
242-
listener.set_nonblocking(true).expect("set_nonblocking");
243-
let tokio_listener = tokio::net::TcpListener::from_std(listener).expect("from_std");
244243
let wallet = WalletImpl { wallet_service: Arc::new(wallet_service) };
245-
let incoming = TcpIncoming::from(tokio_listener);
244+
let incoming = TcpIncoming::from(listener);
246245

247246
task::spawn(async move {
248247
Server::builder()

testenv/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ use secp::Scalar;
2323
use sha2::Sha256;
2424
use simple_semaphore::{Permit, Semaphore};
2525
use tempfile::{tempdir, TempDir};
26+
use tokio::net::TcpListener;
2627

2728
/// Bitcoin regtest environment manager
2829
pub struct TestEnv {
@@ -497,9 +498,9 @@ impl TestEnv {
497498

498499
/// Returns a `TcpListener` bound to an available port (port 0 lets OS assign).
499500
/// This avoids race conditions by keeping the port bound until used.
500-
pub fn get_bound_port() -> Result<(u16, std::net::TcpListener)> {
501-
let listener = std::net::TcpListener::bind("127.0.0.1:0")?;
502-
let port = listener.local_addr()?.port();
501+
pub async fn get_bound_port() -> Result<(u16, TcpListener)> {
502+
let listener = TcpListener::bind("127.0.0.1:0").await?;
503+
let port = listener.local_addr().unwrap().port();
503504
Ok((port, listener))
504505
}
505506
}

0 commit comments

Comments
 (0)