Skip to content

Commit 29ace59

Browse files
author
Antoine Riard
committed
Add assert_log method to TestLogger to harden test
Extend mock Node with logger.
1 parent 9310813 commit 29ace59

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

lightning/src/ln/functional_test_utils.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ pub struct Node {
6666
pub node_seed: [u8; 32],
6767
pub network_payment_count: Rc<RefCell<u8>>,
6868
pub network_chan_count: Rc<RefCell<u32>>,
69+
pub logger: Arc<test_utils::TestLogger>
6970
}
7071
impl Drop for Node {
7172
fn drop(&mut self) {
@@ -835,7 +836,8 @@ pub fn create_network(node_count: usize, node_config: &[Option<UserConfig>]) ->
835836
let payment_count = Rc::new(RefCell::new(0));
836837

837838
for i in 0..node_count {
838-
let logger: Arc<Logger> = Arc::new(test_utils::TestLogger::with_id(format!("node {}", i)));
839+
let test_logger = Arc::new(test_utils::TestLogger::with_id(format!("node {}", i)));
840+
let logger = &(Arc::clone(&test_logger) as Arc<Logger>);
839841
let feeest = Arc::new(test_utils::TestFeeEstimator { sat_per_kw: 253 });
840842
let chain_monitor = Arc::new(chaininterface::ChainWatchInterfaceUtil::new(Network::Testnet, Arc::clone(&logger)));
841843
let block_notifier = Arc::new(chaininterface::BlockNotifier::new(chain_monitor.clone()));
@@ -857,6 +859,7 @@ pub fn create_network(node_count: usize, node_config: &[Option<UserConfig>]) ->
857859
network_payment_count: payment_count.clone(),
858860
network_chan_count: chan_count.clone(),
859861
block_notifier,
862+
logger: test_logger
860863
});
861864
}
862865

lightning/src/util/test_utils.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use secp256k1::{SecretKey, PublicKey};
2222
use std::time::{SystemTime, UNIX_EPOCH};
2323
use std::sync::{Arc,Mutex};
2424
use std::{mem};
25+
use std::collections::HashMap;
2526

2627
pub struct TestVecWriter(pub Vec<u8>);
2728
impl Writer for TestVecWriter {
@@ -190,6 +191,7 @@ impl msgs::RoutingMessageHandler for TestRoutingMessageHandler {
190191
pub struct TestLogger {
191192
level: Level,
192193
id: String,
194+
pub lines: Mutex<HashMap<(String, String), usize>>,
193195
}
194196

195197
impl TestLogger {
@@ -200,15 +202,21 @@ impl TestLogger {
200202
TestLogger {
201203
level: Level::Trace,
202204
id,
205+
lines: Mutex::new(HashMap::new())
203206
}
204207
}
205208
pub fn enable(&mut self, level: Level) {
206209
self.level = level;
207210
}
211+
pub fn assert_log(&self, module: String, line: String, count: usize) {
212+
let log_entries = self.lines.lock().unwrap();
213+
assert_eq!(log_entries.get(&(module, line)), Some(&count));
214+
}
208215
}
209216

210217
impl Logger for TestLogger {
211218
fn log(&self, record: &Record) {
219+
*self.lines.lock().unwrap().entry((record.module_path.to_string(), format!("{}", record.args))).or_insert(0) += 1;
212220
if self.level >= record.level {
213221
println!("{:<5} {} [{} : {}, {}] {}", record.level.to_string(), self.id, record.module_path, record.file, record.line, record.args);
214222
}

0 commit comments

Comments
 (0)