commit 3903dd7360afe1cc96d7675e3b183fd80796cb1e
parent 214d846a40647b5fba18abf43680d1aad7881594
Author: Antoine A <>
Date: Thu, 22 Oct 2026 11:28:48 +0200
bank: reuse db notification listener when swapping cfg during tests and
set max connections for test db pool
Diffstat:
2 files changed, 52 insertions(+), 37 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -1365,7 +1365,7 @@ dependencies = [
[[package]]
name = "http-client"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
dependencies = [
"futures-util",
"http",
@@ -1502,9 +1502,9 @@ dependencies = [
[[package]]
name = "icu_collections"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"
+checksum = "fe090a42a0d3140fed8c63263ed1fecc02422cb2f4bfe55cd8de2de1b8e105dd"
dependencies = [
"displaydoc",
"potential_utf",
@@ -1516,9 +1516,9 @@ dependencies = [
[[package]]
name = "icu_locale_core"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"
+checksum = "25d29b57c17c6528d0dc4c2141cfa2d08200465acb537a3909c8b9b8a4a984c0"
dependencies = [
"displaydoc",
"litemap",
@@ -1529,9 +1529,9 @@ dependencies = [
[[package]]
name = "icu_normalizer"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"
+checksum = "404a3b8c486f205c87fe7f23ab6894d84a4ad76d6e4671ae1981ba7def87c599"
dependencies = [
"icu_collections",
"icu_normalizer_data",
@@ -1543,15 +1543,15 @@ dependencies = [
[[package]]
name = "icu_normalizer_data"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"
+checksum = "20f0088bfb7441f7a37fa0c9e20cb1e9cba1cac6b9ce8cd2a6dc44294f8e8cbc"
[[package]]
name = "icu_properties"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"
+checksum = "2ea83d991c56158f7cf898bf86436c1dfe7c07ee82fe88951f2695c9f37a379f"
dependencies = [
"displaydoc",
"icu_collections",
@@ -1564,15 +1564,15 @@ dependencies = [
[[package]]
name = "icu_properties_data"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
+checksum = "b98f29af82d02b163fe50161388350e743bb3107cc8e8c2f7314cb505faddfcf"
[[package]]
name = "icu_provider"
-version = "2.3.1"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"
+checksum = "413099315636c588ee8f011190b329b971a09a8fae9d157e01dcae8379468514"
dependencies = [
"displaydoc",
"icu_locale_core",
@@ -3398,7 +3398,7 @@ dependencies = [
[[package]]
name = "taler-api"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
dependencies = [
"aws-lc-rs",
"axum",
@@ -3428,12 +3428,12 @@ dependencies = [
[[package]]
name = "taler-build"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
[[package]]
name = "taler-common"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
dependencies = [
"anyhow",
"aws-lc-rs",
@@ -3465,7 +3465,7 @@ dependencies = [
[[package]]
name = "taler-macros"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
dependencies = [
"proc-macro2",
"quote",
@@ -3475,7 +3475,7 @@ dependencies = [
[[package]]
name = "taler-test-utils"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#bd5726298887d7242c47a01cbcfa4f171ac1b7a5"
+source = "git+git://git.taler.net/taler-rust.git/#a0099119dc8c6cb95324f2b3b0283bd1ffc8fea5"
dependencies = [
"aws-lc-rs",
"axum",
@@ -3604,9 +3604,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"
+checksum = "abc840c238154d58f9e86b2792261edfde565a17696e1cda1a449de27979801a"
dependencies = [
"displaydoc",
"zerovec",
@@ -3620,9 +3620,9 @@ checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee"
[[package]]
name = "tokio"
-version = "1.54.0"
+version = "1.54.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0c168a474b95bfecfe908a65d4bdffc523144b649a74c09c286afb35d53e0bc"
+checksum = "b52fd3255258d26fac7264ab5a76b53c13367136dc011d3d6ad4f8ed070396a3"
dependencies = [
"bytes",
"libc",
@@ -4387,9 +4387,9 @@ dependencies = [
[[package]]
name = "yoke"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
+checksum = "417ef3fcf6c300b7dbd25c85531a746931c02ad536f3cf4786ed1e88223340b3"
dependencies = [
"stable_deref_trait",
"yoke-derive",
@@ -4468,9 +4468,9 @@ dependencies = [
[[package]]
name = "zerovec"
-version = "0.11.8"
+version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"
+checksum = "f58a2799cfe9a1670c7ea8edbd52ef8edb93cb37a7f83bf31ba9e35d9dae6a40"
dependencies = [
"yoke",
"zerofrom",
@@ -4479,9 +4479,9 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.11.6"
+version = "0.11.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
+checksum = "c3743ddbf47738d929cd1ae2e199d40d0162979dfe31aef8ae646d2bf00bf97a"
dependencies = [
"proc-macro2",
"quote",
diff --git a/libeufin-bank/src/api.rs b/libeufin-bank/src/api.rs
@@ -327,12 +327,12 @@ pub mod test {
use compact_str::{CompactString, CompactStringExt};
use jiff::Timestamp;
use rand::{random_range, seq::IndexedRandom};
- use sqlx::{AssertSqlSafe, PgPool, postgres::PgConnectOptions};
+ use sqlx::{AssertSqlSafe, PgPool, pool::PoolOptions, postgres::PgConnectOptions};
use taler_api::{api::TalerRouter, db::BindHelper};
use taler_common::{
api::{EddsaPublicKey, HashCode, ShortHashCode},
config::Config,
- db::{dbinit, pool},
+ db::{dbinit, pool_with_options},
error_code::ErrorCode,
types::{
amount::{Amount, Decimal, decimal},
@@ -349,7 +349,7 @@ pub mod test {
use crate::{
TanChannel,
api::{
- BankState,
+ BankState, Metrics,
account::{
AccountData, Balance, CreditDebitInfo, create_admin_account, rand_iban_payto,
},
@@ -650,7 +650,13 @@ pub mod test {
let cfg = Config::load(CONFIG_SOURCE, Some(format!("conf/{conf}"))).unwrap();
let cfg = BankCfg::parse(&cfg).unwrap();
let dir = cfg.db_cfg.sql_dir.as_ref();
- let db = pool(options, "libeufin_bank").await.unwrap();
+ let db = pool_with_options(
+ options,
+ "libeufin_bank",
+ PoolOptions::new().max_connections(3),
+ )
+ .await
+ .unwrap();
let mut conn = db.acquire().await.unwrap();
dbinit(&mut conn, dir, "libeufin-bank", true).await.unwrap();
dbinit(&mut conn, dir, "libeufin-nexus", true)
@@ -786,9 +792,18 @@ pub mod test {
pub async fn swap_cfg(mut self, conf: &str) -> Self {
let cfg = Config::load(CONFIG_SOURCE, Some(format!("conf/{conf}"))).unwrap();
- let state = Arc::new(
- BankState::start(self.state.db.clone(), BankCfg::parse(&cfg).unwrap()).await,
- );
+ let metrics = Metrics::default();
+ let state = Arc::new(BankState {
+ db: self.state.db.clone(),
+ cfg: BankCfg::parse(&cfg).unwrap(),
+ tx_channel: self.state.tx_channel.clone(),
+ taler_out_channel: self.state.taler_out_channel.clone(),
+ taler_in_channel: self.state.taler_in_channel.clone(),
+ revenue_channel: self.state.revenue_channel.clone(),
+ withdrawal_channel: self.state.withdrawal_channel.clone(),
+ registry: metrics.registry(),
+ metrics,
+ });
self.client.server = bank_api(state.clone());
self.state = state;
self