Skip to content

Commit 70bb3b3

Browse files
committed
Use TestKeysInterface in functional tests
This allows stateful validation in EnforcingChannelKeys
1 parent b2f1327 commit 70bb3b3

File tree

5 files changed

+51
-46
lines changed

5 files changed

+51
-46
lines changed

lightning-persister/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@ mod tests {
198198
let persister_1 = FilesystemPersister::new("test_filesystem_persister_1".to_string());
199199
let chanmon_cfgs = create_chanmon_cfgs(2);
200200
let mut node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
201-
let chain_mon_0 = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[0].chain_source), &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator, &persister_0);
202-
let chain_mon_1 = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[1].chain_source), &chanmon_cfgs[1].tx_broadcaster, &chanmon_cfgs[1].logger, &chanmon_cfgs[1].fee_estimator, &persister_1);
201+
let chain_mon_0 = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[0].chain_source), &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator, &persister_0, &node_cfgs[0].keys_manager);
202+
let chain_mon_1 = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[1].chain_source), &chanmon_cfgs[1].tx_broadcaster, &chanmon_cfgs[1].logger, &chanmon_cfgs[1].fee_estimator, &persister_1, &node_cfgs[1].keys_manager);
203203
node_cfgs[0].chain_monitor = chain_mon_0;
204204
node_cfgs[1].chain_monitor = chain_mon_1;
205205
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ fn test_monitor_and_persister_update_fail() {
109109
let new_monitor = <(BlockHash, ChannelMonitor<EnforcingChannelKeys>)>::read(
110110
&mut ::std::io::Cursor::new(&w.0), &test_utils::OnlyReadsKeysInterface {}).unwrap().1;
111111
assert!(new_monitor == *monitor);
112-
let chain_mon = test_utils::TestChainMonitor::new(Some(&chain_source), &chanmon_cfgs[0].tx_broadcaster, &logger, &chanmon_cfgs[0].fee_estimator, &persister);
112+
let chain_mon = test_utils::TestChainMonitor::new(Some(&chain_source), &chanmon_cfgs[0].tx_broadcaster, &logger, &chanmon_cfgs[0].fee_estimator, &persister, &node_cfgs[0].keys_manager);
113113
assert!(chain_mon.watch_channel(outpoint, new_monitor).is_ok());
114114
chain_mon
115115
};

lightning/src/ln/functional_test_utils.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use ln::msgs;
2121
use ln::msgs::{ChannelMessageHandler,RoutingMessageHandler};
2222
use util::enforcing_trait_impls::EnforcingChannelKeys;
2323
use util::test_utils;
24-
use util::test_utils::{TestChainMonitor, OnlyReadsKeysInterface};
24+
use util::test_utils::TestChainMonitor;
2525
use util::events::{Event, EventsProvider, MessageSendEvent, MessageSendEventsProvider};
2626
use util::errors::APIError;
2727
use util::config::UserConfig;
@@ -96,14 +96,16 @@ pub struct TestChanMonCfg {
9696
pub chain_source: test_utils::TestChainSource,
9797
pub persister: test_utils::TestPersister,
9898
pub logger: test_utils::TestLogger,
99+
pub keys_manager: test_utils::TestKeysInterface,
100+
99101
}
100102

101103
pub struct NodeCfg<'a> {
102104
pub chain_source: &'a test_utils::TestChainSource,
103105
pub tx_broadcaster: &'a test_utils::TestBroadcaster,
104106
pub fee_estimator: &'a test_utils::TestFeeEstimator,
105107
pub chain_monitor: test_utils::TestChainMonitor<'a>,
106-
pub keys_manager: test_utils::TestKeysInterface,
108+
pub keys_manager: &'a test_utils::TestKeysInterface,
107109
pub logger: &'a test_utils::TestLogger,
108110
pub node_seed: [u8; 32],
109111
}
@@ -172,7 +174,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
172174
let mut w = test_utils::TestVecWriter(Vec::new());
173175
old_monitor.write(&mut w).unwrap();
174176
let (_, deserialized_monitor) = <(BlockHash, ChannelMonitor<EnforcingChannelKeys>)>::read(
175-
&mut ::std::io::Cursor::new(&w.0), &OnlyReadsKeysInterface {}).unwrap();
177+
&mut ::std::io::Cursor::new(&w.0), self.keys_manager).unwrap();
176178
deserialized_monitors.push(deserialized_monitor);
177179
}
178180
}
@@ -205,7 +207,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
205207
txn_broadcasted: Mutex::new(self.tx_broadcaster.txn_broadcasted.lock().unwrap().clone())
206208
};
207209
let chain_source = test_utils::TestChainSource::new(Network::Testnet);
208-
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chain_source), &broadcaster, &self.logger, &feeest, &persister);
210+
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chain_source), &broadcaster, &self.logger, &feeest, &persister, &self.keys_manager);
209211
for deserialized_monitor in deserialized_monitors.drain(..) {
210212
if let Err(_) = chain_monitor.watch_channel(deserialized_monitor.get_funding_txo().0, deserialized_monitor) {
211213
panic!();
@@ -1132,7 +1134,10 @@ pub fn create_chanmon_cfgs(node_count: usize) -> Vec<TestChanMonCfg> {
11321134
let chain_source = test_utils::TestChainSource::new(Network::Testnet);
11331135
let logger = test_utils::TestLogger::with_id(format!("node {}", i));
11341136
let persister = test_utils::TestPersister::new();
1135-
chan_mon_cfgs.push(TestChanMonCfg{ tx_broadcaster, fee_estimator, chain_source, logger, persister });
1137+
let seed = [i as u8; 32];
1138+
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
1139+
1140+
chan_mon_cfgs.push(TestChanMonCfg{ tx_broadcaster, fee_estimator, chain_source, logger, persister, keys_manager });
11361141
}
11371142

11381143
chan_mon_cfgs
@@ -1142,10 +1147,9 @@ pub fn create_node_cfgs<'a>(node_count: usize, chanmon_cfgs: &'a Vec<TestChanMon
11421147
let mut nodes = Vec::new();
11431148

11441149
for i in 0..node_count {
1150+
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[i].chain_source), &chanmon_cfgs[i].tx_broadcaster, &chanmon_cfgs[i].logger, &chanmon_cfgs[i].fee_estimator, &chanmon_cfgs[i].persister, &chanmon_cfgs[i].keys_manager);
11451151
let seed = [i as u8; 32];
1146-
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
1147-
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[i].chain_source), &chanmon_cfgs[i].tx_broadcaster, &chanmon_cfgs[i].logger, &chanmon_cfgs[i].fee_estimator, &chanmon_cfgs[i].persister);
1148-
nodes.push(NodeCfg { chain_source: &chanmon_cfgs[i].chain_source, logger: &chanmon_cfgs[i].logger, tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster, fee_estimator: &chanmon_cfgs[i].fee_estimator, chain_monitor, keys_manager, node_seed: seed });
1152+
nodes.push(NodeCfg { chain_source: &chanmon_cfgs[i].chain_source, logger: &chanmon_cfgs[i].logger, tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster, fee_estimator: &chanmon_cfgs[i].fee_estimator, chain_monitor, keys_manager: &chanmon_cfgs[i].keys_manager, node_seed: seed });
11491153
}
11501154

11511155
nodes
@@ -1158,7 +1162,7 @@ pub fn create_node_chanmgrs<'a, 'b>(node_count: usize, cfgs: &'a Vec<NodeCfg<'b>
11581162
default_config.channel_options.announced_channel = true;
11591163
default_config.peer_channel_config_limits.force_announced_channel_preference = false;
11601164
default_config.own_channel_config.our_htlc_minimum_msat = 1000; // sanitization being done by the sender, to exerce receiver logic we need to lift of limit
1161-
let node = ChannelManager::new(Network::Testnet, cfgs[i].fee_estimator, &cfgs[i].chain_monitor, cfgs[i].tx_broadcaster, cfgs[i].logger, &cfgs[i].keys_manager, if node_config[i].is_some() { node_config[i].clone().unwrap() } else { default_config }, 0);
1165+
let node = ChannelManager::new(Network::Testnet, cfgs[i].fee_estimator, &cfgs[i].chain_monitor, cfgs[i].tx_broadcaster, cfgs[i].logger, cfgs[i].keys_manager, if node_config[i].is_some() { node_config[i].clone().unwrap() } else { default_config }, 0);
11621166
chanmgrs.push(node);
11631167
}
11641168

0 commit comments

Comments
 (0)