fix profit drain test, remove obsolete test 33 (aggregator now dies on inconsistency, before it looped); fixes #4960
This commit is contained in:
parent
70a1c0d68c
commit
0ad509bd10
@ -1297,6 +1297,10 @@ complain_out_not_found (void *cls,
|
|||||||
/* not a profit drain */
|
/* not a profit drain */
|
||||||
break;
|
break;
|
||||||
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Profit drain of %s to %s found!\n",
|
||||||
|
TALER_amount2s (&amount),
|
||||||
|
payto_uri);
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_exchange_offline_profit_drain_verify (
|
TALER_exchange_offline_profit_drain_verify (
|
||||||
&roi->details.wtid,
|
&roi->details.wtid,
|
||||||
@ -1377,7 +1381,11 @@ complain_out_not_found (void *cls,
|
|||||||
}
|
}
|
||||||
GNUNET_free (account_section);
|
GNUNET_free (account_section);
|
||||||
GNUNET_free (payto_uri);
|
GNUNET_free (payto_uri);
|
||||||
break;
|
/* profit drain was correct */
|
||||||
|
TALER_ARL_amount_add (&total_drained,
|
||||||
|
&total_drained,
|
||||||
|
&amount);
|
||||||
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +229,6 @@ function run_audit () {
|
|||||||
break
|
break
|
||||||
done
|
done
|
||||||
echo "... DONE."
|
echo "... DONE."
|
||||||
# FIXME-MS: need to make sure here that the target IBAN exists!
|
|
||||||
taler-exchange-offline -L DEBUG -c "${CONF}.tmp" \
|
taler-exchange-offline -L DEBUG -c "${CONF}.tmp" \
|
||||||
drain TESTKUDOS:0.1 exchange-account-1 payto://iban/SANDBOXX/DE360679?receiver-name=Exchange+Drain \
|
drain TESTKUDOS:0.1 exchange-account-1 payto://iban/SANDBOXX/DE360679?receiver-name=Exchange+Drain \
|
||||||
upload \
|
upload \
|
||||||
@ -244,10 +243,13 @@ function run_audit () {
|
|||||||
echo -n "Running taler-exchange-transfer ..."
|
echo -n "Running taler-exchange-transfer ..."
|
||||||
taler-exchange-transfer -L INFO -t -c $CONF 2> drain-transfer.log || exit_fail "FAIL"
|
taler-exchange-transfer -L INFO -t -c $CONF 2> drain-transfer.log || exit_fail "FAIL"
|
||||||
echo " DONE"
|
echo " DONE"
|
||||||
# FIXME-MS: transfer tool is happy here, but
|
|
||||||
# the wire transfer triggered here does NOT
|
export LIBEUFIN_NEXUS_USERNAME=exchange
|
||||||
# show up during the audit. Do we have to
|
export LIBEUFIN_NEXUS_PASSWORD=x
|
||||||
# trigger some libeufin/sandbox job first?
|
export LIBEUFIN_NEXUS_URL=http://localhost:8082/
|
||||||
|
PAIN_UUID=`libeufin-cli accounts list-payments exchange-nexus | jq .initiatedPayments[] | jq 'select(.submitted==false)' | jq -r .paymentInitiationId`
|
||||||
|
libeufin-cli accounts submit-payments --payment-uuid $PAIN_UUID exchange-nexus
|
||||||
|
|
||||||
fi
|
fi
|
||||||
audit_only
|
audit_only
|
||||||
post_audit
|
post_audit
|
||||||
@ -1921,50 +1923,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Test where h_payto in the wire_targets table is wrong
|
|
||||||
function test_33() {
|
function test_33() {
|
||||||
echo "===========33: h_payto wrong================="
|
|
||||||
|
|
||||||
# Check wire transfer lag reported (no aggregator!)
|
echo "===========33: normal run with aggregator and profit drain==========="
|
||||||
# NOTE: this test is BRAND NEW and expected
|
|
||||||
# to fail until we implement the check in the auditor!
|
|
||||||
|
|
||||||
# NOTE: This test is EXPECTED to fail for ~1h after
|
|
||||||
# re-generating the test database as we do not
|
|
||||||
# report lag of less than 1h (see GRACE_PERIOD in
|
|
||||||
# taler-helper-auditor-wire.c)
|
|
||||||
if [ $DATABASE_AGE -gt 3600 ]
|
|
||||||
then
|
|
||||||
|
|
||||||
# Modify h_payto hash, so it is inconsistent with 'wire'
|
|
||||||
WTSID=`echo "SELECT wire_target_serial_id FROM exchange.deposits WHERE deposit_serial_id=1;" | psql -Aqt $DB`
|
|
||||||
echo "UPDATE exchange.wire_targets SET h_payto='\x973e52d193a357940be9ef2939c19b0575ee1101f52188c3c01d9005b7d755c397e92624f09cfa709104b3b65605fe5130c90d7e1b7ee30f8fc570f39c16b853' WHERE wire_target_serial_id=$WTSID" | psql -Aqt $DB
|
|
||||||
|
|
||||||
# The auditor checks h_wire consistency only for
|
|
||||||
# coins where the wire transfer has happened, hence
|
|
||||||
# run aggregator first to get this test to work.
|
|
||||||
run_audit aggregator
|
|
||||||
|
|
||||||
echo -n "Testing inconsistency detection... "
|
|
||||||
TABLE=`jq -r .row_inconsistencies[0].table < test-audit-aggregation.json`
|
|
||||||
if test "x$TABLE" != "xwire_targets"
|
|
||||||
then
|
|
||||||
exit_fail "Reported table wrong: $TABLE"
|
|
||||||
fi
|
|
||||||
echo PASS
|
|
||||||
|
|
||||||
# cannot easily undo aggregator, hence full reload
|
|
||||||
full_reload
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "Test skipped (database too new)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function test_34() {
|
|
||||||
|
|
||||||
echo "===========34: normal run with aggregator and profit drain==========="
|
|
||||||
run_audit aggregator drain
|
run_audit aggregator drain
|
||||||
|
|
||||||
echo "Checking output"
|
echo "Checking output"
|
||||||
|
@ -491,12 +491,12 @@ kyc_satisfied (struct AggregationUnit *au_active)
|
|||||||
db_plugin->cls,
|
db_plugin->cls,
|
||||||
&return_relevant_amounts,
|
&return_relevant_amounts,
|
||||||
(void *) au_active);
|
(void *) au_active);
|
||||||
|
if (NULL == requirement)
|
||||||
|
return true;
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"KYC requirement for %s is %s\n",
|
"KYC requirement for %s is %s\n",
|
||||||
TALER_amount2s (&au_active->total_amount),
|
TALER_amount2s (&au_active->total_amount),
|
||||||
requirement);
|
requirement);
|
||||||
if (NULL == requirement)
|
|
||||||
return true;
|
|
||||||
qs = db_plugin->insert_kyc_requirement_for_account (
|
qs = db_plugin->insert_kyc_requirement_for_account (
|
||||||
db_plugin->cls,
|
db_plugin->cls,
|
||||||
requirement,
|
requirement,
|
||||||
@ -622,7 +622,9 @@ do_aggregate (struct AggregationUnit *au)
|
|||||||
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
||||||
"Aggregation total is %s.\n",
|
"Aggregation total is %s.\n",
|
||||||
TALER_amount2s (&au->total_amount));
|
TALER_amount2s (&au->total_amount));
|
||||||
|
/* Deposit was 'ready', so clearly the total
|
||||||
|
aggregated must be non-zero. */
|
||||||
|
GNUNET_assert (! TALER_amount_is_zero (&au->total_amount));
|
||||||
/* Subtract wire transfer fee and round to the unit supported by the
|
/* Subtract wire transfer fee and round to the unit supported by the
|
||||||
wire transfer method; Check if after rounding down, we still have
|
wire transfer method; Check if after rounding down, we still have
|
||||||
an amount to transfer, and if not mark as 'tiny'. */
|
an amount to transfer, and if not mark as 'tiny'. */
|
||||||
@ -783,6 +785,8 @@ run_aggregation (void *cls)
|
|||||||
}
|
}
|
||||||
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
||||||
s->work_counter++;
|
s->work_counter++;
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Found ready deposit!\n");
|
||||||
/* continued below */
|
/* continued below */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -862,6 +866,8 @@ run_shard (void *cls)
|
|||||||
|
|
||||||
(void) cls;
|
(void) cls;
|
||||||
task = NULL;
|
task = NULL;
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Running aggregation shard\n");
|
||||||
if (GNUNET_SYSERR ==
|
if (GNUNET_SYSERR ==
|
||||||
db_plugin->preflight (db_plugin->cls))
|
db_plugin->preflight (db_plugin->cls))
|
||||||
{
|
{
|
||||||
@ -955,6 +961,8 @@ drain_kyc_alerts (void *cls)
|
|||||||
|
|
||||||
(void) cls;
|
(void) cls;
|
||||||
task = NULL;
|
task = NULL;
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Draining KYC alerts\n");
|
||||||
memset (&au,
|
memset (&au,
|
||||||
0,
|
0,
|
||||||
sizeof (au));
|
sizeof (au));
|
||||||
|
Loading…
Reference in New Issue
Block a user