-update testing cmd to new bank API

This commit is contained in:
Christian Grothoff 2022-11-17 13:40:14 +01:00
parent 741831e87b
commit 2d9ff55964
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC

View File

@ -370,99 +370,86 @@ check_result (struct History *h,
* finally check it against what the bank returned. * finally check it against what the bank returned.
* *
* @param cls closure. * @param cls closure.
* @param http_status HTTP response code, #MHD_HTTP_OK (200) * @param chr http response details
* for successful status request 0 if the bank's reply is
* bogus (fails to follow the protocol),
* #MHD_HTTP_NO_CONTENT if there are no more results; on
* success the last callback is always of this status
* (even if `abs(num_results)` were already returned).
* @param ec taler status code.
* @param row_id monotonically increasing counter corresponding to
* the transaction.
* @param details details about the wire transfer.
* @param json detailed response from the HTTPD, or NULL if
* reply was not in JSON.
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
*/ */
static enum GNUNET_GenericReturnValue static void
history_cb (void *cls, history_cb (void *cls,
unsigned int http_status, const struct TALER_BANK_CreditHistoryResponse *chr)
enum TALER_ErrorCode ec,
uint64_t row_id,
const struct TALER_BANK_CreditDetails *details,
const json_t *json)
{ {
struct TALER_TESTING_Interpreter *is = cls; struct TALER_TESTING_Interpreter *is = cls;
struct HistoryState *hs = is->commands[is->ip].cls; struct HistoryState *hs = is->commands[is->ip].cls;
(void) row_id;
if (NULL == details)
{
hs->hh = NULL; hs->hh = NULL;
if ( (MHD_HTTP_NOT_FOUND == http_status) && switch (chr->http_status)
(0 == hs->total) )
{
/* not found is OK for empty history */
TALER_TESTING_interpreter_next (is);
return GNUNET_OK;
}
if ( (hs->results_obtained != hs->total) ||
(hs->failed) ||
(MHD_HTTP_NO_CONTENT != http_status) )
{ {
case 0:
GNUNET_break (0); GNUNET_break (0);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, goto error;
"Expected history of length %u, got %llu;" case MHD_HTTP_OK:
" HTTP status code: %u/%d, failed: %d\n", for (unsigned int i = 0; i<chr->details.success.details_length; i++)
hs->total,
(unsigned long long) hs->results_obtained,
http_status,
(int) ec,
hs->failed ? 1 : 0);
print_expected (hs->h,
hs->total,
UINT_MAX);
TALER_TESTING_interpreter_fail (is);
return GNUNET_SYSERR;
}
TALER_TESTING_interpreter_next (is);
return GNUNET_OK;
}
if (MHD_HTTP_OK != http_status)
{ {
hs->hh = NULL; const struct TALER_BANK_CreditDetails *cd =
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, &chr->details.success.details[i];
"Unwanted response code from /history/incoming: %u\n",
http_status);
TALER_TESTING_interpreter_fail (is);
return GNUNET_SYSERR;
}
/* check current element */ /* check current element */
if (GNUNET_OK != if (GNUNET_OK !=
check_result (hs->h, check_result (hs->h,
hs->total, hs->total,
hs->results_obtained, hs->results_obtained,
details)) cd))
{ {
char *acc;
GNUNET_break (0); GNUNET_break (0);
acc = json_dumps (json, json_dumpf (chr->response,
stderr,
JSON_COMPACT); JSON_COMPACT);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Result %u was `%s'\n",
(unsigned int) hs->results_obtained++,
acc);
if (NULL != acc)
free (acc);
hs->failed = true; hs->failed = true;
hs->hh = NULL; hs->hh = NULL;
TALER_TESTING_interpreter_fail (is); TALER_TESTING_interpreter_fail (is);
return GNUNET_SYSERR; return;
} }
hs->results_obtained++; hs->results_obtained++;
return GNUNET_OK; }
TALER_TESTING_interpreter_next (is);
return;
case MHD_HTTP_NO_CONTENT:
if (0 == hs->total)
{
/* not found is OK for empty history */
TALER_TESTING_interpreter_next (is);
return;
}
GNUNET_break (0);
goto error;
case MHD_HTTP_NOT_FOUND:
if (0 == hs->total)
{
/* not found is OK for empty history */
TALER_TESTING_interpreter_next (is);
return;
}
GNUNET_break (0);
goto error;
default:
hs->hh = NULL;
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Unwanted response code from /history/incoming: %u\n",
chr->http_status);
TALER_TESTING_interpreter_fail (is);
return;
}
error:
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Expected history of length %u, got %llu;"
" HTTP status code: %u/%d, failed: %d\n",
hs->total,
(unsigned long long) hs->results_obtained,
chr->http_status,
(int) chr->ec,
hs->failed ? 1 : 0);
print_expected (hs->h,
hs->total,
UINT_MAX);
TALER_TESTING_interpreter_fail (is);
} }