summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-05-27 19:53:04 +0200
committerChristian Grothoff <christian@grothoff.org>2023-05-27 19:53:04 +0200
commit16a14fc2b1885129144c003c163551e0dbd7d43d (patch)
tree600b2140e389a99bae81b7d1a7c03f3b952c260c
parent1bfaf0a19f664c313e887cc25cfb80891cd66d3a (diff)
downloadmerchant-16a14fc2b1885129144c003c163551e0dbd7d43d.tar.gz
merchant-16a14fc2b1885129144c003c163551e0dbd7d43d.tar.bz2
merchant-16a14fc2b1885129144c003c163551e0dbd7d43d.zip
fix #7846, including adding test
-rw-r--r--src/backenddb/pg_expire_locks.c10
-rw-r--r--src/backenddb/pg_expire_locks.h3
-rw-r--r--src/backenddb/pg_helper.h11
-rw-r--r--src/backenddb/plugin_merchantdb_postgres.c11
-rw-r--r--src/include/taler_merchantdb_plugin.h3
-rwxr-xr-xsrc/testing/test_merchant_reserve_creation.sh11
6 files changed, 31 insertions, 18 deletions
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)"