Skip to content

Commit aa6b426

Browse files
committed
Test PaymentRetryHandler in BackgroundProcessor
Proof of concept showing PaymentRetryHandler can be used with an Arc<ChannelManager> passed to BackgroundProcessor. Likely do not need to merge this commit.
1 parent c818441 commit aa6b426

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

lightning-background-processor/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ edition = "2018"
1212
[dependencies]
1313
bitcoin = "0.27"
1414
lightning = { version = "0.0.100", path = "../lightning", features = ["allow_wallclock_use"] }
15+
lightning-invoice = { version = "0.8.0", path = "../lightning-invoice" }
1516
lightning-persister = { version = "0.0.100", path = "../lightning-persister" }
1617

1718
[dev-dependencies]

lightning-background-processor/src/lib.rs

+19-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ impl BackgroundProcessor {
126126
Descriptor: 'static + SocketDescriptor + Send + Sync,
127127
CMH: 'static + Deref + Send + Sync,
128128
RMH: 'static + Deref + Send + Sync,
129-
EH: 'static + EventHandler + Send + Sync,
129+
EH: 'static + EventHandler + Send,
130130
CMP: 'static + Send + ChannelManagerPersister<Signer, CW, T, K, F, L>,
131131
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
132132
CM: 'static + Deref<Target = ChannelManager<Signer, CW, T, K, F, L>> + Send + Sync,
@@ -257,10 +257,13 @@ mod tests {
257257
use lightning::ln::features::InitFeatures;
258258
use lightning::ln::msgs::{ChannelMessageHandler, Init};
259259
use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler};
260+
use lightning::routing::network_graph::NetworkGraph;
260261
use lightning::util::config::UserConfig;
261262
use lightning::util::events::{Event, MessageSendEventsProvider, MessageSendEvent};
262263
use lightning::util::ser::Writeable;
263264
use lightning::util::test_utils;
265+
use lightning_invoice::payment::InvoicePayer;
266+
use lightning_invoice::utils::DefaultRouter;
264267
use lightning_persister::FilesystemPersister;
265268
use std::fs;
266269
use std::path::PathBuf;
@@ -561,4 +564,19 @@ mod tests {
561564

562565
assert!(bg_processor.stop().is_ok());
563566
}
567+
568+
#[test]
569+
fn test_invoice_payer() {
570+
let nodes = create_nodes(2, "test_invoice_payer".to_string());
571+
572+
// Initiate the background processors to watch each node.
573+
let data_dir = nodes[0].persister.get_data_dir();
574+
let persister = move |node: &ChannelManager<InMemorySigner, Arc<ChainMonitor>, Arc<test_utils::TestBroadcaster>, Arc<KeysManager>, Arc<test_utils::TestFeeEstimator>, Arc<test_utils::TestLogger>>| FilesystemPersister::persist_manager(data_dir.clone(), node);
575+
let network_graph = Arc::new(NetworkGraph::new(genesis_block(Network::Testnet).header.block_hash()));
576+
let router = DefaultRouter::new(network_graph, Arc::clone(&nodes[0].logger));
577+
let invoice_payer = Arc::new(InvoicePayer::new(Arc::clone(&nodes[0].node), router, Arc::clone(&nodes[0].logger), |_: &_| {}).with_retry_attempts(2));
578+
let event_handler = Arc::clone(&invoice_payer);
579+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
580+
assert!(bg_processor.stop().is_ok());
581+
}
564582
}

0 commit comments

Comments
 (0)