From 8b1f5782afd21aba158fe1b23103997067e414c5 Mon Sep 17 00:00:00 2001 From: GideonBature Date: Sat, 31 May 2025 19:50:14 +0100 Subject: [PATCH] Implement ping method and test --- client/src/client_sync/v17/mod.rs | 1 + client/src/client_sync/v17/network.rs | 16 ++++++++++++++++ client/src/client_sync/v18/mod.rs | 1 + client/src/client_sync/v19/mod.rs | 1 + client/src/client_sync/v20/mod.rs | 1 + client/src/client_sync/v21/mod.rs | 1 + client/src/client_sync/v22/mod.rs | 1 + client/src/client_sync/v23/mod.rs | 1 + client/src/client_sync/v24/mod.rs | 1 + client/src/client_sync/v25/mod.rs | 1 + client/src/client_sync/v26/mod.rs | 1 + client/src/client_sync/v27/mod.rs | 1 + client/src/client_sync/v28/mod.rs | 1 + client/src/client_sync/v29/mod.rs | 1 + integration_test/tests/network.rs | 6 ++++++ 15 files changed, 35 insertions(+) diff --git a/client/src/client_sync/v17/mod.rs b/client/src/client_sync/v17/mod.rs index 5af9d2f5..f8ccae5d 100644 --- a/client/src/client_sync/v17/mod.rs +++ b/client/src/client_sync/v17/mod.rs @@ -79,6 +79,7 @@ crate::impl_client_v17__get_connection_count!(); crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v17/network.rs b/client/src/client_sync/v17/network.rs index afd9f257..056f618e 100644 --- a/client/src/client_sync/v17/network.rs +++ b/client/src/client_sync/v17/network.rs @@ -119,6 +119,22 @@ macro_rules! impl_client_v17__get_peer_info { }; } +/// Implements Bitcoin Core JSON-RPC API method `ping` +#[macro_export] +macro_rules! impl_client_v17__ping { + () => { + impl Client { + pub fn ping(&self) -> Result<()> { + match self.call("ping", &[]) { + Ok(serde_json::Value::Null) => Ok(()), + Ok(res) => Err(Error::Returned(res.to_string())), + Err(err) => Err(err.into()), + } + } + } + }; +} + /// Implements Bitcoin Core JSON-RPC API method `setban` #[macro_export] macro_rules! impl_client_v17__set_ban { diff --git a/client/src/client_sync/v18/mod.rs b/client/src/client_sync/v18/mod.rs index e6931846..78150306 100644 --- a/client/src/client_sync/v18/mod.rs +++ b/client/src/client_sync/v18/mod.rs @@ -84,6 +84,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v19/mod.rs b/client/src/client_sync/v19/mod.rs index 04caf1b8..4d24dcfa 100644 --- a/client/src/client_sync/v19/mod.rs +++ b/client/src/client_sync/v19/mod.rs @@ -82,6 +82,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v20/mod.rs b/client/src/client_sync/v20/mod.rs index bebb6e6c..2c1fd763 100644 --- a/client/src/client_sync/v20/mod.rs +++ b/client/src/client_sync/v20/mod.rs @@ -79,6 +79,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v21/mod.rs b/client/src/client_sync/v21/mod.rs index 0c0a7bc0..c30c338f 100644 --- a/client/src/client_sync/v21/mod.rs +++ b/client/src/client_sync/v21/mod.rs @@ -81,6 +81,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index 9d3e3330..ca5c5f0b 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -81,6 +81,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index c7b2b518..7ce53204 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -83,6 +83,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index 61e6d656..be2d0966 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -80,6 +80,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index 5de97f47..8a53bab2 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -80,6 +80,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index d18712ba..5362bbd0 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -85,6 +85,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index 378c0259..6291f632 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -81,6 +81,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index 2f4c45bd..a497c14e 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -83,6 +83,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index f12f4b01..8ed235e1 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -83,6 +83,7 @@ crate::impl_client_v17__get_net_totals!(); crate::impl_client_v17__get_network_info!(); crate::impl_client_v18__get_node_addresses!(); crate::impl_client_v17__get_peer_info!(); +crate::impl_client_v17__ping!(); crate::impl_client_v17__set_ban!(); // == Rawtransactions == diff --git a/integration_test/tests/network.rs b/integration_test/tests/network.rs index 531f109a..88d58504 100644 --- a/integration_test/tests/network.rs +++ b/integration_test/tests/network.rs @@ -113,6 +113,12 @@ fn get_peer_info_three_node_network() { assert!(node3.peers_connected() >= 1); } +#[test] +fn network__ping() { + let node = Node::with_wallet(Wallet::None, &[]); + node.client.ping().expect("ping"); +} + #[test] fn network__set_ban() { let node = Node::with_wallet(Wallet::None, &[]);