From a52e8fa1a22ff9dd87e37307fd52ca4bcc41f139 Mon Sep 17 00:00:00 2001 From: Oscar Pepper Date: Wed, 11 Sep 2024 16:56:48 +0100 Subject: [PATCH] implement BlockCache trait for MockBlockSource and fix failing doc tests --- zcash_client_backend/src/data_api/chain.rs | 48 ++++++++++++++++++---- zcash_client_sqlite/src/chain/init.rs | 5 ++- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/zcash_client_backend/src/data_api/chain.rs b/zcash_client_backend/src/data_api/chain.rs index d1fda98dc1..88fd851c47 100644 --- a/zcash_client_backend/src/data_api/chain.rs +++ b/zcash_client_backend/src/data_api/chain.rs @@ -32,6 +32,8 @@ //! # } //! # //! # fn test() -> Result<(), Error<(), Infallible>> { +//! # let rt = tokio::runtime::Runtime::new().unwrap(); +//! # rt.block_on(async { //! let network = Network::TestNetwork; //! let block_source = chain_testing::MockBlockSource; //! let mut wallet_db = testing::MockWalletDb::new(Network::TestNetwork); @@ -70,10 +72,9 @@ //! &network, //! &block_source, //! &mut wallet_db, -//! scan_range.block_range().start, //! chain_state, -//! scan_range.len() -//! ); +//! scan_range +//! ).await; //! //! // Check for scanning errors that indicate that the wallet's chain tip is out of //! // sync with blockchain history. @@ -139,14 +140,14 @@ //! &network, //! &block_source, //! &mut wallet_db, -//! scan_range.block_range().start, //! chain_state, -//! scan_range.len() -//! )?; +//! &scan_range +//! ).await?; //! //! // Handle scan errors, etc. //! } //! # Ok(()) +//! # }) //! # } //! # } //! ``` @@ -705,9 +706,9 @@ pub mod testing { use std::convert::Infallible; use zcash_primitives::consensus::BlockHeight; - use crate::proto::compact_formats::CompactBlock; + use crate::{data_api::scanning::ScanRange, proto::compact_formats::CompactBlock}; - use super::{error::Error, BlockSource}; + use super::{error::Error, BlockCache, BlockSource}; pub struct MockBlockSource; @@ -727,4 +728,35 @@ pub mod testing { Ok(()) } } + + #[async_trait::async_trait] + impl BlockCache for MockBlockSource { + async fn get_tip_height( + &self, + _range: Option<&ScanRange>, + ) -> Result, Error> { + Ok(None) + } + + async fn read( + &self, + _range: &ScanRange, + ) -> Result, Error> { + Ok(Vec::new()) + } + + async fn insert( + &self, + _compact_blocks: Vec, + ) -> Result<(), Error> { + Ok(()) + } + + async fn delete( + &self, + _range: ScanRange, + ) -> Result<(), Error> { + Ok(()) + } + } } diff --git a/zcash_client_sqlite/src/chain/init.rs b/zcash_client_sqlite/src/chain/init.rs index 0a35899b90..0c93120921 100644 --- a/zcash_client_sqlite/src/chain/init.rs +++ b/zcash_client_sqlite/src/chain/init.rs @@ -14,6 +14,8 @@ use { /// # Examples /// /// ``` +/// # let rt = tokio::runtime::Runtime::new().unwrap(); +/// # rt.block_on(async { /// use tempfile::NamedTempFile; /// use zcash_client_sqlite::{ /// BlockDb, @@ -22,7 +24,8 @@ use { /// /// let cache_file = NamedTempFile::new().unwrap(); /// let db = BlockDb::for_path(cache_file.path()).unwrap(); -/// init_cache_database(&db).unwrap(); +/// init_cache_database(&db).await.unwrap(); +/// # }); /// ``` pub async fn init_cache_database(db_cache: &BlockDb) -> Result<(), rusqlite::Error> { db_cache.0.lock().await.execute(