Skip to content

Commit 82b608d

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 f69d9d7 commit 82b608d

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
@@ -390,77 +390,62 @@ impl ChainWatchInterfaceUtil {
390390

391391
#[cfg(test)]
392392
mod tests {
393-
use ln::functional_test_utils::{create_chanmon_cfgs, create_node_cfgs};
393+
use bitcoin::blockdata::block::BlockHeader;
394+
use bitcoin::blockdata::transaction::Transaction;
394395
use super::{BlockNotifier, ChainListener};
395396
use std::ptr;
396397

398+
struct TestChainListener(u8);
399+
400+
impl ChainListener for TestChainListener {
401+
fn block_connected(&self, _header: &BlockHeader, _txdata: &[(usize, &Transaction)], _height: u32) {}
402+
fn block_disconnected(&self, _header: &BlockHeader, _disconnected_height: u32) {}
403+
}
404+
397405
#[test]
398406
fn register_listener_test() {
399-
let chanmon_cfgs = create_chanmon_cfgs(1);
400-
let node_cfgs = create_node_cfgs(1, &chanmon_cfgs);
401407
let block_notifier = BlockNotifier::new();
402408
assert_eq!(block_notifier.listeners.lock().unwrap().len(), 0);
403-
let listener = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
404-
block_notifier.register_listener(listener);
409+
let listener = &TestChainListener(0);
410+
block_notifier.register_listener(listener as &ChainListener);
405411
let vec = block_notifier.listeners.lock().unwrap();
406412
assert_eq!(vec.len(), 1);
407-
let item = vec.first().clone().unwrap();
408-
assert!(ptr::eq(&(**item), &(*listener)));
413+
let item = vec.first().unwrap();
414+
assert!(ptr::eq(&(**item), listener));
409415
}
410416

411417
#[test]
412418
fn unregister_single_listener_test() {
413-
let chanmon_cfgs = create_chanmon_cfgs(2);
414-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
415419
let block_notifier = BlockNotifier::new();
416-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
417-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
418-
block_notifier.register_listener(listener1);
419-
block_notifier.register_listener(listener2);
420+
let listener1 = &TestChainListener(1);
421+
let listener2 = &TestChainListener(2);
422+
block_notifier.register_listener(listener1 as &ChainListener);
423+
block_notifier.register_listener(listener2 as &ChainListener);
420424
let vec = block_notifier.listeners.lock().unwrap();
421425
assert_eq!(vec.len(), 2);
422426
drop(vec);
423427
block_notifier.unregister_listener(listener1);
424428
let vec = block_notifier.listeners.lock().unwrap();
425429
assert_eq!(vec.len(), 1);
426-
let item = vec.first().clone().unwrap();
427-
assert!(ptr::eq(&(**item), &(*listener2)));
428-
}
429-
430-
#[test]
431-
fn unregister_single_listener_ref_test() {
432-
let chanmon_cfgs = create_chanmon_cfgs(2);
433-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
434-
let block_notifier = BlockNotifier::new();
435-
block_notifier.register_listener(&node_cfgs[0].chan_monitor.simple_monitor as &ChainListener);
436-
block_notifier.register_listener(&node_cfgs[1].chan_monitor.simple_monitor as &ChainListener);
437-
let vec = block_notifier.listeners.lock().unwrap();
438-
assert_eq!(vec.len(), 2);
439-
drop(vec);
440-
block_notifier.unregister_listener(&node_cfgs[0].chan_monitor.simple_monitor);
441-
let vec = block_notifier.listeners.lock().unwrap();
442-
assert_eq!(vec.len(), 1);
443-
let item = vec.first().clone().unwrap();
444-
assert!(ptr::eq(&(**item), &(*&node_cfgs[1].chan_monitor.simple_monitor)));
430+
let item = vec.first().unwrap();
431+
assert!(ptr::eq(&(**item), listener2));
445432
}
446433

447434
#[test]
448435
fn unregister_multiple_of_the_same_listeners_test() {
449-
let chanmon_cfgs = create_chanmon_cfgs(2);
450-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
451436
let block_notifier = BlockNotifier::new();
452-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
453-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
454-
block_notifier.register_listener(listener1);
455-
block_notifier.register_listener(listener1);
456-
block_notifier.register_listener(listener2);
437+
let listener1 = &TestChainListener(1);
438+
let listener2 = &TestChainListener(2);
439+
block_notifier.register_listener(listener1 as &ChainListener);
440+
block_notifier.register_listener(listener1 as &ChainListener);
441+
block_notifier.register_listener(listener2 as &ChainListener);
457442
let vec = block_notifier.listeners.lock().unwrap();
458443
assert_eq!(vec.len(), 3);
459444
drop(vec);
460445
block_notifier.unregister_listener(listener1);
461446
let vec = block_notifier.listeners.lock().unwrap();
462447
assert_eq!(vec.len(), 1);
463-
let item = vec.first().clone().unwrap();
464-
assert!(ptr::eq(&(**item), &(*listener2)));
448+
let item = vec.first().unwrap();
449+
assert!(ptr::eq(&(**item), listener2));
465450
}
466451
}

0 commit comments

Comments
 (0)