Skip to content

Commit 359ac38

Browse files
committed
Implement disconnectnode method and test
1 parent bc875a2 commit 359ac38

File tree

15 files changed

+39
-0
lines changed

15 files changed

+39
-0
lines changed

client/src/client_sync/v17/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
7373
// == Network ==
7474
crate::impl_client_v17__addnode!();
7575
crate::impl_client_v17__clearbanned!();
76+
crate::impl_client_v17__disconnectnode!();
7677
crate::impl_client_v17__getaddednodeinfo!();
7778
crate::impl_client_v17__getnettotals!();
7879
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v17/network.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,22 @@ macro_rules! impl_client_v17__clearbanned {
4141
};
4242
}
4343

44+
/// Implements Bitcoin Core JSON-RPC API method `disconnectnode`
45+
#[macro_export]
46+
macro_rules! impl_client_v17__disconnectnode {
47+
() => {
48+
impl Client {
49+
pub fn disconnect_node(&self, address: &str) -> Result<()> {
50+
match self.call("disconnectnode", &[into_json(address)?]) {
51+
Ok(serde_json::Value::Null) => Ok(()),
52+
Ok(res) => Err(Error::Returned(res.to_string())),
53+
Err(err) => Err(err.into()),
54+
}
55+
}
56+
}
57+
};
58+
}
59+
4460
/// Implements Bitcoin Core JSON-RPC API method `getaddednodeinfo`
4561
#[macro_export]
4662
macro_rules! impl_client_v17__getaddednodeinfo {

client/src/client_sync/v18/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ crate::impl_client_v17__submitblock!();
7777
// == Network ==
7878
crate::impl_client_v17__addnode!();
7979
crate::impl_client_v17__clearbanned!();
80+
crate::impl_client_v17__disconnectnode!();
8081
crate::impl_client_v17__getaddednodeinfo!();
8182
crate::impl_client_v17__getnettotals!();
8283
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v19/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ crate::impl_client_v17__submitblock!();
7575
// == Network ==
7676
crate::impl_client_v17__addnode!();
7777
crate::impl_client_v17__clearbanned!();
78+
crate::impl_client_v17__disconnectnode!();
7879
crate::impl_client_v17__getaddednodeinfo!();
7980
crate::impl_client_v17__getnettotals!();
8081
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v20.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ crate::impl_client_v17__submitblock!();
7272
// == Network ==
7373
crate::impl_client_v17__addnode!();
7474
crate::impl_client_v17__clearbanned!();
75+
crate::impl_client_v17__disconnectnode!();
7576
crate::impl_client_v17__getaddednodeinfo!();
7677
crate::impl_client_v17__getnettotals!();
7778
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v21/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
7474
// == Network ==
7575
crate::impl_client_v17__addnode!();
7676
crate::impl_client_v17__clearbanned!();
77+
crate::impl_client_v17__disconnectnode!();
7778
crate::impl_client_v17__getaddednodeinfo!();
7879
crate::impl_client_v17__getnettotals!();
7980
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v22/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
7474
// == Network ==
7575
crate::impl_client_v17__addnode!();
7676
crate::impl_client_v17__clearbanned!();
77+
crate::impl_client_v17__disconnectnode!();
7778
crate::impl_client_v17__getaddednodeinfo!();
7879
crate::impl_client_v17__getnettotals!();
7980
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v23/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
7676
// == Network ==
7777
crate::impl_client_v17__addnode!();
7878
crate::impl_client_v17__clearbanned!();
79+
crate::impl_client_v17__disconnectnode!();
7980
crate::impl_client_v17__getaddednodeinfo!();
8081
crate::impl_client_v17__getnettotals!();
8182
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v24.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
7373
// == Network ==
7474
crate::impl_client_v17__addnode!();
7575
crate::impl_client_v17__clearbanned!();
76+
crate::impl_client_v17__disconnectnode!();
7677
crate::impl_client_v17__getaddednodeinfo!();
7778
crate::impl_client_v17__getnettotals!();
7879
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v25.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ crate::impl_client_v17__submitblock!();
7373
// == Network ==
7474
crate::impl_client_v17__addnode!();
7575
crate::impl_client_v17__clearbanned!();
76+
crate::impl_client_v17__disconnectnode!();
7677
crate::impl_client_v17__getaddednodeinfo!();
7778
crate::impl_client_v17__getnettotals!();
7879
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v26/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ crate::impl_client_v17__submitblock!();
7878
// == Network ==
7979
crate::impl_client_v17__addnode!();
8080
crate::impl_client_v17__clearbanned!();
81+
crate::impl_client_v17__disconnectnode!();
8182
crate::impl_client_v17__getaddednodeinfo!();
8283
crate::impl_client_v17__getnettotals!();
8384
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v27.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ crate::impl_client_v17__submitblock!();
7474
// == Network ==
7575
crate::impl_client_v17__addnode!();
7676
crate::impl_client_v17__clearbanned!();
77+
crate::impl_client_v17__disconnectnode!();
7778
crate::impl_client_v17__getaddednodeinfo!();
7879
crate::impl_client_v17__getnettotals!();
7980
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v28/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
7676
// == Network ==
7777
crate::impl_client_v17__addnode!();
7878
crate::impl_client_v17__clearbanned!();
79+
crate::impl_client_v17__disconnectnode!();
7980
crate::impl_client_v17__getaddednodeinfo!();
8081
crate::impl_client_v17__getnettotals!();
8182
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v29/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ crate::impl_client_v17__submitblock!();
7676
// == Network ==
7777
crate::impl_client_v17__addnode!();
7878
crate::impl_client_v17__clearbanned!();
79+
crate::impl_client_v17__disconnectnode!();
7980
crate::impl_client_v17__getaddednodeinfo!();
8081
crate::impl_client_v17__getnettotals!();
8182
crate::impl_client_v17__getnetworkinfo!();

integration_test/tests/network.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ fn network__clear_banned() {
3333
node.client.clear_banned().expect("clearbanned");
3434
}
3535

36+
#[test]
37+
fn network__disconnect_node() {
38+
let (_node1, node2, _node3) = integration_test::three_node_network();
39+
40+
let peers = node2.client.get_peer_info().expect("getpeerinfo");
41+
let peer = peers.0.first().expect("should have at least one peer");
42+
43+
node2.client.disconnect_node(&peer.address).expect("disconnectnode");
44+
}
45+
3646
#[test]
3747
fn network__get_added_node_info() {
3848
let node = Node::with_wallet(Wallet::None, &[]);

0 commit comments

Comments
 (0)