mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 15:02:20 +01:00
Also benchmark sending funds with a FilesystemPersister
This commit is contained in:
parent
780625674d
commit
8a9f0b8ced
5 changed files with 31 additions and 9 deletions
|
@ -8,6 +8,9 @@ description = """
|
||||||
Utilities to manage Rust-Lightning channel data persistence and retrieval.
|
Utilities to manage Rust-Lightning channel data persistence and retrieval.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
[features]
|
||||||
|
unstable = ["lightning/unstable"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bitcoin = "0.26"
|
bitcoin = "0.26"
|
||||||
lightning = { version = "0.0.13", path = "../lightning" }
|
lightning = { version = "0.0.13", path = "../lightning" }
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
#![deny(broken_intra_doc_links)]
|
#![deny(broken_intra_doc_links)]
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
|
|
||||||
|
#![cfg_attr(all(test, feature = "unstable"), feature(test))]
|
||||||
|
#[cfg(all(test, feature = "unstable"))] extern crate test;
|
||||||
|
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
extern crate lightning;
|
extern crate lightning;
|
||||||
|
@ -330,3 +333,15 @@ mod tests {
|
||||||
added_monitors.clear();
|
added_monitors.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(test, feature = "unstable"))]
|
||||||
|
pub mod bench {
|
||||||
|
use test::Bencher;
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bench_sends(bench: &mut Bencher) {
|
||||||
|
let persister_a = super::FilesystemPersister::new("bench_filesystem_persister_a".to_string());
|
||||||
|
let persister_b = super::FilesystemPersister::new("bench_filesystem_persister_b".to_string());
|
||||||
|
lightning::ln::channelmanager::bench::bench_two_sends(bench, persister_a, persister_b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
#![allow(bare_trait_objects)]
|
#![allow(bare_trait_objects)]
|
||||||
#![allow(ellipsis_inclusive_range_patterns)]
|
#![allow(ellipsis_inclusive_range_patterns)]
|
||||||
|
|
||||||
#![cfg_attr(all(test, feature = "unstable"), feature(test))]
|
#![cfg_attr(all(any(test, feature = "_test_utils"), feature = "unstable"), feature(test))]
|
||||||
#[cfg(all(test, feature = "unstable"))] extern crate test;
|
#[cfg(all(any(test, feature = "_test_utils"), feature = "unstable"))] extern crate test;
|
||||||
|
|
||||||
extern crate bitcoin;
|
extern crate bitcoin;
|
||||||
#[cfg(any(test, feature = "_test_utils"))] extern crate hex;
|
#[cfg(any(test, feature = "_test_utils"))] extern crate hex;
|
||||||
|
|
|
@ -4408,10 +4408,11 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(test, feature = "unstable"))]
|
#[cfg(all(any(test, feature = "_test_utils"), feature = "unstable"))]
|
||||||
mod benches {
|
pub mod bench {
|
||||||
use chain::Listen;
|
use chain::Listen;
|
||||||
use chain::chainmonitor::ChainMonitor;
|
use chain::chainmonitor::ChainMonitor;
|
||||||
|
use chain::channelmonitor::Persist;
|
||||||
use chain::keysinterface::{KeysManager, InMemorySigner};
|
use chain::keysinterface::{KeysManager, InMemorySigner};
|
||||||
use chain::transaction::OutPoint;
|
use chain::transaction::OutPoint;
|
||||||
use ln::channelmanager::{ChainParameters, ChannelManager, PaymentHash, PaymentPreimage};
|
use ln::channelmanager::{ChainParameters, ChannelManager, PaymentHash, PaymentPreimage};
|
||||||
|
@ -4432,17 +4433,22 @@ mod benches {
|
||||||
|
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
struct NodeHolder<'a> {
|
struct NodeHolder<'a, P: Persist<InMemorySigner>> {
|
||||||
node: &'a ChannelManager<InMemorySigner,
|
node: &'a ChannelManager<InMemorySigner,
|
||||||
&'a ChainMonitor<InMemorySigner, &'a test_utils::TestChainSource,
|
&'a ChainMonitor<InMemorySigner, &'a test_utils::TestChainSource,
|
||||||
&'a test_utils::TestBroadcaster, &'a test_utils::TestFeeEstimator,
|
&'a test_utils::TestBroadcaster, &'a test_utils::TestFeeEstimator,
|
||||||
&'a test_utils::TestLogger, &'a test_utils::TestPersister>,
|
&'a test_utils::TestLogger, &'a P>,
|
||||||
&'a test_utils::TestBroadcaster, &'a KeysManager,
|
&'a test_utils::TestBroadcaster, &'a KeysManager,
|
||||||
&'a test_utils::TestFeeEstimator, &'a test_utils::TestLogger>
|
&'a test_utils::TestFeeEstimator, &'a test_utils::TestLogger>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
#[bench]
|
#[bench]
|
||||||
fn bench_sends(bench: &mut Bencher) {
|
fn bench_sends(bench: &mut Bencher) {
|
||||||
|
bench_two_sends(bench, test_utils::TestPersister::new(), test_utils::TestPersister::new());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn bench_two_sends<P: Persist<InMemorySigner>>(bench: &mut Bencher, persister_a: P, persister_b: P) {
|
||||||
// Do a simple benchmark of sending a payment back and forth between two nodes.
|
// Do a simple benchmark of sending a payment back and forth between two nodes.
|
||||||
// Note that this is unrealistic as each payment send will require at least two fsync
|
// Note that this is unrealistic as each payment send will require at least two fsync
|
||||||
// calls per node.
|
// calls per node.
|
||||||
|
@ -4456,7 +4462,6 @@ mod benches {
|
||||||
config.own_channel_config.minimum_depth = 1;
|
config.own_channel_config.minimum_depth = 1;
|
||||||
|
|
||||||
let logger_a = test_utils::TestLogger::with_id("node a".to_owned());
|
let logger_a = test_utils::TestLogger::with_id("node a".to_owned());
|
||||||
let persister_a = test_utils::TestPersister::new();
|
|
||||||
let chain_monitor_a = ChainMonitor::new(None, &tx_broadcaster, &logger_a, &fee_estimator, &persister_a);
|
let chain_monitor_a = ChainMonitor::new(None, &tx_broadcaster, &logger_a, &fee_estimator, &persister_a);
|
||||||
let seed_a = [1u8; 32];
|
let seed_a = [1u8; 32];
|
||||||
let keys_manager_a = KeysManager::new(&seed_a, 42, 42);
|
let keys_manager_a = KeysManager::new(&seed_a, 42, 42);
|
||||||
|
@ -4468,7 +4473,6 @@ mod benches {
|
||||||
let node_a_holder = NodeHolder { node: &node_a };
|
let node_a_holder = NodeHolder { node: &node_a };
|
||||||
|
|
||||||
let logger_b = test_utils::TestLogger::with_id("node a".to_owned());
|
let logger_b = test_utils::TestLogger::with_id("node a".to_owned());
|
||||||
let persister_b = test_utils::TestPersister::new();
|
|
||||||
let chain_monitor_b = ChainMonitor::new(None, &tx_broadcaster, &logger_a, &fee_estimator, &persister_b);
|
let chain_monitor_b = ChainMonitor::new(None, &tx_broadcaster, &logger_a, &fee_estimator, &persister_b);
|
||||||
let seed_b = [2u8; 32];
|
let seed_b = [2u8; 32];
|
||||||
let keys_manager_b = KeysManager::new(&seed_b, 42, 42);
|
let keys_manager_b = KeysManager::new(&seed_b, 42, 42);
|
||||||
|
|
|
@ -866,7 +866,7 @@ macro_rules! expect_pending_htlcs_forwardable {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(any(test, feature = "unstable"))]
|
||||||
macro_rules! expect_payment_received {
|
macro_rules! expect_payment_received {
|
||||||
($node: expr, $expected_payment_hash: expr, $expected_recv_value: expr) => {
|
($node: expr, $expected_payment_hash: expr, $expected_recv_value: expr) => {
|
||||||
let events = $node.node.get_and_clear_pending_events();
|
let events = $node.node.get_and_clear_pending_events();
|
||||||
|
|
Loading…
Add table
Reference in a new issue