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 , NodeSigner } ;
9-
107use bitcoin:: blockdata:: constants:: { genesis_block, ChainHash } ;
118use bitcoin:: blockdata:: transaction:: Transaction ;
9+ use bitcoin:: secp256k1:: SecretKey ;
1210use bitcoin:: Network ;
11+
1312use lightning:: chain:: channelmonitor:: ANTI_REORG_DELAY ;
13+ use lightning:: chain:: Filter ;
1414use lightning:: chain:: { chainmonitor, BestBlock , Confirm } ;
1515use lightning:: ln:: channelmanager;
1616use lightning:: ln:: channelmanager:: ChainParameters ;
@@ -19,6 +19,7 @@ use lightning::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, Init};
1919use lightning:: ln:: peer_handler:: {
2020 IgnoringMessageHandler , MessageHandler , PeerManager , SocketDescriptor ,
2121} ;
22+ use lightning:: sign:: { EntropySource , NodeSigner } ;
2223
2324use lightning:: onion_message:: messenger:: DefaultMessageRouter ;
2425use lightning:: routing:: gossip:: { NetworkGraph , P2PGossipSync } ;
@@ -34,10 +35,13 @@ use lightning::util::persist::{
3435 SCORER_PERSISTENCE_SECONDARY_NAMESPACE ,
3536} ;
3637use lightning:: util:: test_utils;
38+
39+ use lightning_liquidity:: lsps5:: service:: TimeProvider ;
3740use lightning_liquidity:: { LiquidityClientConfig , LiquidityManager , LiquidityServiceConfig } ;
3841use lightning_persister:: fs_store:: FilesystemStore ;
3942
4043use std:: collections:: { HashMap , VecDeque } ;
44+ use std:: ops:: Deref ;
4145use std:: path:: PathBuf ;
4246use std:: sync:: atomic:: AtomicBool ;
4347use std:: sync:: mpsc:: SyncSender ;
@@ -128,14 +132,21 @@ pub(crate) struct Node {
128132 Arc < KeysManager > ,
129133 Arc < ChannelManager > ,
130134 Arc < dyn Filter + Send + Sync > ,
135+ Arc < dyn TimeProvider + Send + Sync > ,
131136 > ,
132137 > ,
133138 Arc < KeysManager > ,
134139 Arc < ChainMonitor > ,
135140 > ,
136141 > ,
137- pub ( crate ) liquidity_manager :
138- Arc < LiquidityManager < Arc < KeysManager > , Arc < ChannelManager > , Arc < dyn Filter + Send + Sync > > > ,
142+ pub ( crate ) liquidity_manager : Arc <
143+ LiquidityManager <
144+ Arc < KeysManager > ,
145+ Arc < ChannelManager > ,
146+ Arc < dyn Filter + Send + Sync > ,
147+ Arc < dyn TimeProvider + Send + Sync > ,
148+ > ,
149+ > ,
139150 pub ( crate ) chain_monitor : Arc < ChainMonitor > ,
140151 pub ( crate ) kv_store : Arc < FilesystemStore > ,
141152 pub ( crate ) tx_broadcaster : Arc < test_utils:: TestBroadcaster > ,
@@ -403,6 +414,7 @@ fn get_full_filepath(filepath: String, filename: String) -> String {
403414pub ( crate ) fn create_liquidity_node (
404415 i : usize , persist_dir : & str , network : Network , service_config : Option < LiquidityServiceConfig > ,
405416 client_config : Option < LiquidityClientConfig > ,
417+ time_provider : Arc < dyn TimeProvider + Send + Sync > ,
406418) -> Node {
407419 let tx_broadcaster = Arc :: new ( test_utils:: TestBroadcaster :: new ( network) ) ;
408420 let fee_estimator = Arc :: new ( test_utils:: TestFeeEstimator :: new ( 253 ) ) ;
@@ -455,16 +467,16 @@ pub(crate) fn create_liquidity_node(
455467 Some ( Arc :: clone ( & chain_source) ) ,
456468 Arc :: clone ( & logger) ,
457469 ) ) ;
458-
459- let liquidity_manager = Arc :: new ( LiquidityManager :: new (
470+ let liquidity_manager = Arc :: new ( LiquidityManager :: new_with_custom_time_provider (
460471 Arc :: clone ( & keys_manager) ,
461472 Arc :: clone ( & channel_manager) ,
462473 None :: < Arc < dyn Filter + Send + Sync > > ,
463- Some ( chain_params) ,
474+ Some ( chain_params. clone ( ) ) ,
464475 service_config,
465476 client_config,
466- None ,
477+ time_provider ,
467478 ) ) ;
479+
468480 let msg_handler = MessageHandler {
469481 chan_handler : Arc :: new ( test_utils:: TestChannelMessageHandler :: new (
470482 ChainHash :: using_genesis_block ( Network :: Testnet ) ,
@@ -494,14 +506,29 @@ pub(crate) fn create_liquidity_node(
494506}
495507
496508pub ( crate ) fn create_service_and_client_nodes (
497- persist_dir : & str , service_config : LiquidityServiceConfig , client_config : LiquidityClientConfig ,
509+ persist_dir : & str , service_config : LiquidityServiceConfig ,
510+ client_config : LiquidityClientConfig , time_provider : Arc < dyn TimeProvider + Send + Sync > ,
498511) -> ( Node , Node ) {
499512 let persist_temp_path = env:: temp_dir ( ) . join ( persist_dir) ;
500513 let persist_dir = persist_temp_path. to_string_lossy ( ) . to_string ( ) ;
501514 let network = Network :: Bitcoin ;
502515
503- let service_node = create_liquidity_node ( 1 , & persist_dir, network, Some ( service_config) , None ) ;
504- let client_node = create_liquidity_node ( 2 , & persist_dir, network, None , Some ( client_config) ) ;
516+ let service_node = create_liquidity_node (
517+ 1 ,
518+ & persist_dir,
519+ network,
520+ Some ( service_config) ,
521+ None ,
522+ Arc :: clone ( & time_provider) ,
523+ ) ;
524+ let client_node = create_liquidity_node (
525+ 2 ,
526+ & persist_dir,
527+ network,
528+ None ,
529+ Some ( client_config) ,
530+ Arc :: clone ( & time_provider) ,
531+ ) ;
505532
506533 service_node
507534 . channel_manager
0 commit comments