towards fixing #4399
This commit is contained in:
parent
79c316f0d5
commit
dc2d0a186c
@ -1,5 +1,5 @@
|
|||||||
# This Makefile.am is in the public domain
|
# This Makefile.am is in the public domain
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/src/include
|
AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_srcdir)/src/bank-lib
|
||||||
|
|
||||||
if USE_COVERAGE
|
if USE_COVERAGE
|
||||||
AM_CFLAGS = --coverage -O0
|
AM_CFLAGS = --coverage -O0
|
||||||
@ -55,6 +55,7 @@ test_exchange_api_SOURCES = \
|
|||||||
test_exchange_api_LDADD = \
|
test_exchange_api_LDADD = \
|
||||||
libtalerexchange.la \
|
libtalerexchange.la \
|
||||||
$(LIBGCRYPT_LIBS) \
|
$(LIBGCRYPT_LIBS) \
|
||||||
|
$(top_builddir)/src/bank-lib/libfakebank.la \
|
||||||
$(top_builddir)/src/json/libtalerjson.la \
|
$(top_builddir)/src/json/libtalerjson.la \
|
||||||
$(top_builddir)/src/util/libtalerutil.la \
|
$(top_builddir)/src/util/libtalerutil.la \
|
||||||
-lgnunetcurl \
|
-lgnunetcurl \
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
#include "taler_json_lib.h"
|
#include "taler_json_lib.h"
|
||||||
#include <gnunet/gnunet_util_lib.h>
|
#include <gnunet/gnunet_util_lib.h>
|
||||||
#include <microhttpd.h>
|
#include <microhttpd.h>
|
||||||
|
#include "fakebank.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the configuration file is set to include wire format 'test'?
|
* Is the configuration file is set to include wire format 'test'?
|
||||||
@ -57,6 +59,11 @@ static struct GNUNET_CURL_RescheduleContext *rc;
|
|||||||
*/
|
*/
|
||||||
static struct GNUNET_SCHEDULER_Task *timeout_task;
|
static struct GNUNET_SCHEDULER_Task *timeout_task;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle to our fakebank.
|
||||||
|
*/
|
||||||
|
static struct FAKEBANK_Handle *fakebank;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Result of the testcases, #GNUNET_OK on success
|
* Result of the testcases, #GNUNET_OK on success
|
||||||
*/
|
*/
|
||||||
@ -127,7 +134,17 @@ enum OpCode
|
|||||||
/**
|
/**
|
||||||
* Run the aggregator to execute deposits.
|
* Run the aggregator to execute deposits.
|
||||||
*/
|
*/
|
||||||
OC_RUN_AGGREGATOR
|
OC_RUN_AGGREGATOR,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that the fakebank has received a certain transaction.
|
||||||
|
*/
|
||||||
|
OC_CHECK_BANK_DEPOSIT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that the fakebank has not received any other transactions.
|
||||||
|
*/
|
||||||
|
OC_CHECK_BANK_DEPOSITS_EMPTY
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -549,6 +566,30 @@ struct Command
|
|||||||
|
|
||||||
} run_aggregator;
|
} run_aggregator;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which amount do we expect to see transferred?
|
||||||
|
*/
|
||||||
|
const char *amount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which account do we expect to be debited?
|
||||||
|
*/
|
||||||
|
uint64_t account_debit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which account do we expect to be credited?
|
||||||
|
*/
|
||||||
|
uint64_t account_credit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set (!) to the wire transfer identifier observed.
|
||||||
|
*/
|
||||||
|
struct TALER_WireTransferIdentifierRawP wtid;
|
||||||
|
|
||||||
|
} check_bank_deposit;
|
||||||
|
|
||||||
} details;
|
} details;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -1685,20 +1726,20 @@ interpreter_run (void *cls)
|
|||||||
}
|
}
|
||||||
cmd->details.deposit.dh
|
cmd->details.deposit.dh
|
||||||
= TALER_EXCHANGE_deposit (exchange,
|
= TALER_EXCHANGE_deposit (exchange,
|
||||||
&amount,
|
&amount,
|
||||||
wire_deadline,
|
wire_deadline,
|
||||||
wire,
|
wire,
|
||||||
&h_contract,
|
&h_contract,
|
||||||
&coin_pub,
|
&coin_pub,
|
||||||
coin_pk_sig,
|
coin_pk_sig,
|
||||||
&coin_pk->key,
|
&coin_pk->key,
|
||||||
timestamp,
|
timestamp,
|
||||||
cmd->details.deposit.transaction_id,
|
cmd->details.deposit.transaction_id,
|
||||||
&merchant_pub,
|
&merchant_pub,
|
||||||
refund_deadline,
|
refund_deadline,
|
||||||
&coin_sig,
|
&coin_sig,
|
||||||
&deposit_cb,
|
&deposit_cb,
|
||||||
is);
|
is);
|
||||||
if (NULL == cmd->details.deposit.dh)
|
if (NULL == cmd->details.deposit.dh)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
@ -1873,7 +1914,19 @@ interpreter_run (void *cls)
|
|||||||
ref = find_command (is,
|
ref = find_command (is,
|
||||||
cmd->details.wire_deposits.wtid_ref);
|
cmd->details.wire_deposits.wtid_ref);
|
||||||
GNUNET_assert (NULL != ref);
|
GNUNET_assert (NULL != ref);
|
||||||
cmd->details.wire_deposits.wtid = ref->details.deposit_wtid.wtid;
|
switch (ref->oc)
|
||||||
|
{
|
||||||
|
case OC_DEPOSIT_WTID:
|
||||||
|
cmd->details.wire_deposits.wtid = ref->details.deposit_wtid.wtid;
|
||||||
|
break;
|
||||||
|
case OC_CHECK_BANK_DEPOSIT:
|
||||||
|
cmd->details.wire_deposits.wtid = ref->details.check_bank_deposit.wtid;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
GNUNET_break (0);
|
||||||
|
fail (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cmd->details.wire_deposits.wdh
|
cmd->details.wire_deposits.wdh
|
||||||
= TALER_EXCHANGE_wire_deposits (exchange,
|
= TALER_EXCHANGE_wire_deposits (exchange,
|
||||||
@ -1967,6 +2020,45 @@ interpreter_run (void *cls)
|
|||||||
next_command (is);
|
next_command (is);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
case OC_CHECK_BANK_DEPOSIT:
|
||||||
|
{
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
TALER_string_to_amount (cmd->details.check_bank_deposit.amount,
|
||||||
|
&amount))
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Failed to parse amount `%s' at %u\n",
|
||||||
|
cmd->details.reserve_withdraw.amount,
|
||||||
|
is->ip);
|
||||||
|
fail (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
FAKEBANK_check (fakebank,
|
||||||
|
&amount,
|
||||||
|
cmd->details.check_bank_deposit.account_debit,
|
||||||
|
cmd->details.check_bank_deposit.account_credit,
|
||||||
|
&cmd->details.check_bank_deposit.wtid))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
fail (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
next_command (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
case OC_CHECK_BANK_DEPOSITS_EMPTY:
|
||||||
|
{
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
FAKEBANK_check_empty (fakebank))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
fail (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
next_command (is);
|
||||||
|
return;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"Unknown instruction %d at %u (%s)\n",
|
"Unknown instruction %d at %u (%s)\n",
|
||||||
@ -2159,6 +2251,10 @@ do_shutdown (void *cls)
|
|||||||
cmd->details.run_aggregator.aggregator_proc = NULL;
|
cmd->details.run_aggregator.aggregator_proc = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case OC_CHECK_BANK_DEPOSIT:
|
||||||
|
break;
|
||||||
|
case OC_CHECK_BANK_DEPOSITS_EMPTY:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"Unknown instruction %d at %u (%s)\n",
|
"Unknown instruction %d at %u (%s)\n",
|
||||||
@ -2174,6 +2270,11 @@ do_shutdown (void *cls)
|
|||||||
is->task = NULL;
|
is->task = NULL;
|
||||||
}
|
}
|
||||||
GNUNET_free (is);
|
GNUNET_free (is);
|
||||||
|
if (NULL != fakebank)
|
||||||
|
{
|
||||||
|
FAKEBANK_stop (fakebank);
|
||||||
|
fakebank = NULL;
|
||||||
|
}
|
||||||
if (NULL != exchange)
|
if (NULL != exchange)
|
||||||
{
|
{
|
||||||
TALER_EXCHANGE_disconnect (exchange);
|
TALER_EXCHANGE_disconnect (exchange);
|
||||||
@ -2465,6 +2566,9 @@ run (void *cls)
|
|||||||
{ .oc = OC_RUN_AGGREGATOR,
|
{ .oc = OC_RUN_AGGREGATOR,
|
||||||
.label = "run-aggregator" },
|
.label = "run-aggregator" },
|
||||||
|
|
||||||
|
{ .oc = OC_CHECK_BANK_DEPOSITS_EMPTY,
|
||||||
|
.label = "check_bank_empty" },
|
||||||
|
|
||||||
/* TODO: trigger aggregation logic and then check the
|
/* TODO: trigger aggregation logic and then check the
|
||||||
cases where tracking succeeds! */
|
cases where tracking succeeds! */
|
||||||
|
|
||||||
@ -2481,8 +2585,9 @@ run (void *cls)
|
|||||||
|
|
||||||
ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
|
ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
|
||||||
&rc);
|
&rc);
|
||||||
rc = GNUNET_CURL_gnunet_rc_create (ctx);
|
|
||||||
GNUNET_assert (NULL != ctx);
|
GNUNET_assert (NULL != ctx);
|
||||||
|
rc = GNUNET_CURL_gnunet_rc_create (ctx);
|
||||||
|
fakebank = FAKEBANK_start (8082);
|
||||||
exchange = TALER_EXCHANGE_connect (ctx,
|
exchange = TALER_EXCHANGE_connect (ctx,
|
||||||
"http://localhost:8081",
|
"http://localhost:8081",
|
||||||
&cert_cb, is,
|
&cert_cb, is,
|
||||||
|
Loading…
Reference in New Issue
Block a user