Skip to content

Commit 2ca65a4

Browse files
committed
Simplify BlockNotifier tests
Use a simple ChainListner implementation rather than large test objects for testing BlockNotifier. Remove unregister_single_listener_ref_test since it is redundant with unregister_single_listener_test. Remove unnecessary clone() calls.
1 parent d18fc17 commit 2ca65a4

File tree

1 file changed

+26
-41
lines changed

1 file changed

+26
-41
lines changed

lightning/src/chain/chaininterface.rs

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -364,77 +364,62 @@ impl ChainWatchInterfaceUtil {
364364

365365
#[cfg(test)]
366366
mod tests {
367-
use ln::functional_test_utils::{create_chanmon_cfgs, create_node_cfgs};
367+
use bitcoin::blockdata::block::BlockHeader;
368+
use bitcoin::blockdata::transaction::Transaction;
368369
use super::{BlockNotifier, ChainListener};
369370
use std::ptr;
370371

372+
struct TestChainListener(u8);
373+
374+
impl ChainListener for TestChainListener {
375+
fn block_connected(&self, _header: &BlockHeader, _txdata: &[(usize, &Transaction)], _height: u32) {}
376+
fn block_disconnected(&self, _header: &BlockHeader, _disconnected_height: u32) {}
377+
}
378+
371379
#[test]
372380
fn register_listener_test() {
373-
let chanmon_cfgs = create_chanmon_cfgs(1);
374-
let node_cfgs = create_node_cfgs(1, &chanmon_cfgs);
375381
let block_notifier = BlockNotifier::new();
376382
assert_eq!(block_notifier.listeners.lock().unwrap().len(), 0);
377-
let listener = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
378-
block_notifier.register_listener(listener);
383+
let listener = &TestChainListener(0);
384+
block_notifier.register_listener(listener as &ChainListener);
379385
let vec = block_notifier.listeners.lock().unwrap();
380386
assert_eq!(vec.len(), 1);
381-
let item = vec.first().clone().unwrap();
382-
assert!(ptr::eq(&(**item), &(*listener)));
387+
let item = vec.first().unwrap();
388+
assert!(ptr::eq(&(**item), listener));
383389
}
384390

385391
#[test]
386392
fn unregister_single_listener_test() {
387-
let chanmon_cfgs = create_chanmon_cfgs(2);
388-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
389393
let block_notifier = BlockNotifier::new();
390-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
391-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
392-
block_notifier.register_listener(listener1);
393-
block_notifier.register_listener(listener2);
394+
let listener1 = &TestChainListener(1);
395+
let listener2 = &TestChainListener(2);
396+
block_notifier.register_listener(listener1 as &ChainListener);
397+
block_notifier.register_listener(listener2 as &ChainListener);
394398
let vec = block_notifier.listeners.lock().unwrap();
395399
assert_eq!(vec.len(), 2);
396400
drop(vec);
397401
block_notifier.unregister_listener(listener1);
398402
let vec = block_notifier.listeners.lock().unwrap();
399403
assert_eq!(vec.len(), 1);
400-
let item = vec.first().clone().unwrap();
401-
assert!(ptr::eq(&(**item), &(*listener2)));
402-
}
403-
404-
#[test]
405-
fn unregister_single_listener_ref_test() {
406-
let chanmon_cfgs = create_chanmon_cfgs(2);
407-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
408-
let block_notifier = BlockNotifier::new();
409-
block_notifier.register_listener(&node_cfgs[0].chan_monitor.simple_monitor as &ChainListener);
410-
block_notifier.register_listener(&node_cfgs[1].chan_monitor.simple_monitor as &ChainListener);
411-
let vec = block_notifier.listeners.lock().unwrap();
412-
assert_eq!(vec.len(), 2);
413-
drop(vec);
414-
block_notifier.unregister_listener(&node_cfgs[0].chan_monitor.simple_monitor);
415-
let vec = block_notifier.listeners.lock().unwrap();
416-
assert_eq!(vec.len(), 1);
417-
let item = vec.first().clone().unwrap();
418-
assert!(ptr::eq(&(**item), &(*&node_cfgs[1].chan_monitor.simple_monitor)));
404+
let item = vec.first().unwrap();
405+
assert!(ptr::eq(&(**item), listener2));
419406
}
420407

421408
#[test]
422409
fn unregister_multiple_of_the_same_listeners_test() {
423-
let chanmon_cfgs = create_chanmon_cfgs(2);
424-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
425410
let block_notifier = BlockNotifier::new();
426-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
427-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
428-
block_notifier.register_listener(listener1);
429-
block_notifier.register_listener(listener1);
430-
block_notifier.register_listener(listener2);
411+
let listener1 = &TestChainListener(1);
412+
let listener2 = &TestChainListener(2);
413+
block_notifier.register_listener(listener1 as &ChainListener);
414+
block_notifier.register_listener(listener1 as &ChainListener);
415+
block_notifier.register_listener(listener2 as &ChainListener);
431416
let vec = block_notifier.listeners.lock().unwrap();
432417
assert_eq!(vec.len(), 3);
433418
drop(vec);
434419
block_notifier.unregister_listener(listener1);
435420
let vec = block_notifier.listeners.lock().unwrap();
436421
assert_eq!(vec.len(), 1);
437-
let item = vec.first().clone().unwrap();
438-
assert!(ptr::eq(&(**item), &(*listener2)));
422+
let item = vec.first().unwrap();
423+
assert!(ptr::eq(&(**item), listener2));
439424
}
440425
}

0 commit comments

Comments
 (0)