Skip to content

Commit 11a3b85

Browse files
Add tests for LSPS5 client and service. Also tests for checking the correctness of the signing logic
1 parent 230fcd3 commit 11a3b85

File tree

3 files changed

+1260
-20
lines changed

3 files changed

+1260
-20
lines changed

lightning-liquidity/tests/common/mod.rs

+41-18
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
#![cfg(test)]
1+
#![cfg(all(test, feature = "time"))]
22
// TODO: remove these flags and unused code once we know what we'll need.
33
#![allow(dead_code)]
44
#![allow(unused_imports)]
55
#![allow(unused_macros)]
66

7-
use lightning::chain::Filter;
8-
use lightning::sign::EntropySource;
9-
107
use bitcoin::blockdata::constants::{genesis_block, ChainHash};
118
use bitcoin::blockdata::transaction::Transaction;
9+
use bitcoin::secp256k1::SecretKey;
1210
use bitcoin::Network;
11+
1312
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
13+
use lightning::chain::Filter;
1414
use lightning::chain::{chainmonitor, BestBlock, Confirm};
1515
use lightning::ln::channelmanager;
1616
use lightning::ln::channelmanager::ChainParameters;
@@ -24,6 +24,7 @@ use lightning::onion_message::messenger::DefaultMessageRouter;
2424
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
2525
use lightning::routing::router::{CandidateRouteHop, DefaultRouter, Path};
2626
use lightning::routing::scoring::{ChannelUsage, ScoreLookUp, ScoreUpdate};
27+
use lightning::sign::EntropySource;
2728
use lightning::sign::{InMemorySigner, KeysManager};
2829
use lightning::util::config::UserConfig;
2930
use lightning::util::persist::{
@@ -34,6 +35,8 @@ use lightning::util::persist::{
3435
SCORER_PERSISTENCE_SECONDARY_NAMESPACE,
3536
};
3637
use lightning::util::test_utils;
38+
39+
use lightning_liquidity::lsps5::service::TimeProvider;
3740
use lightning_liquidity::{LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig};
3841
use lightning_persister::fs_store::FilesystemStore;
3942

@@ -67,7 +70,7 @@ type LockingWrapper<T> = lightning::routing::scoring::MultiThreadedLockableScore
6770
#[cfg(not(c_bindings))]
6871
type LockingWrapper<T> = std::sync::Mutex<T>;
6972

70-
type ChannelManager = channelmanager::ChannelManager<
73+
pub(crate) type ChannelManager = channelmanager::ChannelManager<
7174
Arc<ChainMonitor>,
7275
Arc<test_utils::TestBroadcaster>,
7376
Arc<KeysManager>,
@@ -400,7 +403,7 @@ fn get_full_filepath(filepath: String, filename: String) -> String {
400403

401404
pub(crate) fn create_liquidity_node(
402405
i: usize, persist_dir: &str, network: Network, service_config: Option<LiquidityServiceConfig>,
403-
client_config: Option<LiquidityClientConfig>,
406+
client_config: Option<LiquidityClientConfig>, time_provider: Option<Arc<dyn TimeProvider>>,
404407
) -> Node {
405408
let tx_broadcaster = Arc::new(test_utils::TestBroadcaster::new(network));
406409
let fee_estimator = Arc::new(test_utils::TestFeeEstimator::new(253));
@@ -451,16 +454,27 @@ pub(crate) fn create_liquidity_node(
451454
Some(chain_source.clone()),
452455
logger.clone(),
453456
));
457+
let liquidity_manager = Arc::new(if let Some(tp) = time_provider.clone() {
458+
LiquidityManager::new_with_custom_time_provider(
459+
keys_manager.clone(),
460+
channel_manager.clone(),
461+
None::<Arc<dyn Filter + Send + Sync>>,
462+
Some(chain_params.clone()),
463+
service_config,
464+
client_config,
465+
tp,
466+
)
467+
} else {
468+
LiquidityManager::new(
469+
keys_manager.clone(),
470+
channel_manager.clone(),
471+
None,
472+
Some(chain_params),
473+
service_config,
474+
client_config,
475+
)
476+
});
454477

455-
let liquidity_manager = Arc::new(LiquidityManager::new(
456-
Arc::clone(&keys_manager),
457-
Arc::clone(&channel_manager),
458-
None::<Arc<dyn Filter + Send + Sync>>,
459-
Some(chain_params),
460-
service_config,
461-
client_config,
462-
None,
463-
));
464478
let msg_handler = MessageHandler {
465479
chan_handler: Arc::new(test_utils::TestChannelMessageHandler::new(
466480
ChainHash::using_genesis_block(Network::Testnet),
@@ -489,14 +503,23 @@ pub(crate) fn create_liquidity_node(
489503
}
490504

491505
pub(crate) fn create_service_and_client_nodes(
492-
persist_dir: &str, service_config: LiquidityServiceConfig, client_config: LiquidityClientConfig,
506+
persist_dir: &str, service_config: LiquidityServiceConfig,
507+
client_config: LiquidityClientConfig, time_provider: Option<Arc<dyn TimeProvider>>,
493508
) -> (Node, Node) {
494509
let persist_temp_path = env::temp_dir().join(persist_dir);
495510
let persist_dir = persist_temp_path.to_string_lossy().to_string();
496511
let network = Network::Bitcoin;
497512

498-
let service_node = create_liquidity_node(1, &persist_dir, network, Some(service_config), None);
499-
let client_node = create_liquidity_node(2, &persist_dir, network, None, Some(client_config));
513+
let service_node = create_liquidity_node(
514+
1,
515+
&persist_dir,
516+
network,
517+
Some(service_config),
518+
None,
519+
time_provider.clone(),
520+
);
521+
let client_node =
522+
create_liquidity_node(2, &persist_dir, network, None, Some(client_config), time_provider);
500523

501524
service_node
502525
.channel_manager

lightning-liquidity/tests/lsps2_integration_tests.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,23 @@ fn invoice_generation_flow() {
8888
#[cfg(lsps1_service)]
8989
lsps1_service_config: None,
9090
lsps2_service_config: Some(lsps2_service_config),
91+
lsps5_service_config: None,
9192
advertise_service: true,
9293
};
9394

9495
let lsps2_client_config = LSPS2ClientConfig::default();
9596
let client_config = LiquidityClientConfig {
9697
lsps1_client_config: None,
9798
lsps2_client_config: Some(lsps2_client_config),
99+
lsps5_client_config: None,
98100
};
99101

100-
let (service_node, client_node) =
101-
create_service_and_client_nodes("invoice_generation_flow", service_config, client_config);
102+
let (service_node, client_node) = create_service_and_client_nodes(
103+
"invoice_generation_flow",
104+
service_config,
105+
client_config,
106+
None,
107+
);
102108

103109
let service_handler = service_node.liquidity_manager.lsps2_service_handler().unwrap();
104110
let service_node_id = service_node.channel_manager.get_our_node_id();

0 commit comments

Comments
 (0)