Skip to content

Commit c2e7eba

Browse files
f: fix conflicts
1 parent 49cc467 commit c2e7eba

File tree

2 files changed

+70
-26
lines changed

2 files changed

+70
-26
lines changed

lightning-liquidity/tests/common/mod.rs

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![cfg(test)]
1+
#![cfg(all(test, feature = "time"))]
22

33
use lightning_liquidity::utils::time::TimeProvider;
44
use lightning_liquidity::{LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig};
@@ -17,13 +17,22 @@ use std::sync::Arc;
1717
pub(crate) struct LSPSNodes<'a, 'b, 'c> {
1818
pub service_node: LiquidityNode<'a, 'b, 'c>,
1919
pub client_node: LiquidityNode<'a, 'b, 'c>,
20-
pub payer_node_optional: Option<Node<'a, 'b, 'c>>,
2120
}
2221

23-
pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
24-
nodes: Vec<Node<'a, 'b, 'c>>, service_config: LiquidityServiceConfig,
22+
// this is ONLY used on LSPS2 so it says it's not used but it is
23+
#[allow(dead_code)]
24+
pub(crate) struct LSPSNodesWithPayer<'a, 'b, 'c> {
25+
pub service_node: LiquidityNode<'a, 'b, 'c>,
26+
pub client_node: LiquidityNode<'a, 'b, 'c>,
27+
pub payer_node: Node<'a, 'b, 'c>,
28+
}
29+
30+
// Reusable helper: consumes a Vec<Node>, builds service + client LiquidityNodes, returns optional leftover node.
31+
fn build_service_and_client<'a, 'b, 'c>(
32+
mut nodes: Vec<Node<'a, 'b, 'c>>, service_config: LiquidityServiceConfig,
2533
client_config: LiquidityClientConfig, time_provider: Arc<dyn TimeProvider + Send + Sync>,
26-
) -> LSPSNodes<'a, 'b, 'c> {
34+
) -> (LiquidityNode<'a, 'b, 'c>, LiquidityNode<'a, 'b, 'c>, Option<Node<'a, 'b, 'c>>) {
35+
assert!(nodes.len() >= 2, "Need at least two nodes (service, client)");
2736
let chain_params = ChainParameters {
2837
network: Network::Testnet,
2938
best_block: BestBlock::from_network(Network::Testnet),
@@ -38,7 +47,6 @@ pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
3847
None,
3948
Arc::clone(&time_provider),
4049
);
41-
4250
let client_lm = LiquidityManager::new_with_custom_time_provider(
4351
nodes[1].keys_manager,
4452
nodes[1].keys_manager,
@@ -50,11 +58,33 @@ pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
5058
time_provider,
5159
);
5260

53-
let mut iter = nodes.into_iter();
61+
let mut iter = nodes.drain(..);
5462
let service_node = LiquidityNode::new(iter.next().unwrap(), service_lm);
5563
let client_node = LiquidityNode::new(iter.next().unwrap(), client_lm);
64+
let leftover = iter.next(); // payer if present
65+
(service_node, client_node, leftover)
66+
}
5667

57-
LSPSNodes { service_node, client_node, payer_node_optional: iter.next() }
68+
pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
69+
nodes: Vec<Node<'a, 'b, 'c>>, service_config: LiquidityServiceConfig,
70+
client_config: LiquidityClientConfig, time_provider: Arc<dyn TimeProvider + Send + Sync>,
71+
) -> LSPSNodes<'a, 'b, 'c> {
72+
let (service_node, client_node, _extra) =
73+
build_service_and_client(nodes, service_config, client_config, time_provider);
74+
LSPSNodes { service_node, client_node }
75+
}
76+
77+
// this is ONLY used on LSPS2 so it says it's not used but it is
78+
#[allow(dead_code)]
79+
pub(crate) fn create_service_client_and_payer_nodes<'a, 'b, 'c>(
80+
nodes: Vec<Node<'a, 'b, 'c>>, service_config: LiquidityServiceConfig,
81+
client_config: LiquidityClientConfig, time_provider: Arc<dyn TimeProvider + Send + Sync>,
82+
) -> LSPSNodesWithPayer<'a, 'b, 'c> {
83+
assert!(nodes.len() >= 3, "Need three nodes (service, client, payer)");
84+
let (service_node, client_node, payer_opt) =
85+
build_service_and_client(nodes, service_config, client_config, time_provider);
86+
let payer_node = payer_opt.expect("payer node missing");
87+
LSPSNodesWithPayer { service_node, client_node, payer_node }
5888
}
5989

6090
pub(crate) struct LiquidityNode<'a, 'b, 'c> {

lightning-liquidity/tests/lsps2_integration_tests.rs

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
mod common;
44

5-
use common::{create_service_and_client_nodes, get_lsps_message, LSPSNodes, LiquidityNode};
5+
use common::{
6+
create_service_and_client_nodes, create_service_client_and_payer_nodes, get_lsps_message,
7+
LSPSNodes, LSPSNodesWithPayer, LiquidityNode,
8+
};
69

710
use lightning::check_added_monitors;
811
use lightning::events::Event;
@@ -61,9 +64,7 @@ use std::time::Duration;
6164
const MAX_PENDING_REQUESTS_PER_PEER: usize = 10;
6265
const MAX_TOTAL_PENDING_REQUESTS: usize = 1000;
6366

64-
fn setup_test_lsps2_nodes<'a, 'b, 'c>(
65-
nodes: Vec<Node<'a, 'b, 'c>>,
66-
) -> (LSPSNodes<'a, 'b, 'c>, [u8; 32]) {
67+
fn build_lsps2_configs() -> ([u8; 32], LiquidityServiceConfig, LiquidityClientConfig) {
6768
let promise_secret = [42; 32];
6869
let lsps2_service_config = LSPS2ServiceConfig { promise_secret };
6970
let service_config = LiquidityServiceConfig {
@@ -73,20 +74,38 @@ fn setup_test_lsps2_nodes<'a, 'b, 'c>(
7374
lsps5_service_config: None,
7475
advertise_service: true,
7576
};
76-
7777
let lsps2_client_config = LSPS2ClientConfig::default();
7878
let client_config = LiquidityClientConfig {
7979
lsps1_client_config: None,
8080
lsps2_client_config: Some(lsps2_client_config),
8181
lsps5_client_config: None,
8282
};
83-
let lsps_nodes = create_service_and_client_nodes(
83+
(promise_secret, service_config, client_config)
84+
}
85+
86+
fn setup_test_lsps2_nodes_with_payer<'a, 'b, 'c>(
87+
nodes: Vec<Node<'a, 'b, 'c>>,
88+
) -> (LSPSNodesWithPayer<'a, 'b, 'c>, [u8; 32]) {
89+
let (promise_secret, service_config, client_config) = build_lsps2_configs();
90+
let lsps_nodes = create_service_client_and_payer_nodes(
8491
nodes,
8592
service_config,
8693
client_config,
8794
Arc::new(DefaultTimeProvider),
8895
);
96+
(lsps_nodes, promise_secret)
97+
}
8998

99+
fn setup_test_lsps2_nodes<'a, 'b, 'c>(
100+
nodes: Vec<Node<'a, 'b, 'c>>,
101+
) -> (LSPSNodes<'a, 'b, 'c>, [u8; 32]) {
102+
let (promise_secret, service_config, client_config) = build_lsps2_configs();
103+
let lsps_nodes = create_service_and_client_nodes(
104+
nodes,
105+
service_config,
106+
client_config,
107+
Arc::new(DefaultTimeProvider),
108+
);
90109
(lsps_nodes, promise_secret)
91110
}
92111

@@ -103,10 +122,6 @@ fn create_jit_invoice(
103122
log_error!(node.logger, "Failed to register inbound payment: {:?}", e);
104123
})?;
105124

106-
// Add debugging here
107-
println!("Creating route hint with intercept_scid: {}", intercept_scid);
108-
println!("Service node ID: {}", service_node_id);
109-
110125
let route_hint = RouteHint(vec![RouteHintHop {
111126
src_node_id: service_node_id,
112127
short_channel_id: intercept_scid,
@@ -147,9 +162,6 @@ fn create_jit_invoice(
147162
})
148163
})?;
149164

150-
// Add debugging to verify the invoice
151-
println!("Created invoice with route hints: {:?}", invoice.route_hints());
152-
153165
Ok(invoice)
154166
}
155167

@@ -926,9 +938,9 @@ fn full_lsps2_flow() {
926938
&[Some(service_node_config), Some(client_node_config), None],
927939
);
928940
let nodes = create_network(3, &node_cfgs, &node_chanmgrs);
929-
let (lsps_nodes, promise_secret) = setup_test_lsps2_nodes(nodes);
930-
let LSPSNodes { service_node, client_node, payer_node_optional } = lsps_nodes;
931-
let payer_node = payer_node_optional.unwrap();
941+
let (lsps_nodes, promise_secret) = setup_test_lsps2_nodes_with_payer(nodes);
942+
let LSPSNodesWithPayer { service_node, client_node, payer_node } = lsps_nodes;
943+
932944
let payer_node_id = payer_node.node.get_our_node_id();
933945
let service_node_id = service_node.inner.node.get_our_node_id();
934946
let client_node_id = client_node.inner.node.get_our_node_id();
@@ -1188,15 +1200,15 @@ fn full_lsps2_flow() {
11881200
assert!(events.is_empty(), "Expected no events from service node, got: {:?}", events);
11891201

11901202
client_node.inner.node.claim_funds(preimage.unwrap());
1191-
/// TODO SIMPLIFY: put the payment_forwarded call inside a PaymentForwardedEvent
1203+
// TODO SIMPLIFY: put the payment_forwarded call inside a PaymentForwardedEvent
11921204
let expected_paths: &[&[&lightning::ln::functional_test_utils::Node<'_, '_, '_>]] =
11931205
&[&[&service_node.inner, &client_node.inner]];
11941206

11951207
let args = ClaimAlongRouteArgs::new(&payer_node, expected_paths, preimage.unwrap());
11961208
let total_fee_msat = pass_claimed_payment_along_route(args);
11971209

11981210
service_handler.payment_forwarded(channel_id).unwrap();
1199-
///
1211+
12001212
match service_node.liquidity_manager.next_event().unwrap() {
12011213
LiquidityEvent::LSPS2Service(LSPS2ServiceEvent::BroadcastFundingTransaction {
12021214
counterparty_node_id,
@@ -1205,6 +1217,8 @@ fn full_lsps2_flow() {
12051217
}) => {
12061218
assert_eq!(counterparty_node_id, client_node_id);
12071219
assert_eq!(uid, user_channel_id);
1220+
1221+
// TODO actually broadcast transaction
12081222
},
12091223
other => panic!("Unexpected event: {:?}", other),
12101224
}

0 commit comments

Comments
 (0)