diff options
| author | jakka <jakkadoujin@gmail.com> | 2025-07-02 11:42:15 +0300 |
|---|---|---|
| committer | jakka <jakkadoujin@gmail.com> | 2025-07-02 11:42:15 +0300 |
| commit | 75a1804c370f7b25540744fcd9f1ae89dedaf7ad (patch) | |
| tree | 42da6f30b80b366d9a3bbff08ef00a87265ba83f /src/db.rs | |
| parent | 8d36fb00058262721ba571649e1e916690854aae (diff) | |
trying out parallelism
Diffstat (limited to 'src/db.rs')
| -rw-r--r-- | src/db.rs | 142 |
1 files changed, 74 insertions, 68 deletions
@@ -1,7 +1,7 @@ use anyhow::{Result, anyhow}; use directories::BaseDirs; -use futures_util::Stream; use libsql::{Builder, Connection, params}; +use smol::stream::Stream; use std::{ path::Path, time::{Duration, UNIX_EPOCH}, @@ -151,84 +151,90 @@ pub async fn open_default_db() -> Result<Database> { #[cfg(test)] mod tests { use futures_util::StreamExt; + use macro_rules_attribute::apply; + use smol_macros::{Executor, test}; use super::*; - #[tokio::test] - async fn check_localfiles() { - let dbname = String::from("temp1.db"); - let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; - let conn = Database::new(&dbname).await.unwrap(); - for file in filenames { - let _ = conn.insert_file(&file.to_string()).await; - } - let returned = conn - .0 - .query(TOENCODE_QUERY, ()) - .await - .unwrap() - .into_stream(); - pin_utils::pin_mut!(returned); - - let mut counter = 0; - - while let Some(Ok(_)) = returned.next().await { - counter += 1 - } + #[apply(test!)] + async fn check_localfiles(ex: &Executor<'_>) { + ex.spawn(async { + let dbname = String::from("temp1.db"); + let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; + let mut counter = 0; + let conn = Database::new(&dbname).await.unwrap(); + for file in filenames { + let _ = conn.insert_file(&file.to_string()).await; + } + let returned = conn + .0 + .query(TOENCODE_QUERY, ()) + .await + .unwrap() + .into_stream(); + pin_utils::pin_mut!(returned); - std::fs::remove_file(dbname).unwrap(); - assert!(counter == 0) + while let Some(Ok(_)) = returned.next().await { + counter += 1 + } + std::fs::remove_file(dbname).unwrap(); + assert!(counter == 0) + }) + .await; } - #[tokio::test] - async fn check_update() { - let dbname = String::from("temp2.db"); - let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; - let conn = Database::new(&dbname).await.unwrap(); - for file in filenames { + #[apply(test!)] + async fn check_update(ex: &Executor<'_>) { + ex.spawn(async { + let dbname = String::from("temp2.db"); + let filenames = ["16bit.flac", "24bit.flac", "32bit.flac"]; + let conn = Database::new(&dbname).await.unwrap(); + for file in filenames { + let _ = conn + .insert_file(Path::new(file).canonicalize().unwrap()) + .await; + } + let _ = conn - .insert_file(Path::new(file).canonicalize().unwrap()) + .0 + .execute( + REPLACE_ITEM, + params![ + Path::new("16bit.flac") + .canonicalize() + .unwrap() + .to_str() + .unwrap(), + true, + "" + ], + ) .await; - } - let _ = conn - .0 - .execute( - REPLACE_ITEM, - params![ - Path::new("16bit.flac") - .canonicalize() - .unwrap() - .to_str() - .unwrap(), - true, - "" - ], + conn.update_file( + Path::new("16bit.flac") + .canonicalize() + .unwrap() + .to_str() + .unwrap(), ) - .await; + .await + .unwrap(); - conn.update_file( - Path::new("16bit.flac") - .canonicalize() + let returned = conn + .0 + .query(TOENCODE_QUERY, ()) + .await .unwrap() - .to_str() - .unwrap(), - ) - .await - .unwrap(); - - let returned = conn - .0 - .query(TOENCODE_QUERY, ()) - .await - .unwrap() - .into_stream(); - pin_utils::pin_mut!(returned); - let mut counter = 0; - while let Some(Ok(_)) = returned.next().await { - counter += 1 - } - std::fs::remove_file(dbname).unwrap(); - assert!(counter == 0) + .into_stream(); + pin_utils::pin_mut!(returned); + let mut counter = 0; + while let Some(Ok(_)) = returned.next().await { + counter += 1 + } + std::fs::remove_file(dbname).unwrap(); + assert!(counter == 0) + }) + .await; } } |
