Skip to content

Commit f48fe4b

Browse files
committed
Make the commitment signed dance a macro in ChannelManager tests
1 parent 5ef88ce commit f48fe4b

File tree

1 file changed

+51
-72
lines changed

1 file changed

+51
-72
lines changed

src/ln/channelmanager.rs

Lines changed: 51 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -2614,6 +2614,54 @@ mod tests {
26142614
}
26152615
}
26162616

2617+
macro_rules! commitment_signed_dance {
2618+
($node_a: expr, $node_b: expr, $commitment_signed: expr, $fail_backwards: expr) => {
2619+
{
2620+
{
2621+
let added_monitors = $node_a.chan_monitor.added_monitors.lock().unwrap();
2622+
assert!(added_monitors.is_empty());
2623+
}
2624+
let (as_revoke_and_ack, as_commitment_signed) = $node_a.node.handle_commitment_signed(&$node_b.node.get_our_node_id(), &$commitment_signed).unwrap();
2625+
{
2626+
let mut added_monitors = $node_a.chan_monitor.added_monitors.lock().unwrap();
2627+
assert_eq!(added_monitors.len(), 1);
2628+
added_monitors.clear();
2629+
}
2630+
{
2631+
let added_monitors = $node_b.chan_monitor.added_monitors.lock().unwrap();
2632+
assert!(added_monitors.is_empty());
2633+
}
2634+
assert!($node_b.node.handle_revoke_and_ack(&$node_a.node.get_our_node_id(), &as_revoke_and_ack).unwrap().is_none());
2635+
{
2636+
let mut added_monitors = $node_b.chan_monitor.added_monitors.lock().unwrap();
2637+
assert_eq!(added_monitors.len(), 1);
2638+
added_monitors.clear();
2639+
}
2640+
let (bs_revoke_and_ack, bs_none) = $node_b.node.handle_commitment_signed(&$node_a.node.get_our_node_id(), &as_commitment_signed.unwrap()).unwrap();
2641+
assert!(bs_none.is_none());
2642+
{
2643+
let mut added_monitors = $node_b.chan_monitor.added_monitors.lock().unwrap();
2644+
assert_eq!(added_monitors.len(), 1);
2645+
added_monitors.clear();
2646+
}
2647+
if $fail_backwards {
2648+
assert!($node_a.node.get_and_clear_pending_events().is_empty());
2649+
}
2650+
assert!($node_a.node.handle_revoke_and_ack(&$node_b.node.get_our_node_id(), &bs_revoke_and_ack).unwrap().is_none());
2651+
{
2652+
let mut added_monitors = $node_a.chan_monitor.added_monitors.lock().unwrap();
2653+
if $fail_backwards {
2654+
assert_eq!(added_monitors.len(), 2);
2655+
assert!(added_monitors[0].0 != added_monitors[1].0);
2656+
} else {
2657+
assert_eq!(added_monitors.len(), 1);
2658+
}
2659+
added_monitors.clear();
2660+
}
2661+
}
2662+
}
2663+
}
2664+
26172665
fn send_along_route(origin_node: &Node, route: Route, expected_route: &[&Node], recv_value: u64) -> ([u8; 32], [u8; 32]) {
26182666
let our_payment_preimage = [*origin_node.network_payment_count.borrow(); 32];
26192667
*origin_node.network_payment_count.borrow_mut() += 1;
@@ -2648,26 +2696,7 @@ mod tests {
26482696
assert_eq!(added_monitors.len(), 0);
26492697
}
26502698

2651-
let revoke_and_ack = node.node.handle_commitment_signed(&prev_node.node.get_our_node_id(), &payment_event.commitment_msg).unwrap();
2652-
{
2653-
let mut added_monitors = node.chan_monitor.added_monitors.lock().unwrap();
2654-
assert_eq!(added_monitors.len(), 1);
2655-
added_monitors.clear();
2656-
}
2657-
assert!(prev_node.node.handle_revoke_and_ack(&node.node.get_our_node_id(), &revoke_and_ack.0).unwrap().is_none());
2658-
let prev_revoke_and_ack = prev_node.node.handle_commitment_signed(&node.node.get_our_node_id(), &revoke_and_ack.1.unwrap()).unwrap();
2659-
{
2660-
let mut added_monitors = prev_node.chan_monitor.added_monitors.lock().unwrap();
2661-
assert_eq!(added_monitors.len(), 2);
2662-
added_monitors.clear();
2663-
}
2664-
assert!(node.node.handle_revoke_and_ack(&prev_node.node.get_our_node_id(), &prev_revoke_and_ack.0).unwrap().is_none());
2665-
assert!(prev_revoke_and_ack.1.is_none());
2666-
{
2667-
let mut added_monitors = node.chan_monitor.added_monitors.lock().unwrap();
2668-
assert_eq!(added_monitors.len(), 1);
2669-
added_monitors.clear();
2670-
}
2699+
commitment_signed_dance!(node, prev_node, payment_event.commitment_msg, false);
26712700

26722701
let events_1 = node.node.get_and_clear_pending_events();
26732702
assert_eq!(events_1.len(), 1);
@@ -2727,26 +2756,7 @@ mod tests {
27272756
}
27282757
added_monitors.clear();
27292758
}
2730-
let revoke_and_commit = $node.node.handle_commitment_signed(&$prev_node.node.get_our_node_id(), &next_msgs.as_ref().unwrap().1).unwrap();
2731-
{
2732-
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
2733-
assert_eq!(added_monitors.len(), 1);
2734-
added_monitors.clear();
2735-
}
2736-
assert!($prev_node.node.handle_revoke_and_ack(&$node.node.get_our_node_id(), &revoke_and_commit.0).unwrap().is_none());
2737-
let revoke_and_ack = $prev_node.node.handle_commitment_signed(&$node.node.get_our_node_id(), &revoke_and_commit.1.unwrap()).unwrap();
2738-
assert!(revoke_and_ack.1.is_none());
2739-
{
2740-
let mut added_monitors = $prev_node.chan_monitor.added_monitors.lock().unwrap();
2741-
assert_eq!(added_monitors.len(), 2);
2742-
added_monitors.clear();
2743-
}
2744-
assert!($node.node.handle_revoke_and_ack(&$prev_node.node.get_our_node_id(), &revoke_and_ack.0).unwrap().is_none());
2745-
{
2746-
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
2747-
assert_eq!(added_monitors.len(), 1);
2748-
added_monitors.clear();
2749-
}
2759+
commitment_signed_dance!($node, $prev_node, next_msgs.as_ref().unwrap().1, false);
27502760
}
27512761
}
27522762
}
@@ -2843,38 +2853,7 @@ mod tests {
28432853
($node: expr, $prev_node: expr, $last_node: expr) => {
28442854
{
28452855
$node.node.handle_update_fail_htlc(&$prev_node.node.get_our_node_id(), &next_msgs.as_ref().unwrap().0).unwrap();
2846-
let revoke_and_commit = $node.node.handle_commitment_signed(&$prev_node.node.get_our_node_id(), &next_msgs.as_ref().unwrap().1).unwrap();
2847-
2848-
{
2849-
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
2850-
assert_eq!(added_monitors.len(), 1);
2851-
added_monitors.clear();
2852-
}
2853-
assert!($prev_node.node.handle_revoke_and_ack(&$node.node.get_our_node_id(), &revoke_and_commit.0).unwrap().is_none());
2854-
{
2855-
let mut added_monitors = $prev_node.chan_monitor.added_monitors.lock().unwrap();
2856-
assert_eq!(added_monitors.len(), 1);
2857-
added_monitors.clear();
2858-
}
2859-
let revoke_and_ack = $prev_node.node.handle_commitment_signed(&$node.node.get_our_node_id(), &revoke_and_commit.1.unwrap()).unwrap();
2860-
{
2861-
let mut added_monitors = $prev_node.chan_monitor.added_monitors.lock().unwrap();
2862-
assert_eq!(added_monitors.len(), 1);
2863-
added_monitors.clear();
2864-
}
2865-
assert!(revoke_and_ack.1.is_none());
2866-
assert!($node.node.get_and_clear_pending_events().is_empty());
2867-
assert!($node.node.handle_revoke_and_ack(&$prev_node.node.get_our_node_id(), &revoke_and_ack.0).unwrap().is_none());
2868-
{
2869-
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
2870-
if $last_node {
2871-
assert_eq!(added_monitors.len(), 1);
2872-
} else {
2873-
assert_eq!(added_monitors.len(), 2);
2874-
assert!(added_monitors[0].0 != added_monitors[1].0);
2875-
}
2876-
added_monitors.clear();
2877-
}
2856+
commitment_signed_dance!($node, $prev_node, next_msgs.as_ref().unwrap().1, !$last_node);
28782857
}
28792858
}
28802859
}

0 commit comments

Comments
 (0)