X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Ftests%2Fmod.rs;h=dbe5a52abdebce26e024eedefdf21865ea4b3c60;hb=a0dbebe49cd7c472860d74054a3678dc25de2fcf;hp=42de18a4fb63f7aea2ec4a3a19f34b393a26dc07;hpb=7e96907fd81f63d4651bbce93bb124b25a422da4;p=rapid-gossip-sync-server diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 42de18a..dbe5a52 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -9,8 +9,8 @@ use bitcoin::Network; use bitcoin::secp256k1::ecdsa::Signature; use bitcoin::secp256k1::{Secp256k1, SecretKey}; use bitcoin::hashes::Hash; -use bitcoin::hashes::hex::ToHex; use bitcoin::hashes::sha256d::Hash as Sha256dHash; +use hex_conservative::DisplayHex; use lightning::ln::features::ChannelFeatures; use lightning::ln::msgs::{ChannelAnnouncement, ChannelUpdate, UnsignedChannelAnnouncement, UnsignedChannelUpdate}; use lightning::routing::gossip::{NetworkGraph, NodeId}; @@ -121,9 +121,9 @@ impl SchemaSanitizer { let thread_id = thread::current().id(); let preimage = format!("{:?}-{}", thread_id, timestamp_nanos); println!("test schema preimage: {}", preimage); - let suffix = Sha256dHash::hash(preimage.as_bytes()).into_inner().to_hex(); + let suffix = Sha256dHash::hash(preimage.as_bytes()).encode(); // the schema must start with a letter - let schema = format!("test_{}_{}", timestamp_seconds, suffix); + let schema = format!("test_{}_{}", timestamp_seconds, suffix.as_hex()); *suffix_option = Some(schema); }); @@ -136,6 +136,9 @@ impl Drop for SchemaSanitizer { IS_TEST_SCHEMA_CLEAN.with(|cleanliness_reference| { let is_clean_option = cleanliness_reference.borrow(); if let Some(is_clean) = *is_clean_option { + if std::thread::panicking() { + return; + } assert_eq!(is_clean, true); } }); @@ -173,6 +176,22 @@ async fn clean_test_db() { }); } +#[tokio::test] +async fn test_persistence_runtime() { + let _sanitizer = SchemaSanitizer::new(); + let logger = Arc::new(TestLogger::new()); + let network_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); + let network_graph_arc = Arc::new(network_graph); + let (_persister, _receiver) = GossipPersister::new(network_graph_arc.clone(), logger.clone()); + + tokio::task::spawn_blocking(move || { + drop(_persister); + }).await.unwrap(); + + clean_test_db().await; +} + + #[tokio::test] async fn test_trivial_setup() { let _sanitizer = SchemaSanitizer::new(); @@ -240,6 +259,10 @@ async fn test_trivial_setup() { println!("last update b: {}", last_update_seen_b); assert_eq!(last_update_seen_a, update_result - CLIENT_BACKDATE_INTERVAL); assert_eq!(last_update_seen_b, update_result - CLIENT_BACKDATE_INTERVAL); + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } /// If a channel has only seen updates in one direction, it should not be announced @@ -303,6 +326,10 @@ async fn test_unidirectional_intermediate_update_consideration() { let client_channel_count = channels.len(); assert_eq!(client_channel_count, 1); + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); + clean_test_db().await; } @@ -357,6 +384,10 @@ async fn test_bidirectional_intermediate_update_consideration() { assert_eq!(serialization.update_count_full, 0); assert_eq!(serialization.update_count_incremental, 1); + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); + clean_test_db().await; } @@ -399,6 +430,10 @@ async fn test_full_snapshot_recency() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let client_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); @@ -475,6 +510,10 @@ async fn test_full_snapshot_recency_with_wrong_seen_order() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let client_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); @@ -550,6 +589,10 @@ async fn test_full_snapshot_recency_with_wrong_propagation_order() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let client_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); @@ -679,6 +722,10 @@ async fn test_full_snapshot_mutiny_scenario() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let client_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); @@ -788,6 +835,10 @@ async fn test_full_snapshot_interlaced_channel_timestamps() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let client_graph = NetworkGraph::new(Network::Bitcoin, logger.clone()); @@ -859,6 +910,10 @@ async fn test_full_snapshot_persistence() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } let cache_path = cache_sanitizer.cache_path(); @@ -900,6 +955,10 @@ async fn test_full_snapshot_persistence() { drop(receiver); persister.persist_gossip().await; + + tokio::task::spawn_blocking(move || { + drop(persister); + }).await.unwrap(); } // regenerate snapshots