Skip to content

Commit 2327f59

Browse files
committed
DRY the get_route_and_payment_hash!() macro duplicated in tests
1 parent 5bbb2c7 commit 2327f59

File tree

2 files changed

+23
-61
lines changed

2 files changed

+23
-61
lines changed

lightning/src/ln/functional_test_utils.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,18 @@ macro_rules! get_payment_preimage_hash {
904904
}
905905
}
906906

907+
#[cfg(test)]
908+
macro_rules! get_route_and_payment_hash {
909+
($send_node: expr, $recv_node: expr, $recv_value: expr) => {{
910+
let (payment_preimage, payment_hash) = get_payment_preimage_hash!($recv_node);
911+
let net_graph_msg_handler = &$send_node.net_graph_msg_handler;
912+
let route = get_route(&$send_node.node.get_our_node_id(),
913+
&net_graph_msg_handler.network_graph.read().unwrap(),
914+
&$recv_node.node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, $send_node.logger).unwrap();
915+
(route, payment_hash, payment_preimage)
916+
}}
917+
}
918+
907919
macro_rules! expect_pending_htlcs_forwardable_ignore {
908920
($node: expr) => {{
909921
let events = $node.node.get_and_clear_pending_events();

lightning/src/ln/functional_tests.rs

Lines changed: 11 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,18 +1568,8 @@ fn test_fee_spike_violation_fails_htlc() {
15681568
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
15691569
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
15701570
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
1571-
let logger = test_utils::TestLogger::new();
1572-
1573-
macro_rules! get_route_and_payment_hash {
1574-
($recv_value: expr) => {{
1575-
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(nodes[1]);
1576-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler.network_graph.read().unwrap();
1577-
let route = get_route(&nodes[0].node.get_our_node_id(), net_graph_msg_handler, &nodes.last().unwrap().node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1578-
(route, payment_hash, payment_preimage)
1579-
}}
1580-
}
15811571

1582-
let (route, payment_hash, _) = get_route_and_payment_hash!(3460001);
1572+
let (route, payment_hash, _) = get_route_and_payment_hash!(nodes[0], nodes[1], 3460001);
15831573
// Need to manually create the update_add_htlc message to go around the channel reserve check in send_htlc()
15841574
let secp_ctx = Secp256k1::new();
15851575
let session_priv = SecretKey::from_slice(&[42; 32]).expect("RNG is bad!");
@@ -1708,18 +1698,8 @@ fn test_chan_reserve_violation_outbound_htlc_inbound_chan() {
17081698
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
17091699
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
17101700
let _ = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
1711-
let logger = test_utils::TestLogger::new();
1712-
1713-
macro_rules! get_route_and_payment_hash {
1714-
($recv_value: expr) => {{
1715-
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(nodes[1]);
1716-
let net_graph_msg_handler = &nodes[1].net_graph_msg_handler;
1717-
let route = get_route(&nodes[1].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes.first().unwrap().node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1718-
(route, payment_hash, payment_preimage)
1719-
}}
1720-
}
17211701

1722-
let (route, our_payment_hash, _) = get_route_and_payment_hash!(4843000);
1702+
let (route, our_payment_hash, _) = get_route_and_payment_hash!(nodes[1], nodes[0], 4843000);
17231703
unwrap_send_err!(nodes[1].node.send_payment(&route, our_payment_hash, &None), true, APIError::ChannelUnavailable { ref err },
17241704
assert_eq!(err, "Cannot send value that would put counterparty balance under holder-announced channel reserve value"));
17251705
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
@@ -1740,18 +1720,8 @@ fn test_chan_reserve_violation_inbound_htlc_outbound_channel() {
17401720
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
17411721
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
17421722
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
1743-
let logger = test_utils::TestLogger::new();
17441723

1745-
macro_rules! get_route_and_payment_hash {
1746-
($recv_value: expr) => {{
1747-
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(nodes[1]);
1748-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
1749-
let route = get_route(&nodes[1].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes.first().unwrap().node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1750-
(route, payment_hash, payment_preimage)
1751-
}}
1752-
}
1753-
1754-
let (route, payment_hash, _) = get_route_and_payment_hash!(1000);
1724+
let (route, payment_hash, _) = get_route_and_payment_hash!(nodes[1], nodes[0], 1000);
17551725
// Need to manually create the update_add_htlc message to go around the channel reserve check in send_htlc()
17561726
let secp_ctx = Secp256k1::new();
17571727
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
@@ -1836,16 +1806,6 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
18361806
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
18371807
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
18381808
let _ = create_announced_chan_between_nodes_with_value(&nodes, 1, 2, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
1839-
let logger = test_utils::TestLogger::new();
1840-
1841-
macro_rules! get_route_and_payment_hash {
1842-
($recv_value: expr) => {{
1843-
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(nodes[0]);
1844-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
1845-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes.last().unwrap().node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1846-
(route, payment_hash, payment_preimage)
1847-
}}
1848-
}
18491809

18501810
let feemsat = 239;
18511811
let total_routing_fee_msat = (nodes.len() - 2) as u64 * feemsat;
@@ -1858,7 +1818,7 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
18581818
let amt_msat_1 = recv_value_1 + total_routing_fee_msat;
18591819

18601820
// Add a pending HTLC.
1861-
let (route_1, our_payment_hash_1, _) = get_route_and_payment_hash!(amt_msat_1);
1821+
let (route_1, our_payment_hash_1, _) = get_route_and_payment_hash!(nodes[0], nodes[2], amt_msat_1);
18621822
let payment_event_1 = {
18631823
nodes[0].node.send_payment(&route_1, our_payment_hash_1, &None).unwrap();
18641824
check_added_monitors!(nodes[0], 1);
@@ -1873,7 +1833,7 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
18731833
let commit_tx_fee_2_htlcs = commit_tx_fee_msat(feerate, 2);
18741834
let recv_value_2 = chan_stat.value_to_self_msat - amt_msat_1 - chan_stat.channel_reserve_msat - total_routing_fee_msat - commit_tx_fee_2_htlcs + 1;
18751835
let amt_msat_2 = recv_value_2 + total_routing_fee_msat;
1876-
let (route_2, _, _) = get_route_and_payment_hash!(amt_msat_2);
1836+
let (route_2, _, _) = get_route_and_payment_hash!(nodes[0], nodes[2], amt_msat_2);
18771837

18781838
// Need to manually create the update_add_htlc message to go around the channel reserve check in send_htlc()
18791839
let secp_ctx = Secp256k1::new();
@@ -1931,23 +1891,13 @@ fn test_channel_reserve_holding_cell_htlcs() {
19311891
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
19321892
let chan_1 = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 190000, 1001, InitFeatures::known(), InitFeatures::known());
19331893
let chan_2 = create_announced_chan_between_nodes_with_value(&nodes, 1, 2, 190000, 1001, InitFeatures::known(), InitFeatures::known());
1934-
let logger = test_utils::TestLogger::new();
19351894

19361895
let mut stat01 = get_channel_value_stat!(nodes[0], chan_1.2);
19371896
let mut stat11 = get_channel_value_stat!(nodes[1], chan_1.2);
19381897

19391898
let mut stat12 = get_channel_value_stat!(nodes[1], chan_2.2);
19401899
let mut stat22 = get_channel_value_stat!(nodes[2], chan_2.2);
19411900

1942-
macro_rules! get_route_and_payment_hash {
1943-
($recv_value: expr) => {{
1944-
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(nodes[0]);
1945-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
1946-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes.last().unwrap().node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1947-
(route, payment_hash, payment_preimage)
1948-
}}
1949-
}
1950-
19511901
macro_rules! expect_forward {
19521902
($node: expr) => {{
19531903
let mut events = $node.node.get_and_clear_pending_msg_events();
@@ -1966,7 +1916,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
19661916

19671917
// attempt to send amt_msat > their_max_htlc_value_in_flight_msat
19681918
{
1969-
let (mut route, our_payment_hash, _) = get_route_and_payment_hash!(recv_value_0);
1919+
let (mut route, our_payment_hash, _) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_0);
19701920
route.paths[0].last_mut().unwrap().fee_msat += 1;
19711921
assert!(route.paths[0].iter().rev().skip(1).all(|h| h.fee_msat == feemsat));
19721922
unwrap_send_err!(nodes[0].node.send_payment(&route, our_payment_hash, &None), true, APIError::ChannelUnavailable { ref err },
@@ -2018,7 +1968,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
20181968
let recv_value_1 = (stat01.value_to_self_msat - stat01.channel_reserve_msat - total_fee_msat - commit_tx_fee_2_htlcs)/2;
20191969
let amt_msat_1 = recv_value_1 + total_fee_msat;
20201970

2021-
let (route_1, our_payment_hash_1, our_payment_preimage_1) = get_route_and_payment_hash!(recv_value_1);
1971+
let (route_1, our_payment_hash_1, our_payment_preimage_1) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_1);
20221972
let payment_event_1 = {
20231973
nodes[0].node.send_payment(&route_1, our_payment_hash_1, &None).unwrap();
20241974
check_added_monitors!(nodes[0], 1);
@@ -2032,7 +1982,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
20321982
// channel reserve test with htlc pending output > 0
20331983
let recv_value_2 = stat01.value_to_self_msat - amt_msat_1 - stat01.channel_reserve_msat - total_fee_msat - commit_tx_fee_2_htlcs;
20341984
{
2035-
let (route, our_payment_hash, _) = get_route_and_payment_hash!(recv_value_2 + 1);
1985+
let (route, our_payment_hash, _) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_2 + 1);
20361986
unwrap_send_err!(nodes[0].node.send_payment(&route, our_payment_hash, &None), true, APIError::ChannelUnavailable { ref err },
20371987
assert!(regex::Regex::new(r"Cannot send value that would put our balance under counterparty-announced channel reserve value \(\d+\)").unwrap().is_match(err)));
20381988
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -2049,7 +1999,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
20491999
}
20502000

20512001
// now see if they go through on both sides
2052-
let (route_21, our_payment_hash_21, our_payment_preimage_21) = get_route_and_payment_hash!(recv_value_21);
2002+
let (route_21, our_payment_hash_21, our_payment_preimage_21) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_21);
20532003
// but this will stuck in the holding cell
20542004
nodes[0].node.send_payment(&route_21, our_payment_hash_21, &None).unwrap();
20552005
check_added_monitors!(nodes[0], 0);
@@ -2058,14 +2008,14 @@ fn test_channel_reserve_holding_cell_htlcs() {
20582008

20592009
// test with outbound holding cell amount > 0
20602010
{
2061-
let (route, our_payment_hash, _) = get_route_and_payment_hash!(recv_value_22+1);
2011+
let (route, our_payment_hash, _) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_22+1);
20622012
unwrap_send_err!(nodes[0].node.send_payment(&route, our_payment_hash, &None), true, APIError::ChannelUnavailable { ref err },
20632013
assert!(regex::Regex::new(r"Cannot send value that would put our balance under counterparty-announced channel reserve value \(\d+\)").unwrap().is_match(err)));
20642014
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
20652015
nodes[0].logger.assert_log_contains("lightning::ln::channelmanager".to_string(), "Cannot send value that would put our balance under counterparty-announced channel reserve value".to_string(), 2);
20662016
}
20672017

2068-
let (route_22, our_payment_hash_22, our_payment_preimage_22) = get_route_and_payment_hash!(recv_value_22);
2018+
let (route_22, our_payment_hash_22, our_payment_preimage_22) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_22);
20692019
// this will also stuck in the holding cell
20702020
nodes[0].node.send_payment(&route_22, our_payment_hash_22, &None).unwrap();
20712021
check_added_monitors!(nodes[0], 0);

0 commit comments

Comments
 (0)