Skip to content

Commit 704b08e

Browse files
Add tests for LSPS5 client and service.
1 parent 5f82532 commit 704b08e

File tree

5 files changed

+1222
-11
lines changed

5 files changed

+1222
-11
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1754,7 +1754,6 @@ mod tests {
17541754
Arc::clone(&keys_manager),
17551755
));
17561756
let liquidity_manager = Arc::new(LiquidityManager::new(
1757-
Arc::clone(&keys_manager),
17581757
Arc::clone(&keys_manager),
17591758
Arc::clone(&keys_manager),
17601759
Arc::clone(&manager),

lightning-liquidity/tests/common/mod.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use bitcoin::Network;
44
use lightning::ln::channelmanager::ChainParameters;
5+
use lightning_liquidity::lsps5::service::TimeProvider;
56
use lightning_liquidity::{LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig};
67

78
use lightning::chain::{BestBlock, Filter};
@@ -19,28 +20,32 @@ pub(crate) struct LSPSNodes<'a, 'b, 'c> {
1920

2021
pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
2122
nodes: Vec<Node<'a, 'b, 'c>>, service_config: LiquidityServiceConfig,
22-
client_config: LiquidityClientConfig,
23+
client_config: LiquidityClientConfig, time_provider: Arc<dyn TimeProvider + Send + Sync>,
2324
) -> LSPSNodes<'a, 'b, 'c> {
2425
let chain_params = ChainParameters {
2526
network: Network::Testnet,
2627
best_block: BestBlock::from_network(Network::Testnet),
2728
};
28-
let service_lm = LiquidityManager::new(
29+
let service_lm = LiquidityManager::new_with_custom_time_provider(
30+
nodes[0].keys_manager,
2931
nodes[0].keys_manager,
3032
nodes[0].node,
3133
None::<Arc<dyn Filter + Send + Sync>>,
3234
Some(chain_params.clone()),
3335
Some(service_config),
3436
None,
37+
Arc::clone(&time_provider),
3538
);
3639

37-
let client_lm = LiquidityManager::new(
40+
let client_lm = LiquidityManager::new_with_custom_time_provider(
41+
nodes[1].keys_manager,
3842
nodes[1].keys_manager,
3943
nodes[1].node,
4044
None::<Arc<dyn Filter + Send + Sync>>,
4145
Some(chain_params),
4246
None,
4347
Some(client_config),
48+
time_provider,
4449
);
4550

4651
let mut iter = nodes.into_iter();
@@ -53,19 +58,23 @@ pub(crate) fn create_service_and_client_nodes<'a, 'b, 'c>(
5358
pub(crate) struct LiquidityNode<'a, 'b, 'c> {
5459
pub inner: Node<'a, 'b, 'c>,
5560
pub liquidity_manager: LiquidityManager<
61+
&'c TestKeysInterface,
5662
&'c TestKeysInterface,
5763
&'a TestChannelManager<'b, 'c>,
5864
Arc<dyn Filter + Send + Sync>,
65+
Arc<dyn TimeProvider + Send + Sync>,
5966
>,
6067
}
6168

6269
impl<'a, 'b, 'c> LiquidityNode<'a, 'b, 'c> {
6370
pub fn new(
6471
node: Node<'a, 'b, 'c>,
6572
liquidity_manager: LiquidityManager<
73+
&'c TestKeysInterface,
6674
&'c TestKeysInterface,
6775
&'a TestChannelManager<'b, 'c>,
6876
Arc<dyn Filter + Send + Sync>,
77+
Arc<dyn TimeProvider + Send + Sync>,
6978
>,
7079
) -> Self {
7180
Self { inner: node, liquidity_manager }

lightning-liquidity/tests/lsps0_integration_tests.rs

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

33
mod common;
44

@@ -12,13 +12,18 @@ use lightning_liquidity::lsps1::client::LSPS1ClientConfig;
1212
use lightning_liquidity::lsps1::service::LSPS1ServiceConfig;
1313
use lightning_liquidity::lsps2::client::LSPS2ClientConfig;
1414
use lightning_liquidity::lsps2::service::LSPS2ServiceConfig;
15+
use lightning_liquidity::lsps5::client::LSPS5ClientConfig;
16+
use lightning_liquidity::lsps5::service::{DefaultTimeProvider, LSPS5ServiceConfig};
1517
use lightning_liquidity::{LiquidityClientConfig, LiquidityServiceConfig};
1618

1719
use lightning::ln::functional_test_utils::{
1820
create_chanmon_cfgs, create_network, create_node_cfgs, create_node_chanmgrs,
1921
};
2022
use lightning::ln::peer_handler::CustomMessageHandler;
2123

24+
use std::sync::Arc;
25+
use std::time::Duration;
26+
2227
#[test]
2328
fn list_protocols_integration_test() {
2429
let chanmon_cfgs = create_chanmon_cfgs(2);
@@ -30,29 +35,40 @@ fn list_protocols_integration_test() {
3035
let lsps2_service_config = LSPS2ServiceConfig { promise_secret };
3136
#[cfg(lsps1_service)]
3237
let lsps1_service_config = LSPS1ServiceConfig { supported_options: None, token: None };
38+
let lsps5_service_config = LSPS5ServiceConfig {
39+
max_webhooks_per_client: 10,
40+
notification_cooldown_hours: Duration::from_secs(3600),
41+
};
3342
let service_config = LiquidityServiceConfig {
3443
#[cfg(lsps1_service)]
3544
lsps1_service_config: Some(lsps1_service_config),
3645
lsps2_service_config: Some(lsps2_service_config),
46+
lsps5_service_config: Some(lsps5_service_config),
3747
advertise_service: true,
3848
};
3949

4050
let lsps2_client_config = LSPS2ClientConfig::default();
4151
#[cfg(lsps1_service)]
4252
let lsps1_client_config: LSPS1ClientConfig = LSPS1ClientConfig { max_channel_fees_msat: None };
53+
let lsps5_client_config = LSPS5ClientConfig::default();
4354
let client_config = LiquidityClientConfig {
4455
#[cfg(lsps1_service)]
4556
lsps1_client_config: Some(lsps1_client_config),
4657
#[cfg(not(lsps1_service))]
4758
lsps1_client_config: None,
4859
lsps2_client_config: Some(lsps2_client_config),
60+
lsps5_client_config: Some(lsps5_client_config),
4961
};
5062

5163
let service_node_id = nodes[0].node.get_our_node_id();
5264
let client_node_id = nodes[1].node.get_our_node_id();
5365

54-
let LSPSNodes { service_node, client_node } =
55-
create_service_and_client_nodes(nodes, service_config, client_config);
66+
let LSPSNodes { service_node, client_node } = create_service_and_client_nodes(
67+
nodes,
68+
service_config,
69+
client_config,
70+
Arc::new(DefaultTimeProvider),
71+
);
5672

5773
let client_handler = client_node.liquidity_manager.lsps0_client_handler();
5874

@@ -82,11 +98,12 @@ fn list_protocols_integration_test() {
8298
{
8399
assert!(protocols.contains(&1));
84100
assert!(protocols.contains(&2));
85-
assert_eq!(protocols.len(), 2);
101+
assert!(protocols.contains(&5));
102+
assert_eq!(protocols.len(), 3);
86103
}
87104

88105
#[cfg(not(lsps1_service))]
89-
assert_eq!(protocols, vec![2]);
106+
assert_eq!(protocols, vec![2, 5]);
90107
},
91108
_ => panic!("Unexpected event"),
92109
}

lightning-liquidity/tests/lsps2_integration_tests.rs

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

33
mod common;
44

@@ -12,6 +12,7 @@ use lightning_liquidity::lsps2::event::LSPS2ServiceEvent;
1212
use lightning_liquidity::lsps2::msgs::LSPS2RawOpeningFeeParams;
1313
use lightning_liquidity::lsps2::service::LSPS2ServiceConfig;
1414
use lightning_liquidity::lsps2::utils::is_valid_opening_fee_params;
15+
use lightning_liquidity::lsps5::service::DefaultTimeProvider;
1516
use lightning_liquidity::{LiquidityClientConfig, LiquidityServiceConfig};
1617

1718
use lightning::ln::channelmanager::{InterceptId, MIN_FINAL_CLTV_EXPIRY_DELTA};
@@ -35,6 +36,7 @@ use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
3536
use bitcoin::Network;
3637

3738
use std::str::FromStr;
39+
use std::sync::Arc;
3840
use std::time::Duration;
3941

4042
const MAX_PENDING_REQUESTS_PER_PEER: usize = 10;
@@ -49,15 +51,22 @@ fn setup_test_lsps2_nodes<'a, 'b, 'c>(
4951
#[cfg(lsps1_service)]
5052
lsps1_service_config: None,
5153
lsps2_service_config: Some(lsps2_service_config),
54+
lsps5_service_config: None,
5255
advertise_service: true,
5356
};
5457

5558
let lsps2_client_config = LSPS2ClientConfig::default();
5659
let client_config = LiquidityClientConfig {
5760
lsps1_client_config: None,
5861
lsps2_client_config: Some(lsps2_client_config),
62+
lsps5_client_config: None,
5963
};
60-
let lsps_nodes = create_service_and_client_nodes(nodes, service_config, client_config);
64+
let lsps_nodes = create_service_and_client_nodes(
65+
nodes,
66+
service_config,
67+
client_config,
68+
Arc::new(DefaultTimeProvider),
69+
);
6170

6271
(lsps_nodes, promise_secret)
6372
}

0 commit comments

Comments
 (0)