From 16a14fc2b1885129144c003c163551e0dbd7d43d Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 27 May 2023 19:53:04 +0200 Subject: fix #7846, including adding test --- src/backenddb/pg_expire_locks.c | 10 ++++++---- src/backenddb/pg_expire_locks.h | 3 ++- src/backenddb/pg_helper.h | 11 +++++++++++ src/backenddb/plugin_merchantdb_postgres.c | 11 ++--------- src/include/taler_merchantdb_plugin.h | 3 ++- src/testing/test_merchant_reserve_creation.sh | 11 ++++++++--- 6 files changed, 31 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/backenddb/pg_expire_locks.c b/src/backenddb/pg_expire_locks.c index 4b12ba04..7a3c3bac 100644 --- a/src/backenddb/pg_expire_locks.c +++ b/src/backenddb/pg_expire_locks.c @@ -25,7 +25,8 @@ #include "pg_expire_locks.h" #include "pg_helper.h" -void + +enum GNUNET_DB_QueryStatus TMH_PG_expire_locks (void *cls) { struct PostgresClosure *pg = cls; @@ -49,7 +50,7 @@ TMH_PG_expire_locks (void *cls) if (qs1 < 0) { GNUNET_break (0); - return; + return qs1; } PREPARE (pg, "unlock_orders", @@ -61,7 +62,7 @@ TMH_PG_expire_locks (void *cls) if (qs2 < 0) { GNUNET_break (0); - return; + return qs2; } PREPARE (pg, "unlock_contracts", @@ -74,11 +75,12 @@ TMH_PG_expire_locks (void *cls) if (qs3 < 0) { GNUNET_break (0); - return; + return qs3; } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Released %d+%d+%d locks\n", qs1, qs2, qs3); + return qs1 + qs2 + qs3; } diff --git a/src/backenddb/pg_expire_locks.h b/src/backenddb/pg_expire_locks.h index 6eac73de..55f1ff48 100644 --- a/src/backenddb/pg_expire_locks.h +++ b/src/backenddb/pg_expire_locks.h @@ -31,8 +31,9 @@ * instances. * * @param cls closure + * @return database result code */ -void +enum GNUNET_DB_QueryStatus TMH_PG_expire_locks (void *cls); #endif diff --git a/src/backenddb/pg_helper.h b/src/backenddb/pg_helper.h index 28636577..bb8e7255 100644 --- a/src/backenddb/pg_helper.h +++ b/src/backenddb/pg_helper.h @@ -129,4 +129,15 @@ void check_connection (struct PostgresClosure *pg); +/** + * Do a pre-flight check that we are not in an uncommitted transaction. + * If we are, die. + * Does not return anything, as we will continue regardless of the outcome. + * + * @param cls the `struct PostgresClosure` with the plugin-specific state + */ +void +postgres_preflight (void *cls); + + #endif diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c index 3dbdae48..35d6f111 100644 --- a/src/backenddb/plugin_merchantdb_postgres.c +++ b/src/backenddb/plugin_merchantdb_postgres.c @@ -208,14 +208,7 @@ postgres_event_notify (void *cls, } -/** - * Do a pre-flight check that we are not in an uncommitted transaction. - * If we are, die. - * Does not return anything, as we will continue regardless of the outcome. - * - * @param cls the `struct PostgresClosure` with the plugin-specific state - */ -static void +void postgres_preflight (void *cls) { struct PostgresClosure *pg = cls; @@ -2377,7 +2370,7 @@ RETRY: GNUNET_PQ_query_param_auto_from_type (reserve_pub), GNUNET_PQ_query_param_auto_from_type (reserve_priv), GNUNET_PQ_query_param_string (exchange_url), - GNUNET_PQ_query_param_auto_from_type (reserve_pub), + GNUNET_PQ_query_param_auto_from_type (master_pub), GNUNET_PQ_query_param_end }; diff --git a/src/include/taler_merchantdb_plugin.h b/src/include/taler_merchantdb_plugin.h index d07b92f1..79f43fb8 100644 --- a/src/include/taler_merchantdb_plugin.h +++ b/src/include/taler_merchantdb_plugin.h @@ -1486,8 +1486,9 @@ struct TALER_MERCHANTDB_Plugin * instances. * * @param cls closure + * @return database result code */ - void + enum GNUNET_DB_QueryStatus (*expire_locks)(void *cls); diff --git a/src/testing/test_merchant_reserve_creation.sh b/src/testing/test_merchant_reserve_creation.sh index 753b5e41..f68c4834 100755 --- a/src/testing/test_merchant_reserve_creation.sh +++ b/src/testing/test_merchant_reserve_creation.sh @@ -26,7 +26,6 @@ echo -n "Configuring merchant instance ..." # create instance FORTYTHREE=`get_payto_uri fortythree x` echo -n "." -bash STATUS=$(curl -H "Content-Type: application/json" -X POST \ -H 'Authorization: Bearer secret-token:super_secret' \ @@ -96,7 +95,6 @@ STATUS=$(curl 'http://localhost:9966/instances/default/private/reserves/'$RESERV export LAST_RESPONSE -bash FUNDED=`jq -r '.merchant_initial_amount == .exchange_initial_amount' < $LAST_RESPONSE` if [ "$FUNDED" != "true" ] @@ -105,6 +103,13 @@ then exit_fail "should be funded. got: $STATUS is founded: $FUNDED" fi +ACCOUNTS=`jq -r '.accounts|length' < $LAST_RESPONSE` + +if [ "x$ACCOUNTS" != "x1" ] +then + cat $LAST_RESPONSE + exit_fail "Expected 1 account in response. got: $ACCOUNTS" +fi echo -n "authorizing tip ..." @@ -167,7 +172,7 @@ STATUS=$(curl 'http://localhost:9966/instances/default/private/reserves' \ if [ "$STATUS" != "400" ] then - exit_fail 'Should respond invalid, bad currency. got: $STATUS" + exit_fail "Should respond invalid, bad currency. got: $STATUS" fi echo "FAILED (which is ok)" -- cgit v1.2.3