@@ -35,6 +35,7 @@ use lightning::chain::channelmonitor::{ChannelMonitor, ChannelMonitorUpdateErr,
35
35
use lightning:: chain:: transaction:: OutPoint ;
36
36
use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
37
37
use lightning:: chain:: keysinterface:: { KeysInterface , InMemoryChannelKeys } ;
38
+ use lightning:: ln:: data_persister:: ChannelDataPersister ;
38
39
use lightning:: ln:: channelmanager:: { ChannelManager , PaymentHash , PaymentPreimage , PaymentSecret , ChannelManagerReadArgs } ;
39
40
use lightning:: ln:: features:: { ChannelFeatures , InitFeatures , NodeFeatures } ;
40
41
use lightning:: ln:: msgs:: { CommitmentUpdate , ChannelMessageHandler , ErrorAction , UpdateAddHTLC , Init } ;
@@ -48,6 +49,7 @@ use lightning::routing::router::{Route, RouteHop};
48
49
49
50
50
51
use utils:: test_logger;
52
+ use utils:: test_data_persister:: TestChanDataPersister ;
51
53
52
54
use bitcoin:: secp256k1:: key:: { PublicKey , SecretKey } ;
53
55
use bitcoin:: secp256k1:: Secp256k1 ;
@@ -84,7 +86,7 @@ impl Writer for VecWriter {
84
86
85
87
struct TestChainMonitor {
86
88
pub logger : Arc < dyn Logger > ,
87
- pub chain_monitor : Arc < channelmonitor:: ChainMonitor < EnforcingChannelKeys , Arc < dyn chain:: Notify > , Arc < TestBroadcaster > , Arc < FuzzEstimator > , Arc < dyn Logger > > > ,
89
+ pub chain_monitor : Arc < channelmonitor:: ChainMonitor < EnforcingChannelKeys , Arc < dyn chain:: Notify > , Arc < TestBroadcaster > , Arc < FuzzEstimator > , Arc < dyn Logger > , Arc < dyn ChannelDataPersister < Keys = EnforcingChannelKeys > > > > ,
88
90
pub update_ret : Mutex < Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > > ,
89
91
// If we reload a node with an old copy of ChannelMonitors, the ChannelManager deserialization
90
92
// logic will automatically force-close our channels for us (as we don't have an up-to-date
@@ -95,9 +97,9 @@ struct TestChainMonitor {
95
97
pub should_update_manager : atomic:: AtomicBool ,
96
98
}
97
99
impl TestChainMonitor {
98
- pub fn new ( broadcaster : Arc < TestBroadcaster > , logger : Arc < dyn Logger > , feeest : Arc < FuzzEstimator > ) -> Self {
100
+ pub fn new ( broadcaster : Arc < TestBroadcaster > , logger : Arc < dyn Logger > , feeest : Arc < FuzzEstimator > , data_persister : Arc < dyn ChannelDataPersister < Keys = EnforcingChannelKeys > > ) -> Self {
99
101
Self {
100
- chain_monitor : Arc :: new ( channelmonitor:: ChainMonitor :: new ( None , broadcaster, logger. clone ( ) , feeest) ) ,
102
+ chain_monitor : Arc :: new ( channelmonitor:: ChainMonitor :: new ( None , broadcaster, logger. clone ( ) , feeest, data_persister ) . unwrap ( ) ) ,
101
103
logger,
102
104
update_ret : Mutex :: new ( Ok ( ( ) ) ) ,
103
105
latest_monitors : Mutex :: new ( HashMap :: new ( ) ) ,
@@ -127,7 +129,7 @@ impl chain::Watch for TestChainMonitor {
127
129
} ;
128
130
let mut deserialized_monitor = <( BlockHash , channelmonitor:: ChannelMonitor < EnforcingChannelKeys > ) >::
129
131
read ( & mut Cursor :: new ( & map_entry. get ( ) . 1 ) ) . unwrap ( ) . 1 ;
130
- deserialized_monitor. update_monitor ( update. clone ( ) , & & TestBroadcaster { } , & self . logger ) . unwrap ( ) ;
132
+ deserialized_monitor. update_monitor ( & update, & & TestBroadcaster { } , & self . logger ) . unwrap ( ) ;
131
133
let mut ser = VecWriter ( Vec :: new ( ) ) ;
132
134
deserialized_monitor. write_for_disk ( & mut ser) . unwrap ( ) ;
133
135
map_entry. insert ( ( update. update_id , ser. 0 ) ) ;
@@ -192,7 +194,8 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
192
194
macro_rules! make_node {
193
195
( $node_id: expr) => { {
194
196
let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
195
- let monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
197
+ let data_persister = Arc :: new( TestChanDataPersister { } ) ;
198
+ let monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) , data_persister. clone( ) ) ) ;
196
199
197
200
let keys_manager = Arc :: new( KeyProvider { node_id: $node_id, rand_bytes_id: atomic:: AtomicU8 :: new( 0 ) } ) ;
198
201
let mut config = UserConfig :: default ( ) ;
@@ -207,7 +210,8 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
207
210
macro_rules! reload_node {
208
211
( $ser: expr, $node_id: expr, $old_monitors: expr) => { {
209
212
let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
210
- let chain_monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
213
+ let data_persister = Arc :: new( TestChanDataPersister { } ) ;
214
+ let chain_monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) , data_persister. clone( ) ) ) ;
211
215
212
216
let keys_manager = Arc :: new( KeyProvider { node_id: $node_id, rand_bytes_id: atomic:: AtomicU8 :: new( 0 ) } ) ;
213
217
let mut config = UserConfig :: default ( ) ;
0 commit comments