X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Ftest_utils.rs;h=53e8e1d45d0089b13c59067df06eaa430e903058;hb=3a274e0415238b211ff1c99838989da960b4d6fb;hp=f4b751663ee62a5e5991f19c44f15f69b18d2990;hpb=9d7bb73b599a7a9d8468a2f0c54d28f0ce6cf543;p=rust-lightning diff --git a/lightning/src/util/test_utils.rs b/lightning/src/util/test_utils.rs index f4b75166..53e8e1d4 100644 --- a/lightning/src/util/test_utils.rs +++ b/lightning/src/util/test_utils.rs @@ -21,6 +21,8 @@ use crate::ln::channelmanager; use crate::ln::features::{ChannelFeatures, InitFeatures, NodeFeatures}; use crate::ln::{msgs, wire}; use crate::ln::script::ShutdownScript; +use crate::routing::gossip::NetworkGraph; +use crate::routing::router::{find_route, InFlightHtlcs, Route, RouteHop, RouteParameters, Router, ScorerAccountingForInFlightHtlcs}; use crate::routing::scoring::FixedPenaltyScorer; use crate::util::enforcing_trait_impls::{EnforcingSigner, EnforcementState}; use crate::util::events; @@ -36,6 +38,7 @@ use bitcoin::network::constants::Network; use bitcoin::hash_types::{BlockHash, Txid}; use bitcoin::secp256k1::{SecretKey, PublicKey, Secp256k1, ecdsa::Signature, Scalar}; +use bitcoin::secp256k1::ecdh::SharedSecret; use bitcoin::secp256k1::ecdsa::RecoverableSignature; use regex; @@ -51,7 +54,6 @@ use crate::chain::keysinterface::{InMemorySigner, Recipient, KeyMaterial, Entrop #[cfg(feature = "std")] use std::time::{SystemTime, UNIX_EPOCH}; -use bitcoin::secp256k1::ecdh::SharedSecret; use bitcoin::Sequence; pub struct TestVecWriter(pub Vec); @@ -71,6 +73,34 @@ impl chaininterface::FeeEstimator for TestFeeEstimator { } } +pub struct TestRouter<'a> { + pub network_graph: Arc>, +} + +impl<'a> TestRouter<'a> { + pub fn new(network_graph: Arc>) -> Self { + Self { network_graph } + } +} + +impl<'a> Router for TestRouter<'a> { + fn find_route( + &self, payer: &PublicKey, params: &RouteParameters, first_hops: Option<&[&channelmanager::ChannelDetails]>, + inflight_htlcs: InFlightHtlcs + ) -> Result { + let logger = TestLogger::new(); + find_route( + payer, params, &self.network_graph, first_hops, &logger, + &ScorerAccountingForInFlightHtlcs::new(TestScorer::with_penalty(0), inflight_htlcs), + &[42; 32] + ) + } + fn notify_payment_path_failed(&self, _path: &[&RouteHop], _short_channel_id: u64) {} + fn notify_payment_path_successful(&self, _path: &[&RouteHop]) {} + fn notify_payment_probe_successful(&self, _path: &[&RouteHop]) {} + fn notify_payment_probe_failed(&self, _path: &[&RouteHop], _short_channel_id: u64) {} +} + pub struct OnlyReadsKeysInterface {} impl EntropySource for OnlyReadsKeysInterface {