Skip to content

Commit bed64c6

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 e697ef3 commit bed64c6

File tree

1 file changed

+25
-41
lines changed

1 file changed

+25
-41
lines changed

lightning/src/chain/chaininterface.rs

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -363,77 +363,61 @@ impl ChainWatchInterfaceUtil {
363363

364364
#[cfg(test)]
365365
mod tests {
366-
use ln::functional_test_utils::{create_chanmon_cfgs, create_node_cfgs};
366+
use bitcoin::blockdata::block::{Block, BlockHeader};
367367
use super::{BlockNotifier, ChainListener};
368368
use std::ptr;
369369

370+
struct TestChainListener(u8);
371+
372+
impl ChainListener for TestChainListener {
373+
fn block_connected(&self, _block: &Block, _height: u32) {}
374+
fn block_disconnected(&self, _header: &BlockHeader, _disconnected_height: u32) {}
375+
}
376+
370377
#[test]
371378
fn register_listener_test() {
372-
let chanmon_cfgs = create_chanmon_cfgs(1);
373-
let node_cfgs = create_node_cfgs(1, &chanmon_cfgs);
374379
let block_notifier = BlockNotifier::new();
375380
assert_eq!(block_notifier.listeners.lock().unwrap().len(), 0);
376-
let listener = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
377-
block_notifier.register_listener(listener);
381+
let listener = &TestChainListener(0);
382+
block_notifier.register_listener(listener as &ChainListener);
378383
let vec = block_notifier.listeners.lock().unwrap();
379384
assert_eq!(vec.len(), 1);
380-
let item = vec.first().clone().unwrap();
381-
assert!(ptr::eq(&(**item), &(*listener)));
385+
let item = vec.first().unwrap();
386+
assert!(ptr::eq(&(**item), listener));
382387
}
383388

384389
#[test]
385390
fn unregister_single_listener_test() {
386-
let chanmon_cfgs = create_chanmon_cfgs(2);
387-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
388391
let block_notifier = BlockNotifier::new();
389-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
390-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
391-
block_notifier.register_listener(listener1);
392-
block_notifier.register_listener(listener2);
392+
let listener1 = &TestChainListener(1);
393+
let listener2 = &TestChainListener(2);
394+
block_notifier.register_listener(listener1 as &ChainListener);
395+
block_notifier.register_listener(listener2 as &ChainListener);
393396
let vec = block_notifier.listeners.lock().unwrap();
394397
assert_eq!(vec.len(), 2);
395398
drop(vec);
396399
block_notifier.unregister_listener(listener1);
397400
let vec = block_notifier.listeners.lock().unwrap();
398401
assert_eq!(vec.len(), 1);
399-
let item = vec.first().clone().unwrap();
400-
assert!(ptr::eq(&(**item), &(*listener2)));
401-
}
402-
403-
#[test]
404-
fn unregister_single_listener_ref_test() {
405-
let chanmon_cfgs = create_chanmon_cfgs(2);
406-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
407-
let block_notifier = BlockNotifier::new();
408-
block_notifier.register_listener(&node_cfgs[0].chan_monitor.simple_monitor as &ChainListener);
409-
block_notifier.register_listener(&node_cfgs[1].chan_monitor.simple_monitor as &ChainListener);
410-
let vec = block_notifier.listeners.lock().unwrap();
411-
assert_eq!(vec.len(), 2);
412-
drop(vec);
413-
block_notifier.unregister_listener(&node_cfgs[0].chan_monitor.simple_monitor);
414-
let vec = block_notifier.listeners.lock().unwrap();
415-
assert_eq!(vec.len(), 1);
416-
let item = vec.first().clone().unwrap();
417-
assert!(ptr::eq(&(**item), &(*&node_cfgs[1].chan_monitor.simple_monitor)));
402+
let item = vec.first().unwrap();
403+
assert!(ptr::eq(&(**item), listener2));
418404
}
419405

420406
#[test]
421407
fn unregister_multiple_of_the_same_listeners_test() {
422-
let chanmon_cfgs = create_chanmon_cfgs(2);
423-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
424408
let block_notifier = BlockNotifier::new();
425-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
426-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
427-
block_notifier.register_listener(listener1);
428-
block_notifier.register_listener(listener1);
429-
block_notifier.register_listener(listener2);
409+
let listener1 = &TestChainListener(1);
410+
let listener2 = &TestChainListener(2);
411+
block_notifier.register_listener(listener1 as &ChainListener);
412+
block_notifier.register_listener(listener1 as &ChainListener);
413+
block_notifier.register_listener(listener2 as &ChainListener);
430414
let vec = block_notifier.listeners.lock().unwrap();
431415
assert_eq!(vec.len(), 3);
432416
drop(vec);
433417
block_notifier.unregister_listener(listener1);
434418
let vec = block_notifier.listeners.lock().unwrap();
435419
assert_eq!(vec.len(), 1);
436-
let item = vec.first().clone().unwrap();
437-
assert!(ptr::eq(&(**item), &(*listener2)));
420+
let item = vec.first().unwrap();
421+
assert!(ptr::eq(&(**item), listener2));
438422
}
439423
}

0 commit comments

Comments
 (0)