mod ephemeral;
mod migrations;
pub(crate) mod v1;
use std::future::Future;
use tempfile::TempDir;
use crate::chain_index::finalised_state::FinalisedState;
use crate::chain_index::source::mockchain_source::MockchainSource;
use crate::chain_index::tests::init_tracing;
use crate::chain_index::tests::vectors::{build_mockchain_source, load_test_vectors};
use crate::error::FinalisedStateError;
use crate::BlockchainSource;
async fn assert_shutdown_returns_promptly<F, Fut, T>(version_label: &str, spawn_fn: F)
where
F: FnOnce(MockchainSource) -> Fut,
Fut: Future<Output = Result<(TempDir, FinalisedState<T>), FinalisedStateError>>,
T: BlockchainSource,
{
init_tracing();
let source = build_mockchain_source(load_test_vectors().unwrap().blocks);
let (_db_dir, zaino_db) = spawn_fn(source).await.unwrap();
zaino_db.wait_until_ready().await;
let start = std::time::Instant::now();
zaino_db.shutdown().await.unwrap();
let elapsed = start.elapsed();
assert!(
elapsed < std::time::Duration::from_secs(1),
"{version_label} shutdown took {elapsed:?}, expected < 1 s"
);
}