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-
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 ;
@@ -24,6 +24,7 @@ use lightning::onion_message::messenger::DefaultMessageRouter;
2424use lightning:: routing:: gossip:: { NetworkGraph , P2PGossipSync } ;
2525use lightning:: routing:: router:: { CandidateRouteHop , DefaultRouter , Path } ;
2626use lightning:: routing:: scoring:: { ChannelUsage , ScoreLookUp , ScoreUpdate } ;
27+ use lightning:: sign:: EntropySource ;
2728use lightning:: sign:: { InMemorySigner , KeysManager } ;
2829use lightning:: util:: config:: UserConfig ;
2930use lightning:: util:: persist:: {
@@ -34,6 +35,8 @@ 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
@@ -67,7 +70,7 @@ type LockingWrapper<T> = lightning::routing::scoring::MultiThreadedLockableScore
6770#[ cfg( not( c_bindings) ) ]
6871type 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
401404pub ( 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
491505pub ( 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
0 commit comments