taler-rust

GNU Taler code in Rust. Largely core banking integrations.
Log | Files | Refs | Submodules | README | LICENSE

commit 24053f81ef7e7345999ba2a5d91c921ffccf6e39
parent 469b97592330438bc9f2f04be28dd92ecba80a2a
Author: Antoine A <>
Date:   Thu,  6 Feb 2025 22:24:49 +0100

common: fix test database creation

Diffstat:
MCargo.lock | 14+++++++-------
Mcommon/taler-test-utils/src/lib.rs | 33+++++++++++++++------------------
2 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1861,7 +1861,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.0", - "zerocopy 0.8.16", + "zerocopy 0.8.17", ] [[package]] @@ -1900,7 +1900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" dependencies = [ "getrandom 0.3.1", - "zerocopy 0.8.16", + "zerocopy 0.8.17", ] [[package]] @@ -3367,11 +3367,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b8c07a70861ce02bad1607b5753ecb2501f67847b9f9ada7c160fff0ec6300c" +checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" dependencies = [ - "zerocopy-derive 0.8.16", + "zerocopy-derive 0.8.17", ] [[package]] @@ -3387,9 +3387,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5226bc9a9a9836e7428936cde76bb6b22feea1a8bfdbc0d241136e4d13417e25" +checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" dependencies = [ "proc-macro2", "quote", diff --git a/common/taler-test-utils/src/lib.rs b/common/taler-test-utils/src/lib.rs @@ -14,7 +14,10 @@ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::{ + atomic::{AtomicUsize, Ordering}, + OnceLock, +}; use sqlx::{postgres::PgPoolOptions, PgPool}; @@ -30,23 +33,20 @@ pub async fn db_test_setup() -> PgPool { db_pool().await } -static MASTER_POOL: tokio::sync::OnceCell<PgPool> = tokio::sync::OnceCell::const_new(); +static MASTER_POOL: OnceLock<PgPool> = OnceLock::new(); const DB: &str = "postgres:/taler_rust_check"; static NB_DB: AtomicUsize = AtomicUsize::new(0); async fn db_pool() -> PgPool { - let master = MASTER_POOL - .get_or_init(|| async { - PgPoolOptions::new() - .min_connections(0) - .max_connections(20) - .test_before_acquire(true) - .connect(DB) - .await - .expect("pg pool") - }) - .await; + let master = MASTER_POOL.get_or_init(|| { + PgPoolOptions::new() + .max_connections(20) + .test_before_acquire(false) + .after_release(|_conn, _| Box::pin(async move { Ok(false) })) + .connect_lazy(DB) + .expect("pg pool") + }); let idx = NB_DB.fetch_add(1, Ordering::Relaxed); // Cleanup test db let name = format!("taler_rust_test_{idx}"); @@ -62,11 +62,8 @@ async fn db_pool() -> PgPool { drop(conn); PgPoolOptions::new() - .min_connections(0) - .max_connections(5) - .test_before_acquire(true) - .connect(&format!("postgresql:/{name}")) - .await + .test_before_acquire(false) + .connect_lazy(&format!("postgresql:/{name}")) .expect("pg pool") }