X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Ftest_utils.rs;h=fbd5a26d9f327de34bf60ce0ed8d3cc35ff56406;hb=2d94401cca5db752012ba3e80dffaf337b6ca0f1;hp=c167c3412637408ae4008921ee9360dfc9b7f932;hpb=3a0356fe308ba29916d00f3376cd57ce6613f3d0;p=rust-lightning diff --git a/lightning/src/util/test_utils.rs b/lightning/src/util/test_utils.rs index c167c341..fbd5a26d 100644 --- a/lightning/src/util/test_utils.rs +++ b/lightning/src/util/test_utils.rs @@ -28,6 +28,7 @@ use bitcoin::blockdata::constants::genesis_block; use bitcoin::blockdata::transaction::{Transaction, TxOut}; use bitcoin::blockdata::script::{Builder, Script}; use bitcoin::blockdata::opcodes; +use bitcoin::blockdata::block::BlockHeader; use bitcoin::network::constants::Network; use bitcoin::hash_types::{BlockHash, Txid}; @@ -36,11 +37,11 @@ use bitcoin::secp256k1::recovery::RecoverableSignature; use regex; +use prelude::*; use core::time::Duration; -use std::sync::{Mutex, Arc}; +use sync::{Mutex, Arc}; use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use core::{cmp, mem}; -use std::collections::{HashMap, HashSet, VecDeque}; use chain::keysinterface::InMemorySigner; pub struct TestVecWriter(pub Vec); @@ -55,11 +56,11 @@ impl Writer for TestVecWriter { } pub struct TestFeeEstimator { - pub sat_per_kw: u32, + pub sat_per_kw: Mutex, } impl chaininterface::FeeEstimator for TestFeeEstimator { fn get_est_sat_per_1000_weight(&self, _confirmation_target: ConfirmationTarget) -> u32 { - self.sat_per_kw + *self.sat_per_kw.lock().unwrap() } } @@ -200,9 +201,18 @@ impl channelmonitor::Persist for TestPersis pub struct TestBroadcaster { pub txn_broadcasted: Mutex>, + pub blocks: Arc>>, } impl chaininterface::BroadcasterInterface for TestBroadcaster { fn broadcast_transaction(&self, tx: &Transaction) { + assert!(tx.lock_time < 1_500_000_000); + if tx.lock_time > self.blocks.lock().unwrap().len() as u32 + 1 && tx.lock_time < 500_000_000 { + for inp in tx.input.iter() { + if inp.sequence != 0xffffffff { + panic!("We should never broadcast a transaction before its locktime ({})!", tx.lock_time); + } + } + } self.txn_broadcasted.lock().unwrap().push(tx.clone()); } } @@ -429,7 +439,7 @@ impl TestLogger { impl Logger for TestLogger { fn log(&self, record: &Record) { *self.lines.lock().unwrap().entry((record.module_path.to_string(), format!("{}", record.args))).or_insert(0) += 1; - if self.level >= record.level { + if record.level >= self.level { println!("{:<5} {} [{} : {}, {}] {}", record.level.to_string(), self.id, record.module_path, record.file, record.line, record.args); } }