From d67011e2b55dbd0e2158c4c144f5092e1593d70a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 7 Feb 2016 15:02:49 +0100 Subject: making mintdb tests pass again after API refactoring to remove total amount --- src/include/taler_mintdb_plugin.h | 4 +--- src/mint-lib/test_mint_api.c | 13 +------------ src/mint/taler-mint-httpd_db.c | 24 +++--------------------- src/mintdb/plugin_mintdb_postgres.c | 9 +++------ src/mintdb/test_mintdb.c | 15 +++------------ src/pq/pq_result_helper.c | 22 ++++++++++++++++++---- 6 files changed, 29 insertions(+), 58 deletions(-) diff --git a/src/include/taler_mintdb_plugin.h b/src/include/taler_mintdb_plugin.h index d2cc3d76e..b65b3e4f7 100644 --- a/src/include/taler_mintdb_plugin.h +++ b/src/include/taler_mintdb_plugin.h @@ -606,7 +606,6 @@ typedef void * @param coin_pub which public key was this payment about * @param coin_value amount contributed by this coin in total (with fee) * @param coin_fee applicable fee for this coin - * @param transfer_value total amount of the wire transfer */ typedef void (*TALER_MINTDB_WireTransferDataCallback)(void *cls, @@ -616,8 +615,7 @@ typedef void uint64_t transaction_id, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *coin_value, - const struct TALER_Amount *coin_fee, - const struct TALER_Amount *transfer_value); + const struct TALER_Amount *coin_fee); /** diff --git a/src/mint-lib/test_mint_api.c b/src/mint-lib/test_mint_api.c index e41d01805..b243cc2cf 100644 --- a/src/mint-lib/test_mint_api.c +++ b/src/mint-lib/test_mint_api.c @@ -1392,8 +1392,7 @@ deposit_wtid_cb (void *cls, json_t *json, const struct TALER_WireTransferIdentifierRawP *wtid, struct GNUNET_TIME_Absolute execution_time, - const struct TALER_Amount *coin_contribution, - const struct TALER_Amount *total_amount) + const struct TALER_Amount *coin_contribution) { struct InterpreterState *is = cls; struct Command *cmd = &is->commands[is->ip]; @@ -1413,16 +1412,6 @@ deposit_wtid_cb (void *cls, { case MHD_HTTP_OK: cmd->details.deposit_wtid.wtid = *wtid; - if (0 != TALER_amount_cmp (total_amount, - &cmd->details.deposit_wtid.total_amount_expected)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Total amount missmatch to command %s\n", - cmd->label); - json_dumpf (json, stderr, 0); - fail (is); - return; - } break; default: break; diff --git a/src/mint/taler-mint-httpd_db.c b/src/mint/taler-mint-httpd_db.c index b93ead3af..8c22a0a2a 100644 --- a/src/mint/taler-mint-httpd_db.c +++ b/src/mint/taler-mint-httpd_db.c @@ -1565,12 +1565,6 @@ struct WtidTransactionContext */ struct TALER_Amount total; - /** - * Value we find in the DB for the @e total; only valid if @e is_valid - * is #GNUNET_YES. - */ - struct TALER_Amount db_transaction_value; - /** * Public key of the merchant, only valid if @e is_valid * is #GNUNET_YES. @@ -1612,7 +1606,6 @@ struct WtidTransactionContext * @param coin_pub which public key was this payment about * @param deposit_value amount contributed by this coin in total * @param deposit_fee deposit fee charged by mint for this coin - * @param transaction_value total value of the wire transaction */ static void handle_transaction_data (void *cls, @@ -1622,8 +1615,7 @@ handle_transaction_data (void *cls, uint64_t transaction_id, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *deposit_value, - const struct TALER_Amount *deposit_fee, - const struct TALER_Amount *transaction_value) + const struct TALER_Amount *deposit_fee) { struct WtidTransactionContext *ctx = cls; struct TALER_Amount delta; @@ -1634,7 +1626,6 @@ handle_transaction_data (void *cls, { ctx->merchant_pub = *merchant_pub; ctx->h_wire = *h_wire; - ctx->db_transaction_value = *transaction_value; ctx->is_valid = GNUNET_YES; if (GNUNET_OK != TALER_amount_subtract (&ctx->total, @@ -1653,9 +1644,7 @@ handle_transaction_data (void *cls, sizeof (struct TALER_MerchantPublicKeyP))) || (0 != memcmp (&ctx->h_wire, h_wire, - sizeof (struct GNUNET_HashCode))) || - (0 != TALER_amount_cmp (transaction_value, - &ctx->db_transaction_value)) ) + sizeof (struct GNUNET_HashCode))) ) { GNUNET_break (0); ctx->is_valid = GNUNET_SYSERR; @@ -1741,15 +1730,8 @@ TMH_DB_execute_wire_deposits (struct MHD_Connection *connection, return TMH_RESPONSE_reply_arg_unknown (connection, "wtid"); } - if (0 != TALER_amount_cmp (&ctx.total, - &ctx.db_transaction_value)) - { - /* FIXME: this CAN actually differ, due to rounding - down. But we should still check that the values - do match after rounding 'total' down! */ - } return TMH_RESPONSE_reply_wire_deposit_details (connection, - &ctx.db_transaction_value, + &ctx.total, &ctx.merchant_pub, &ctx.h_wire, ctx.deposits); diff --git a/src/mintdb/plugin_mintdb_postgres.c b/src/mintdb/plugin_mintdb_postgres.c index 5015f4770..772b86e83 100644 --- a/src/mintdb/plugin_mintdb_postgres.c +++ b/src/mintdb/plugin_mintdb_postgres.c @@ -3739,7 +3739,7 @@ postgres_get_coin_transactions (void *cls, /** - * Lookup the list of Taler transactions that was aggregated + * Lookup the list of Taler transactions that were aggregated * into a wire transfer by the respective @a wtid. * * @param cls closure @@ -3793,7 +3793,6 @@ postgres_lookup_wire_transfer (void *cls, struct GNUNET_TIME_Absolute exec_time; struct TALER_Amount coin_amount; struct TALER_Amount coin_fee; - struct TALER_Amount transfer_amount; struct GNUNET_PQ_ResultSpec rs[] = { GNUNET_PQ_result_spec_auto_from_type ("h_contract", &h_contract), GNUNET_PQ_result_spec_auto_from_type ("h_wire", &h_wire), @@ -3803,8 +3802,7 @@ postgres_lookup_wire_transfer (void *cls, GNUNET_PQ_result_spec_absolute_time ("execution_time", &exec_time), TALER_PQ_result_spec_amount ("coin_amount", &coin_amount), TALER_PQ_result_spec_amount ("coin_fee", &coin_fee), - TALER_PQ_result_spec_amount ("transfer_total", &transfer_amount), - GNUNET_PQ_result_spec_end + GNUNET_PQ_result_spec_end }; if (GNUNET_OK != GNUNET_PQ_extract_result (result, rs, i)) { @@ -3819,8 +3817,7 @@ postgres_lookup_wire_transfer (void *cls, transaction_id, &coin_pub, &coin_amount, - &coin_fee, - &transfer_amount); + &coin_fee); } PQclear (result); return GNUNET_OK; diff --git a/src/mintdb/test_mintdb.c b/src/mintdb/test_mintdb.c index 07f5d078a..0938f8fab 100644 --- a/src/mintdb/test_mintdb.c +++ b/src/mintdb/test_mintdb.c @@ -453,8 +453,7 @@ cb_wt_never (void *cls, uint64_t transaction_id, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *coin_value, - const struct TALER_Amount *coin_fee, - const struct TALER_Amount *transfer_value) + const struct TALER_Amount *coin_fee) { GNUNET_assert (0); /* this statement should be unreachable */ } @@ -468,7 +467,6 @@ cb_wtid_never (void *cls, const struct TALER_WireTransferIdentifierRawP *wtid, const struct TALER_Amount *coin_contribution, const struct TALER_Amount *coin_fee, - const struct TALER_Amount *total_amount, struct GNUNET_TIME_Absolute execution_time) { GNUNET_assert (0); @@ -498,8 +496,7 @@ cb_wt_check (void *cls, uint64_t transaction_id, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *coin_value, - const struct TALER_Amount *coin_fee, - const struct TALER_Amount *transfer_value) + const struct TALER_Amount *coin_fee) { GNUNET_assert (cls == &cb_wt_never); GNUNET_assert (0 == memcmp (merchant_pub, @@ -519,8 +516,6 @@ cb_wt_check (void *cls, &coin_value_wt)); GNUNET_assert (0 == TALER_amount_cmp (coin_fee, &coin_fee_wt)); - GNUNET_assert (0 == TALER_amount_cmp (transfer_value, - &transfer_value_wt)); } @@ -532,7 +527,6 @@ cb_wtid_check (void *cls, const struct TALER_WireTransferIdentifierRawP *wtid, const struct TALER_Amount *coin_contribution, const struct TALER_Amount *coin_fee, - const struct TALER_Amount *total_amount, struct GNUNET_TIME_Absolute execution_time) { GNUNET_assert (cls == &cb_wtid_never); @@ -545,8 +539,6 @@ cb_wtid_check (void *cls, &coin_value_wt)); GNUNET_assert (0 == TALER_amount_cmp (coin_fee, &coin_fee_wt)); - GNUNET_assert (0 == TALER_amount_cmp (total_amount, - &transfer_value_wt)); } @@ -826,8 +818,7 @@ run (void *cls, execution_time_wt, &coin_pub_wt, &coin_value_wt, - &coin_fee_wt, - &transfer_value_wt)); + &coin_fee_wt)); FAILIF (GNUNET_OK != plugin->lookup_wire_transfer (plugin->cls, session, diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c index c8b3b01fc..748ce0c29 100644 --- a/src/pq/pq_result_helper.c +++ b/src/pq/pq_result_helper.c @@ -72,11 +72,25 @@ extract_amount_nbo_helper (PGresult *result, frac_name); curr_num = PQfnumber (result, curr_name); - if ( (val_num < 0) || - (frac_num < 0) || - (curr_num < 0) ) + if (val_num < 0) { - GNUNET_break (0); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Field `%s' does not exist in result\n", + val_name); + return GNUNET_SYSERR; + } + if (frac_num < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Field `%s' does not exist in result\n", + frac_name); + return GNUNET_SYSERR; + } + if (curr_num < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Field `%s' does not exist in result\n", + curr_name); return GNUNET_SYSERR; } if ( (PQgetisnull (result, -- cgit v1.2.3