Skip to content

Commit 2c4ed6a

Browse files
committed
Add test setup and first end-to-end test
1 parent 28b7416 commit 2c4ed6a

File tree

8 files changed

+254
-39
lines changed

8 files changed

+254
-39
lines changed

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ futures = "0.3"
4848
serde_json = { version = "1.0" }
4949
tokio = { version = "1", features = [ "full" ] }
5050

51+
[dev-dependencies]
52+
electrsd = { version = "0.22.0", features = ["legacy", "esplora_a33e97e1", "bitcoind_23_0"] }
53+
electrum-client = "0.12.0"
54+
once_cell = "1.16.0"
5155

5256
[profile.release]
5357
panic = "abort"

src/error.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ impl From<bdk::Error> for Error {
7171
}
7272

7373
impl From<lightning_transaction_sync::TxSyncError> for Error {
74-
fn from(e: lightning_transaction_sync::TxSyncError) -> Self {
75-
match e {
76-
_ => Self::TxSyncFailed,
77-
}
74+
fn from(_e: lightning_transaction_sync::TxSyncError) -> Self {
75+
Self::TxSyncFailed
7876
}
7977
}

src/io_utils.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use std::sync::Arc;
1212

1313
pub(crate) fn read_or_generate_seed_file(config: Arc<Config>) -> [u8; 32] {
1414
let keys_seed_path = format!("{}/keys_seed", config.storage_dir_path);
15-
let keys_seed = if Path::new(&keys_seed_path).exists() {
16-
let seed = fs::read(keys_seed_path.clone()).expect("Failed to read keys seed file");
15+
if Path::new(&keys_seed_path).exists() {
16+
let seed = fs::read(keys_seed_path).expect("Failed to read keys seed file");
1717
assert_eq!(seed.len(), 32);
1818
let mut key = [0; 32];
1919
key.copy_from_slice(&seed);
@@ -22,21 +22,18 @@ pub(crate) fn read_or_generate_seed_file(config: Arc<Config>) -> [u8; 32] {
2222
let mut key = [0; 32];
2323
thread_rng().fill_bytes(&mut key);
2424

25-
let mut f =
26-
fs::File::create(keys_seed_path.clone()).expect("Failed to create keys seed file");
25+
let mut f = fs::File::create(keys_seed_path).expect("Failed to create keys seed file");
2726
f.write_all(&key).expect("Failed to write node keys seed to disk");
2827
f.sync_all().expect("Failed to sync node keys seed to disk");
2928
key
30-
};
31-
32-
keys_seed
29+
}
3330
}
3431

3532
pub(crate) fn read_network_graph(
3633
config: Arc<Config>, logger: Arc<FilesystemLogger>,
3734
) -> Result<NetworkGraph, Error> {
3835
let ldk_data_dir = format!("{}/ldk", &config.storage_dir_path.clone());
39-
let network_graph_path = format!("{}/network_graph", ldk_data_dir.clone());
36+
let network_graph_path = format!("{}/network_graph", ldk_data_dir);
4037

4138
if let Ok(file) = fs::File::open(network_graph_path) {
4239
if let Ok(graph) = NetworkGraph::read(&mut BufReader::new(file), Arc::clone(&logger)) {
@@ -52,8 +49,8 @@ pub(crate) fn read_network_graph(
5249
pub(crate) fn read_scorer(
5350
config: Arc<Config>, network_graph: Arc<NetworkGraph>, logger: Arc<FilesystemLogger>,
5451
) -> Scorer {
55-
let ldk_data_dir = format!("{}/ldk", &config.storage_dir_path.clone());
56-
let scorer_path = format!("{}/scorer", ldk_data_dir.clone());
52+
let ldk_data_dir = format!("{}/ldk", &config.storage_dir_path);
53+
let scorer_path = format!("{}/scorer", ldk_data_dir);
5754

5855
let params = ProbabilisticScoringParameters::default();
5956
if let Ok(file) = fs::File::open(scorer_path) {

src/lib.rs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ mod hex_utils;
3030
mod io_utils;
3131
mod logger;
3232
mod peer_store;
33+
#[cfg(test)]
34+
mod tests;
3335
mod types;
3436
mod wallet;
3537

@@ -213,19 +215,18 @@ impl Builder {
213215
.expect("Failed to read wallet master key");
214216

215217
let wallet_name = bdk::wallet::wallet_name_from_descriptor(
216-
Bip84(xprv.clone(), bdk::KeychainKind::External),
217-
Some(Bip84(xprv.clone(), bdk::KeychainKind::Internal)),
218+
Bip84(xprv, bdk::KeychainKind::External),
219+
Some(Bip84(xprv, bdk::KeychainKind::Internal)),
218220
config.network,
219221
&Secp256k1::new(),
220222
)
221223
.expect("Failed to derive on-chain wallet name");
222224
let database = sled::open(bdk_data_dir).expect("Failed to open BDK database");
223-
let database =
224-
database.open_tree(wallet_name.clone()).expect("Failed to open BDK database");
225+
let database = database.open_tree(wallet_name).expect("Failed to open BDK database");
225226

226227
let bdk_wallet = bdk::Wallet::new(
227-
Bip84(xprv.clone(), bdk::KeychainKind::External),
228-
Some(Bip84(xprv.clone(), bdk::KeychainKind::Internal)),
228+
Bip84(xprv, bdk::KeychainKind::External),
229+
Some(Bip84(xprv, bdk::KeychainKind::Internal)),
229230
config.network,
230231
database,
231232
)
@@ -292,7 +293,7 @@ impl Builder {
292293
let mut user_config = UserConfig::default();
293294
user_config.channel_handshake_limits.force_announced_channel_preference = false;
294295
let channel_manager = {
295-
if let Ok(mut f) = fs::File::open(format!("{}/manager", ldk_data_dir.clone())) {
296+
if let Ok(mut f) = fs::File::open(format!("{}/manager", ldk_data_dir)) {
296297
let mut channel_monitor_mut_references = Vec::new();
297298
for (_, channel_monitor) in channel_monitors.iter_mut() {
298299
channel_monitor_mut_references.push(channel_monitor);
@@ -323,7 +324,7 @@ impl Builder {
323324
network: config.network,
324325
best_block: BestBlock::new(dummy_block_hash, 0),
325326
};
326-
let fresh_channel_manager = channelmanager::ChannelManager::new(
327+
channelmanager::ChannelManager::new(
327328
Arc::clone(&wallet),
328329
Arc::clone(&chain_monitor),
329330
Arc::clone(&wallet),
@@ -334,8 +335,7 @@ impl Builder {
334335
Arc::clone(&keys_manager),
335336
user_config,
336337
chain_params,
337-
);
338-
fresh_channel_manager
338+
)
339339
}
340340
};
341341

@@ -387,7 +387,7 @@ impl Builder {
387387

388388
// Step 14: Restore event handler from disk or create a new one.
389389
let event_queue = if let Ok(mut f) =
390-
fs::File::open(format!("{}/{}", ldk_data_dir.clone(), event::EVENTS_PERSISTENCE_KEY))
390+
fs::File::open(format!("{}/{}", ldk_data_dir, event::EVENTS_PERSISTENCE_KEY))
391391
{
392392
Arc::new(
393393
EventQueue::read(&mut f, Arc::clone(&persister))
@@ -397,11 +397,9 @@ impl Builder {
397397
Arc::new(EventQueue::new(Arc::clone(&persister)))
398398
};
399399

400-
let peer_store = if let Ok(mut f) = fs::File::open(format!(
401-
"{}/{}",
402-
ldk_data_dir.clone(),
403-
peer_store::PEER_INFO_PERSISTENCE_KEY
404-
)) {
400+
let peer_store = if let Ok(mut f) =
401+
fs::File::open(format!("{}/{}", ldk_data_dir, peer_store::PEER_INFO_PERSISTENCE_KEY))
402+
{
405403
Arc::new(
406404
PeerInfoStorage::read(&mut f, Arc::clone(&persister))
407405
.expect("Failed to read peer information from disk."),
@@ -650,7 +648,7 @@ impl Node {
650648
if peer_info.pubkey == node_id {
651649
let _ = do_connect_peer(
652650
peer_info.pubkey,
653-
peer_info.address.clone(),
651+
peer_info.address,
654652
Arc::clone(&connect_pm),
655653
Arc::clone(&connect_logger),
656654
)
@@ -866,8 +864,8 @@ impl Node {
866864
}
867865
};
868866

869-
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
870-
let payment_secret = Some(invoice.payment_secret().clone());
867+
let payment_hash = PaymentHash((*invoice.payment_hash()).into_inner());
868+
let payment_secret = Some(*invoice.payment_secret());
871869

872870
let mut outbound_payments_lock = self.outbound_payments.lock().unwrap();
873871
outbound_payments_lock.insert(
@@ -963,20 +961,20 @@ impl Node {
963961
}
964962
};
965963

966-
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
964+
let payment_hash = PaymentHash((*invoice.payment_hash()).into_inner());
967965
inbound_payments_lock.insert(
968966
payment_hash,
969967
PaymentInfo {
970968
preimage: None,
971-
secret: Some(invoice.payment_secret().clone()),
969+
secret: Some(*invoice.payment_secret()),
972970
status: PaymentStatus::Pending,
973971
amount_msat,
974972
},
975973
);
976974
Ok(invoice)
977975
}
978976

979-
/// Query for information about the status of a specific payment.
977+
/// Query for information about the status of a specific payment.
980978
pub fn payment_info(&self, payment_hash: &[u8; 32]) -> Option<PaymentInfo> {
981979
let payment_hash = PaymentHash(*payment_hash);
982980

src/peer_store.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl<K: KVStorePersister> PeerInfoStorage<K> {
4242
.persist(PEER_INFO_PERSISTENCE_KEY, &*locked_peers)
4343
.map_err(|_| Error::PersistenceFailed)?;
4444

45-
return Ok(());
45+
Ok(())
4646
}
4747

4848
pub(crate) fn remove_peer(&self, peer_pubkey: &PublicKey) -> Result<(), Error> {
@@ -54,7 +54,7 @@ impl<K: KVStorePersister> PeerInfoStorage<K> {
5454
.persist(PEER_INFO_PERSISTENCE_KEY, &*locked_peers)
5555
.map_err(|_| Error::PersistenceFailed)?;
5656

57-
return Ok(());
57+
Ok(())
5858
}
5959

6060
pub(crate) fn peers(&self) -> Vec<PeerInfo> {
@@ -150,7 +150,7 @@ impl TryFrom<String> for PeerInfo {
150150
type Error = Error;
151151

152152
fn try_from(peer_pubkey_and_ip_addr: String) -> Result<Self, Self::Error> {
153-
let mut pubkey_and_addr = peer_pubkey_and_ip_addr.split("@");
153+
let mut pubkey_and_addr = peer_pubkey_and_ip_addr.split('@');
154154
let pubkey = pubkey_and_addr.next();
155155
let peer_addr_str = pubkey_and_addr.next();
156156
if pubkey.is_none() || peer_addr_str.is_none() {

0 commit comments

Comments
 (0)