Skip to content

Commit 371b971

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

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

lightning-background-processor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ lightning-persister = { version = "0.0.102", path = "../lightning-persister" }
1616

1717
[dev-dependencies]
1818
lightning = { version = "0.0.102", path = "../lightning", features = ["_test_utils"] }
19-
19+
lightning-invoice = { version = "0.10.0", path = "../lightning-invoice" }

lightning-background-processor/src/lib.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ impl BackgroundProcessor {
174174
Descriptor: 'static + SocketDescriptor + Send + Sync,
175175
CMH: 'static + Deref + Send + Sync,
176176
RMH: 'static + Deref + Send + Sync,
177-
EH: 'static + EventHandler + Send + Sync,
177+
EH: 'static + EventHandler + Send,
178178
CMP: 'static + Send + ChannelManagerPersister<Signer, CW, T, K, F, L>,
179179
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
180180
CM: 'static + Deref<Target = ChannelManager<Signer, CW, T, K, F, L>> + Send + Sync,
@@ -317,6 +317,8 @@ mod tests {
317317
use lightning::util::events::{Event, MessageSendEventsProvider, MessageSendEvent};
318318
use lightning::util::ser::Writeable;
319319
use lightning::util::test_utils;
320+
use lightning_invoice::payment::{InvoicePayer, RetryAttempts};
321+
use lightning_invoice::utils::DefaultRouter;
320322
use lightning_persister::FilesystemPersister;
321323
use std::fs;
322324
use std::path::PathBuf;
@@ -622,4 +624,20 @@ mod tests {
622624

623625
assert!(bg_processor.stop().is_ok());
624626
}
627+
628+
#[test]
629+
fn test_invoice_payer() {
630+
let nodes = create_nodes(2, "test_invoice_payer".to_string());
631+
632+
// Initiate the background processors to watch each node.
633+
let data_dir = nodes[0].persister.get_data_dir();
634+
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);
635+
let network_graph = Arc::new(NetworkGraph::new(genesis_block(Network::Testnet).header.block_hash()));
636+
let router = DefaultRouter::new(network_graph, Arc::clone(&nodes[0].logger));
637+
let scorer = Scorer::default();
638+
let invoice_payer = Arc::new(InvoicePayer::new(Arc::clone(&nodes[0].node), router, scorer, Arc::clone(&nodes[0].logger), |_: &_| {}, RetryAttempts(2)));
639+
let event_handler = Arc::clone(&invoice_payer);
640+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
641+
assert!(bg_processor.stop().is_ok());
642+
}
625643
}

0 commit comments

Comments
 (0)