Skip to content

Commit ca0eb39

Browse files
committed
f - Monitor v0.7.0 serialization downgrade compatibility
Assert that pre-downgrade BOLT 11 payment records remain readable after reopening with v0.7.0. Co-Authored-By: HAL 9000
1 parent d57e1ad commit ca0eb39

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

tests/upgrade_downgrade_tests.rs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ async fn monitor_v0_7_0_serialization_downgrade_channel_payment() {
6262

6363
let node_id_a;
6464
let node_id_b;
65+
let pre_downgrade_payment_id;
6566

6667
{
6768
let node_a = build_current_node(
@@ -105,8 +106,13 @@ async fn monitor_v0_7_0_serialization_downgrade_channel_payment() {
105106
assert_current_channel_ready(&node_a, node_id_b);
106107
assert_current_channel_ready(&node_b, node_id_a);
107108

108-
send_current_bolt11_payment(&node_a, &node_b, PRE_DOWNGRADE_PAYMENT_MSAT, "pre-downgrade")
109-
.await;
109+
pre_downgrade_payment_id = send_current_bolt11_payment(
110+
&node_a,
111+
&node_b,
112+
PRE_DOWNGRADE_PAYMENT_MSAT,
113+
"pre-downgrade",
114+
)
115+
.await;
110116

111117
node_a.stop().unwrap();
112118
node_b.stop().unwrap();
@@ -130,6 +136,21 @@ async fn monitor_v0_7_0_serialization_downgrade_channel_payment() {
130136
assert_eq!(node_a_v070.node_id(), node_id_a);
131137
assert_eq!(node_b_v070.node_id(), node_id_b);
132138

139+
let pre_downgrade_payment_id =
140+
ldk_node_070::lightning::ln::channelmanager::PaymentId(pre_downgrade_payment_id.0);
141+
assert_v070_bolt11_payment(
142+
&node_a_v070,
143+
&pre_downgrade_payment_id,
144+
ldk_node_070::payment::PaymentDirection::Outbound,
145+
PRE_DOWNGRADE_PAYMENT_MSAT,
146+
);
147+
assert_v070_bolt11_payment(
148+
&node_b_v070,
149+
&pre_downgrade_payment_id,
150+
ldk_node_070::payment::PaymentDirection::Inbound,
151+
PRE_DOWNGRADE_PAYMENT_MSAT,
152+
);
153+
133154
node_a_v070.sync_wallets().unwrap();
134155
node_b_v070.sync_wallets().unwrap();
135156
node_a_v070.connect(node_id_b, v070_addresses_b.first().unwrap().clone(), true).unwrap();
@@ -217,7 +238,7 @@ async fn open_current_channel(node_a: &CurrentNode, node_b: &CurrentNode) -> bit
217238

218239
async fn send_current_bolt11_payment(
219240
payer: &CurrentNode, payee: &CurrentNode, amount_msat: u64, description: &str,
220-
) {
241+
) -> ldk_node::lightning::ln::channelmanager::PaymentId {
221242
let invoice_description = CurrentBolt11InvoiceDescription::Direct(
222243
CurrentDescription::new(description.to_owned()).unwrap(),
223244
);
@@ -229,6 +250,7 @@ async fn send_current_bolt11_payment(
229250
payer.payment(&payment_id).unwrap().status,
230251
ldk_node::payment::PaymentStatus::Succeeded
231252
);
253+
payment_id
232254
}
233255

234256
async fn send_v070_bolt11_payment(
@@ -363,6 +385,17 @@ fn assert_current_channel_ready(node: &CurrentNode, counterparty_node_id: Public
363385
assert!(channel.is_channel_ready);
364386
}
365387

388+
fn assert_v070_bolt11_payment(
389+
node: &ldk_node_070::Node, payment_id: &ldk_node_070::lightning::ln::channelmanager::PaymentId,
390+
expected_direction: ldk_node_070::payment::PaymentDirection, expected_amount_msat: u64,
391+
) {
392+
let payment = node.payment(payment_id).unwrap();
393+
assert_eq!(payment.amount_msat, Some(expected_amount_msat));
394+
assert_eq!(payment.direction, expected_direction);
395+
assert_eq!(payment.status, ldk_node_070::payment::PaymentStatus::Succeeded);
396+
assert!(matches!(payment.kind, ldk_node_070::payment::PaymentKind::Bolt11 { .. }));
397+
}
398+
366399
fn to_v070_socket_addresses(
367400
addresses: &[CurrentSocketAddress],
368401
) -> Vec<ldk_node_070::lightning::ln::msgs::SocketAddress> {

0 commit comments

Comments
 (0)