7
7
8
8
#![ cfg( any( test, cln_test, vss_test) ) ]
9
9
#![ allow( dead_code) ]
10
+ pub ( crate ) mod logging;
11
+
12
+ use logging:: TestLogWriter ;
10
13
11
- use chrono:: Utc ;
12
14
use ldk_node:: config:: {
13
15
Config , EsploraSyncConfig , DEFAULT_LOG_FILENAME , DEFAULT_LOG_LEVEL , DEFAULT_STORAGE_DIR_PATH ,
14
16
} ;
15
17
use ldk_node:: io:: sqlite_store:: SqliteStore ;
16
- use ldk_node:: logger:: { LogLevel , LogRecord , LogWriter } ;
17
18
use ldk_node:: payment:: { PaymentDirection , PaymentKind , PaymentStatus } ;
18
19
use ldk_node:: {
19
20
Builder , CustomTlvRecord , Event , LightningBalance , Node , NodeError , PendingSweepBalance ,
@@ -40,13 +41,12 @@ use bitcoincore_rpc::RpcApi;
40
41
use electrsd:: { bitcoind, bitcoind:: BitcoinD , ElectrsD } ;
41
42
use electrum_client:: ElectrumApi ;
42
43
43
- use log:: { Level , LevelFilter , Log , Record } ;
44
44
use rand:: distributions:: Alphanumeric ;
45
45
use rand:: { thread_rng, Rng } ;
46
46
47
47
use std:: env;
48
48
use std:: path:: PathBuf ;
49
- use std:: sync:: { Arc , Mutex , RwLock } ;
49
+ use std:: sync:: { Arc , RwLock } ;
50
50
use std:: time:: Duration ;
51
51
52
52
macro_rules! expect_event {
@@ -220,28 +220,28 @@ pub(crate) fn random_node_alias() -> Option<NodeAlias> {
220
220
}
221
221
222
222
pub ( crate ) fn random_config ( anchor_channels : bool ) -> TestConfig {
223
- let mut config = Config :: default ( ) ;
223
+ let mut node_config = Config :: default ( ) ;
224
224
225
225
if !anchor_channels {
226
- config . anchor_channels_config = None ;
226
+ node_config . anchor_channels_config = None ;
227
227
}
228
228
229
- config . network = Network :: Regtest ;
230
- println ! ( "Setting network: {}" , config . network) ;
229
+ node_config . network = Network :: Regtest ;
230
+ println ! ( "Setting network: {}" , node_config . network) ;
231
231
232
232
let rand_dir = random_storage_path ( ) ;
233
233
println ! ( "Setting random LDK storage dir: {}" , rand_dir. display( ) ) ;
234
- config . storage_dir_path = rand_dir. to_str ( ) . unwrap ( ) . to_owned ( ) ;
234
+ node_config . storage_dir_path = rand_dir. to_str ( ) . unwrap ( ) . to_owned ( ) ;
235
235
236
236
let rand_listening_addresses = random_listening_addresses ( ) ;
237
237
println ! ( "Setting random LDK listening addresses: {:?}" , rand_listening_addresses) ;
238
- config . listening_addresses = Some ( rand_listening_addresses) ;
238
+ node_config . listening_addresses = Some ( rand_listening_addresses) ;
239
239
240
240
let alias = random_node_alias ( ) ;
241
241
println ! ( "Setting random LDK node alias: {:?}" , alias) ;
242
- config . node_alias = alias;
242
+ node_config . node_alias = alias;
243
243
244
- TestConfig { node_config : config , log_writer : TestLogWriter :: default ( ) }
244
+ TestConfig { node_config, .. Default :: default ( ) }
245
245
}
246
246
247
247
#[ cfg( feature = "uniffi" ) ]
@@ -255,34 +255,12 @@ pub(crate) enum TestChainSource<'a> {
255
255
BitcoindRpc ( & ' a BitcoinD ) ,
256
256
}
257
257
258
- #[ derive( Clone ) ]
259
- pub ( crate ) enum TestLogWriter {
260
- FileWriter { file_path : String , max_log_level : LogLevel } ,
261
- LogFacade { max_log_level : LogLevel } ,
262
- Custom ( Arc < dyn LogWriter > ) ,
263
- }
264
-
265
- impl Default for TestLogWriter {
266
- fn default ( ) -> Self {
267
- TestLogWriter :: FileWriter {
268
- file_path : format ! ( "{}/{}" , DEFAULT_STORAGE_DIR_PATH , DEFAULT_LOG_FILENAME ) ,
269
- max_log_level : DEFAULT_LOG_LEVEL ,
270
- }
271
- }
272
- }
273
-
274
- #[ derive( Clone ) ]
258
+ #[ derive( Clone , Default ) ]
275
259
pub ( crate ) struct TestConfig {
276
260
pub node_config : Config ,
277
261
pub log_writer : TestLogWriter ,
278
262
}
279
263
280
- impl Default for TestConfig {
281
- fn default ( ) -> Self {
282
- Self { node_config : Config :: default ( ) , log_writer : TestLogWriter :: default ( ) }
283
- }
284
- }
285
-
286
264
macro_rules! setup_builder {
287
265
( $builder: ident, $config: expr) => {
288
266
#[ cfg( feature = "uniffi" ) ]
@@ -343,10 +321,12 @@ pub(crate) fn setup_node(
343
321
}
344
322
345
323
match & config. log_writer {
346
- TestLogWriter :: FileWriter { file_path, max_log_level } => {
347
- builder. set_filesystem_logger ( Some ( file_path. clone ( ) ) , Some ( * max_log_level) ) ;
324
+ TestLogWriter :: FileWriter => {
325
+ let file_path = format ! ( "{}/{}" , DEFAULT_STORAGE_DIR_PATH , DEFAULT_LOG_FILENAME ) ;
326
+ let max_log_level = DEFAULT_LOG_LEVEL ;
327
+ builder. set_filesystem_logger ( Some ( file_path) , Some ( max_log_level) ) ;
348
328
} ,
349
- TestLogWriter :: LogFacade { max_log_level } => {
329
+ TestLogWriter :: LogFacade ( max_log_level) => {
350
330
builder. set_log_facade_logger ( Some ( * max_log_level) ) ;
351
331
} ,
352
332
TestLogWriter :: Custom ( custom_log_writer) => {
@@ -1209,90 +1189,3 @@ impl KVStore for TestSyncStore {
1209
1189
self . do_list ( primary_namespace, secondary_namespace)
1210
1190
}
1211
1191
}
1212
-
1213
- pub ( crate ) struct MockLogger {
1214
- logs : Arc < Mutex < Vec < String > > > ,
1215
- }
1216
-
1217
- impl MockLogger {
1218
- pub fn new ( ) -> Self {
1219
- Self { logs : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) }
1220
- }
1221
-
1222
- pub fn retrieve_logs ( & self ) -> Vec < String > {
1223
- self . logs . lock ( ) . unwrap ( ) . to_vec ( )
1224
- }
1225
- }
1226
-
1227
- impl Log for MockLogger {
1228
- fn enabled ( & self , _metadata : & log:: Metadata ) -> bool {
1229
- true
1230
- }
1231
-
1232
- fn log ( & self , record : & log:: Record ) {
1233
- let message = format ! (
1234
- "{} {:<5} [{}:{}] {}" ,
1235
- Utc :: now( ) . format( "%Y-%m-%d %H:%M:%S" ) ,
1236
- record. level( ) . to_string( ) ,
1237
- record. module_path( ) . unwrap( ) ,
1238
- record. line( ) . unwrap( ) ,
1239
- record. args( )
1240
- ) ;
1241
- println ! ( "{message}" ) ;
1242
- self . logs . lock ( ) . unwrap ( ) . push ( message) ;
1243
- }
1244
-
1245
- fn flush ( & self ) { }
1246
- }
1247
-
1248
- impl LogWriter for MockLogger {
1249
- fn log < ' a > ( & self , record : LogRecord ) {
1250
- let record = MockLogRecord ( record) . into ( ) ;
1251
- Log :: log ( self , & record) ;
1252
- }
1253
- }
1254
-
1255
- struct MockLogRecord < ' a > ( LogRecord < ' a > ) ;
1256
- struct MockLogLevel ( LogLevel ) ;
1257
-
1258
- impl From < MockLogLevel > for Level {
1259
- fn from ( level : MockLogLevel ) -> Self {
1260
- match level. 0 {
1261
- LogLevel :: Gossip | LogLevel :: Trace => Level :: Trace ,
1262
- LogLevel :: Debug => Level :: Debug ,
1263
- LogLevel :: Info => Level :: Info ,
1264
- LogLevel :: Warn => Level :: Warn ,
1265
- LogLevel :: Error => Level :: Error ,
1266
- }
1267
- }
1268
- }
1269
-
1270
- impl < ' a > From < MockLogRecord < ' a > > for Record < ' a > {
1271
- fn from ( log_record : MockLogRecord < ' a > ) -> Self {
1272
- let log_record = log_record. 0 ;
1273
- let level = MockLogLevel ( log_record. level ) . into ( ) ;
1274
-
1275
- let mut record_builder = Record :: builder ( ) ;
1276
- let record = record_builder
1277
- . level ( level)
1278
- . module_path ( Some ( log_record. module_path ) )
1279
- . line ( Some ( log_record. line ) )
1280
- . args ( log_record. args ) ;
1281
-
1282
- record. build ( )
1283
- }
1284
- }
1285
-
1286
- pub ( crate ) fn init_log_logger ( level : LevelFilter ) -> Arc < MockLogger > {
1287
- let logger = Arc :: new ( MockLogger :: new ( ) ) ;
1288
- log:: set_boxed_logger ( Box :: new ( logger. clone ( ) ) ) . unwrap ( ) ;
1289
- log:: set_max_level ( level) ;
1290
-
1291
- logger
1292
- }
1293
-
1294
- pub ( crate ) fn init_custom_logger ( ) -> Arc < MockLogger > {
1295
- let logger = Arc :: new ( MockLogger :: new ( ) ) ;
1296
-
1297
- logger
1298
- }
0 commit comments