77
88#![ cfg( any( test, cln_test, vss_test) ) ]
99#![ allow( dead_code) ]
10+ pub ( crate ) mod logging;
11+
12+ use logging:: TestLogWriter ;
1013
11- use chrono:: Utc ;
1214use ldk_node:: config:: {
1315 Config , EsploraSyncConfig , DEFAULT_LOG_FILENAME , DEFAULT_LOG_LEVEL , DEFAULT_STORAGE_DIR_PATH ,
1416} ;
1517use ldk_node:: io:: sqlite_store:: SqliteStore ;
16- use ldk_node:: logger:: { LogLevel , LogRecord , LogWriter } ;
1718use ldk_node:: payment:: { PaymentDirection , PaymentKind , PaymentStatus } ;
1819use ldk_node:: {
1920 Builder , CustomTlvRecord , Event , LightningBalance , Node , NodeError , PendingSweepBalance ,
@@ -40,13 +41,12 @@ use bitcoincore_rpc::RpcApi;
4041use electrsd:: { bitcoind, bitcoind:: BitcoinD , ElectrsD } ;
4142use electrum_client:: ElectrumApi ;
4243
43- use log:: { Level , LevelFilter , Log , Record } ;
4444use rand:: distributions:: Alphanumeric ;
4545use rand:: { thread_rng, Rng } ;
4646
4747use std:: env;
4848use std:: path:: PathBuf ;
49- use std:: sync:: { Arc , Mutex , RwLock } ;
49+ use std:: sync:: { Arc , RwLock } ;
5050use std:: time:: Duration ;
5151
5252macro_rules! expect_event {
@@ -226,28 +226,28 @@ pub(crate) fn random_node_alias() -> Option<NodeAlias> {
226226}
227227
228228pub ( crate ) fn random_config ( anchor_channels : bool ) -> TestConfig {
229- let mut config = Config :: default ( ) ;
229+ let mut node_config = Config :: default ( ) ;
230230
231231 if !anchor_channels {
232- config . anchor_channels_config = None ;
232+ node_config . anchor_channels_config = None ;
233233 }
234234
235- config . network = Network :: Regtest ;
236- println ! ( "Setting network: {}" , config . network) ;
235+ node_config . network = Network :: Regtest ;
236+ println ! ( "Setting network: {}" , node_config . network) ;
237237
238238 let rand_dir = random_storage_path ( ) ;
239239 println ! ( "Setting random LDK storage dir: {}" , rand_dir. display( ) ) ;
240- config . storage_dir_path = rand_dir. to_str ( ) . unwrap ( ) . to_owned ( ) ;
240+ node_config . storage_dir_path = rand_dir. to_str ( ) . unwrap ( ) . to_owned ( ) ;
241241
242242 let rand_listening_addresses = random_listening_addresses ( ) ;
243243 println ! ( "Setting random LDK listening addresses: {:?}" , rand_listening_addresses) ;
244- config . listening_addresses = Some ( rand_listening_addresses) ;
244+ node_config . listening_addresses = Some ( rand_listening_addresses) ;
245245
246246 let alias = random_node_alias ( ) ;
247247 println ! ( "Setting random LDK node alias: {:?}" , alias) ;
248- config . node_alias = alias;
248+ node_config . node_alias = alias;
249249
250- TestConfig { node_config : config , log_writer : TestLogWriter :: default ( ) }
250+ TestConfig { node_config, .. Default :: default ( ) }
251251}
252252
253253#[ cfg( feature = "uniffi" ) ]
@@ -261,34 +261,12 @@ pub(crate) enum TestChainSource<'a> {
261261 BitcoindRpc ( & ' a BitcoinD ) ,
262262}
263263
264- #[ derive( Clone ) ]
265- pub ( crate ) enum TestLogWriter {
266- FileWriter { file_path : String , max_log_level : LogLevel } ,
267- LogFacade { max_log_level : LogLevel } ,
268- Custom ( Arc < dyn LogWriter > ) ,
269- }
270-
271- impl Default for TestLogWriter {
272- fn default ( ) -> Self {
273- TestLogWriter :: FileWriter {
274- file_path : format ! ( "{}/{}" , DEFAULT_STORAGE_DIR_PATH , DEFAULT_LOG_FILENAME ) ,
275- max_log_level : DEFAULT_LOG_LEVEL ,
276- }
277- }
278- }
279-
280- #[ derive( Clone ) ]
264+ #[ derive( Clone , Default ) ]
281265pub ( crate ) struct TestConfig {
282266 pub node_config : Config ,
283267 pub log_writer : TestLogWriter ,
284268}
285269
286- impl Default for TestConfig {
287- fn default ( ) -> Self {
288- Self { node_config : Config :: default ( ) , log_writer : TestLogWriter :: default ( ) }
289- }
290- }
291-
292270macro_rules! setup_builder {
293271 ( $builder: ident, $config: expr) => {
294272 #[ cfg( feature = "uniffi" ) ]
@@ -349,10 +327,12 @@ pub(crate) fn setup_node(
349327 }
350328
351329 match & config. log_writer {
352- TestLogWriter :: FileWriter { file_path, max_log_level } => {
353- builder. set_filesystem_logger ( Some ( file_path. clone ( ) ) , Some ( * max_log_level) ) ;
330+ TestLogWriter :: FileWriter => {
331+ let file_path = format ! ( "{}/{}" , DEFAULT_STORAGE_DIR_PATH , DEFAULT_LOG_FILENAME ) ;
332+ let max_log_level = DEFAULT_LOG_LEVEL ;
333+ builder. set_filesystem_logger ( Some ( file_path) , Some ( max_log_level) ) ;
354334 } ,
355- TestLogWriter :: LogFacade { max_log_level } => {
335+ TestLogWriter :: LogFacade ( max_log_level) => {
356336 builder. set_log_facade_logger ( Some ( * max_log_level) ) ;
357337 } ,
358338 TestLogWriter :: Custom ( custom_log_writer) => {
@@ -1215,90 +1195,3 @@ impl KVStore for TestSyncStore {
12151195 self . do_list ( primary_namespace, secondary_namespace)
12161196 }
12171197}
1218-
1219- pub ( crate ) struct MockLogger {
1220- logs : Arc < Mutex < Vec < String > > > ,
1221- }
1222-
1223- impl MockLogger {
1224- pub fn new ( ) -> Self {
1225- Self { logs : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) }
1226- }
1227-
1228- pub fn retrieve_logs ( & self ) -> Vec < String > {
1229- self . logs . lock ( ) . unwrap ( ) . to_vec ( )
1230- }
1231- }
1232-
1233- impl Log for MockLogger {
1234- fn enabled ( & self , _metadata : & log:: Metadata ) -> bool {
1235- true
1236- }
1237-
1238- fn log ( & self , record : & log:: Record ) {
1239- let message = format ! (
1240- "{} {:<5} [{}:{}] {}" ,
1241- Utc :: now( ) . format( "%Y-%m-%d %H:%M:%S" ) ,
1242- record. level( ) . to_string( ) ,
1243- record. module_path( ) . unwrap( ) ,
1244- record. line( ) . unwrap( ) ,
1245- record. args( )
1246- ) ;
1247- println ! ( "{message}" ) ;
1248- self . logs . lock ( ) . unwrap ( ) . push ( message) ;
1249- }
1250-
1251- fn flush ( & self ) { }
1252- }
1253-
1254- impl LogWriter for MockLogger {
1255- fn log < ' a > ( & self , record : LogRecord ) {
1256- let record = MockLogRecord ( record) . into ( ) ;
1257- Log :: log ( self , & record) ;
1258- }
1259- }
1260-
1261- struct MockLogRecord < ' a > ( LogRecord < ' a > ) ;
1262- struct MockLogLevel ( LogLevel ) ;
1263-
1264- impl From < MockLogLevel > for Level {
1265- fn from ( level : MockLogLevel ) -> Self {
1266- match level. 0 {
1267- LogLevel :: Gossip | LogLevel :: Trace => Level :: Trace ,
1268- LogLevel :: Debug => Level :: Debug ,
1269- LogLevel :: Info => Level :: Info ,
1270- LogLevel :: Warn => Level :: Warn ,
1271- LogLevel :: Error => Level :: Error ,
1272- }
1273- }
1274- }
1275-
1276- impl < ' a > From < MockLogRecord < ' a > > for Record < ' a > {
1277- fn from ( log_record : MockLogRecord < ' a > ) -> Self {
1278- let log_record = log_record. 0 ;
1279- let level = MockLogLevel ( log_record. level ) . into ( ) ;
1280-
1281- let mut record_builder = Record :: builder ( ) ;
1282- let record = record_builder
1283- . level ( level)
1284- . module_path ( Some ( log_record. module_path ) )
1285- . line ( Some ( log_record. line ) )
1286- . args ( log_record. args ) ;
1287-
1288- record. build ( )
1289- }
1290- }
1291-
1292- pub ( crate ) fn init_log_logger ( level : LevelFilter ) -> Arc < MockLogger > {
1293- let logger = Arc :: new ( MockLogger :: new ( ) ) ;
1294- log:: set_boxed_logger ( Box :: new ( logger. clone ( ) ) ) . unwrap ( ) ;
1295- log:: set_max_level ( level) ;
1296-
1297- logger
1298- }
1299-
1300- pub ( crate ) fn init_custom_logger ( ) -> Arc < MockLogger > {
1301- let logger = Arc :: new ( MockLogger :: new ( ) ) ;
1302-
1303- logger
1304- }
0 commit comments