fix reject test command.

This commit is contained in:
Marcello Stanisci 2018-02-27 22:49:18 +01:00
parent cfab4194f0
commit 663f26a1a2
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
4 changed files with 65 additions and 11 deletions

View File

@ -112,24 +112,29 @@ test_cancelled (struct TALER_TESTING_Interpreter *is,
unsigned int off)
{
const char *rejected_reference;
const struct TALER_TESTING_Command *current_cmd;
current_cmd = &is->commands[off];
TALER_LOG_INFO ("Is `%s' rejected?\n", current_cmd->label);
for (unsigned int i=0;i<is->ip;i++)
{
const struct TALER_TESTING_Command *c = &is->commands[i];
#warning "Errors reported here are NOT fatal"
/* We use the exposure of a reference to a reject
* command as a signal to understand if the current
* command was cancelled; so errors about "reject traits"
* not found are NOT fatal here */
/* Rejected wire transfers have hold a reference to a
* reject command to mark them as rejected. So errors
* about "reject traits" not found are NOT fatal here */
if (GNUNET_OK != TALER_TESTING_get_trait_rejected
(c, 0, &rejected_reference))
continue;
TALER_LOG_INFO ("Command `%s' was rejected by `%s'.\n",
current_cmd->label,
c->label);
if (0 == strcmp (rejected_reference,
TALER_TESTING_interpreter_get_current_label
(is)))
current_cmd->label))
return GNUNET_YES;
}
return GNUNET_NO;

View File

@ -139,6 +139,33 @@ reject_run (void *cls,
}
/**
* @param cls closure
* @param ret[out] result (could be anything)
* @param trait name of the trait
* @param selector more detailed information about which object
* to return in case there were multiple generated
* by the command
* @return #GNUNET_OK on success
*/
static int
reject_traits (void *cls,
void **ret,
const char *trait,
unsigned int index)
{
struct RejectState *rs = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_rejected (0, rs->deposit_reference),
TALER_TESTING_trait_end ()
};
return TALER_TESTING_get_trait (traits,
ret,
trait,
index);
}
/**
* FIXME.
*/
@ -158,6 +185,7 @@ TALER_TESTING_cmd_bank_reject (const char *label,
cmd.run = &reject_run;
cmd.cleanup = &reject_cleanup;
cmd.label = label;
cmd.traits = &reject_traits;
return cmd;

View File

@ -200,17 +200,19 @@ check_bank_transfer_traits (void *cls,
unsigned int index)
{
struct BankCheckState *bcs = cls;
struct TALER_WireTransferIdentifierRawP *wtid_ptr;
GNUNET_assert (GNUNET_OK ==
GNUNET_STRINGS_string_to_data
if (GNUNET_OK != GNUNET_STRINGS_string_to_data
(bcs->subject,
strlen (bcs->subject),
&bcs->wtid,
sizeof (struct TALER_WireTransferIdentifierRawP)));
sizeof (struct TALER_WireTransferIdentifierRawP)))
wtid_ptr = NULL;
wtid_ptr = &bcs->wtid;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_transfer_subject (0, bcs->subject),
TALER_TESTING_make_trait_wtid (0, &bcs->wtid),
TALER_TESTING_make_trait_wtid (0, wtid_ptr),
TALER_TESTING_make_trait_url (0, bcs->exchange_base_url),
TALER_TESTING_trait_end ()
};
@ -297,6 +299,22 @@ check_bank_empty_run (void *cls,
TALER_TESTING_interpreter_next (is);
}
/**
* FIXME.
*/
static int
check_bank_empty_traits (void *cls,
void **ret,
const char *trait,
unsigned int index)
{
/**
* Some commands (notably "bank history") could randomly
* look for traits; this way makes sure we don't segfault.
*/
return GNUNET_SYSERR;
}
/**
* Check bank's balance is zero.
*
@ -312,6 +330,7 @@ TALER_TESTING_cmd_check_bank_empty (const char *label)
cmd.label = label;
cmd.run = &check_bank_empty_run;
cmd.cleanup = &check_bank_empty_cleanup;
cmd.traits = &check_bank_empty_traits;
return cmd;
}
@ -331,6 +350,7 @@ TALER_TESTING_cmd_check_bank_transfer_with_ref
bcs = GNUNET_new (struct BankCheckState);
bcs->deposit_reference = deposit_reference;
cmd.label = label;
cmd.cls = bcs;
cmd.run = &check_bank_transfer_run;

View File

@ -722,6 +722,7 @@ track_transfer_run (void *cls,
TALER_TESTING_interpreter_fail (tts->is);
return;
}
GNUNET_assert (NULL != wtid_ptr);
}
tts->tth = TALER_EXCHANGE_track_transfer (tts->exchange,
wtid_ptr,