work on testing ftbfs

This commit is contained in:
Christian Grothoff 2021-10-27 18:37:42 +02:00
parent 3f630eafc4
commit b449c7353e
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
24 changed files with 223 additions and 702 deletions

View File

@ -383,7 +383,7 @@ TALER_JSON_spec_i18n_str (const char *name,
*/
enum GNUNET_GenericReturnValue
TALER_JSON_contract_hash (const json_t *json,
struct GNUNET_HashCode *hc);
struct TALER_PrivateContractHash *hc);
/**

View File

@ -1871,7 +1871,7 @@ TALER_TESTING_cmd_batch (const char *label,
*
* @return false if not, true if it is a batch command
*/
int
bool
TALER_TESTING_cmd_is_batch (const struct TALER_TESTING_Command *cmd);
/**
@ -2259,10 +2259,10 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
enum GNUNET_GenericReturnValue \
TALER_TESTING_get_trait_ ## name ( \
const struct TALER_TESTING_Command *cmd, \
const type **ret); \
type **ret); \
struct TALER_TESTING_Trait \
TALER_TESTING_make_trait_ ## name ( \
const type * value);
type * value);
/**
@ -2273,8 +2273,9 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
enum GNUNET_GenericReturnValue \
TALER_TESTING_get_trait_ ## name ( \
const struct TALER_TESTING_Command *cmd, \
const type **ret) \
type **ret) \
{ \
if (NULL == cmd->traits) return GNUNET_SYSERR; \
return cmd->traits (cmd->cls, \
(const void **) ret, \
TALER_S (name), \
@ -2301,11 +2302,11 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
TALER_TESTING_get_trait_ ## name ( \
const struct TALER_TESTING_Command *cmd, \
unsigned int index, \
const type **ret); \
type **ret); \
struct TALER_TESTING_Trait \
TALER_TESTING_make_trait_ ## name ( \
unsigned int index, \
const type * value);
type * value);
/**
@ -2317,8 +2318,9 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
TALER_TESTING_get_trait_ ## name ( \
const struct TALER_TESTING_Command *cmd, \
unsigned int index, \
const type **ret) \
type **ret) \
{ \
if (NULL == cmd->traits) return GNUNET_SYSERR; \
return cmd->traits (cmd->cls, \
(const void **) ret, \
TALER_S (name), \
@ -2327,7 +2329,7 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
struct TALER_TESTING_Trait \
TALER_TESTING_make_trait_ ## name ( \
unsigned int index, \
const type * value) \
type * value) \
{ \
struct TALER_TESTING_Trait ret = { \
.index = index, \
@ -2342,45 +2344,47 @@ TALER_TESTING_get_trait (const struct TALER_TESTING_Trait *traits,
* Call #op on all simple traits.
*/
#define TALER_TESTING_SIMPLE_TRAITS(op) \
op (exchange_pub, struct TALER_ExchangePublicKeyP) \
op (bank_row, uint64_t) \
op (reserve_priv, struct TALER_ReservePrivateKeyP) \
op (reserve_pub, struct TALER_ReservePublicKeyP) \
op (exchange_sig, struct TALER_ExchangeSignatureP) \
op (exchange_pub, struct TALER_ExchangePublicKeyP) \
op (merchant_priv, struct TALER_MerchantPrivateKeyP) \
op (merchant_pub, struct TALER_MerchantPublicKeyP) \
op (wtid, struct TALER_WireTransferIdentifierRawP) \
op (contract_terms, json_t) \
op (wire_details, json_t) \
op (exchange_keys, json_t) \
op (reserve_history, struct TALER_EXCHANGE_ReserveHistory) \
op (exchange_url, char *) \
op (exchange_bank_account_url, char *) \
op (taler_uri, char *) \
op (payto_uri, char *) \
op (credit_payto_uri, char *) \
op (debit_payto_uri, char *) \
op (order_id, char *) \
op (amount, struct TALER_Amount) \
op (cmd, struct TALER_TESTING_Command) \
op (uuid, struct GNUNET_Uuid) \
op (claim_token, struct TALER_ClaimTokenP) \
op (absolute_time, struct GNUNET_TIME_Absolute) \
op (relative_time, struct GNUNET_TIME_Relative) \
op (bank_row, const uint64_t) \
op (reserve_priv, const struct TALER_ReservePrivateKeyP) \
op (reserve_pub, const struct TALER_ReservePublicKeyP) \
op (merchant_priv, const struct TALER_MerchantPrivateKeyP) \
op (merchant_pub, const struct TALER_MerchantPublicKeyP) \
op (wtid, const struct TALER_WireTransferIdentifierRawP) \
op (contract_terms, const json_t) \
op (wire_details, const json_t) \
op (exchange_keys, const json_t) \
op (reserve_history, const struct TALER_EXCHANGE_ReserveHistory) \
op (exchange_url, const char *) \
op (exchange_bank_account_url, const char *) \
op (taler_uri, const char *) \
op (payto_uri, const char *) \
op (row, const uint64_t) \
op (credit_payto_uri, const char *) \
op (debit_payto_uri, const char *) \
op (order_id, const char *) \
op (amount, const struct TALER_Amount) \
op (deposit_amount, const struct TALER_Amount) \
op (deposit_fee_amount, const struct TALER_Amount) \
op (batch_cmds, struct TALER_TESTING_Command *) \
op (uuid, const struct GNUNET_Uuid) \
op (claim_token, const struct TALER_ClaimTokenP) \
op (relative_time, const struct GNUNET_TIME_Relative) \
op (process, struct GNUNET_OS_Process *)
/**
* Call #op on all indexed traits.
*/
#define TALER_TESTING_INDEXED_TRAITS(op) \
op (denom_pub, struct TALER_EXCHANGE_DenomPublicKey) \
op (denom_sig, struct TALER_EXCHANGE_DenominationKeySignature) \
op (coin_priv, struct TALER_CoinSpendPrivateKeyP) \
op (coin_pub, struct TALER_CoinSpendPublicKeyP) \
op (fresh_coin, struct TALER_TESTING_FreshCoinData) \
op (blinding_key, struct TALER_DenominationBlindingKeyP)
#define TALER_TESTING_INDEXED_TRAITS(op) \
op (denom_pub, const struct TALER_EXCHANGE_DenomPublicKey) \
op (denom_sig, const struct TALER_DenominationSignature) \
op (coin_priv, const struct TALER_CoinSpendPrivateKeyP) \
op (coin_pub, const struct TALER_CoinSpendPublicKeyP) \
op (fresh_coin, const struct TALER_TESTING_FreshCoinData) \
op (absolute_time, const struct GNUNET_TIME_Absolute) \
op (exchange_pub, const struct TALER_ExchangePublicKeyP) \
op (exchange_sig, const struct TALER_ExchangeSignatureP) \
op (blinding_key, const struct TALER_DenominationBlindingKeyP)
TALER_TESTING_SIMPLE_TRAITS (TALER_TESTING_MAKE_DECL_SIMPLE_TRAIT)

View File

@ -325,7 +325,7 @@ forget (const json_t *in,
enum GNUNET_GenericReturnValue
TALER_JSON_contract_hash (const json_t *json,
struct GNUNET_HashCode *hc)
struct TALER_PrivateContractHash *hc)
{
enum GNUNET_GenericReturnValue ret;
json_t *cjson;
@ -339,7 +339,7 @@ TALER_JSON_contract_hash (const json_t *json,
return ret;
ret = dump_and_hash (cjson,
NULL,
hc);
&hc->hash);
json_decref (cjson);
return ret;
}

View File

@ -108,7 +108,7 @@ auditor_add_run (void *cls,
{
struct AuditorAddDenomSigState *ds = cls;
struct TALER_AuditorSignatureP auditor_sig;
struct GNUNET_HashCode h_denom_pub;
struct TALER_DenominationHash h_denom_pub;
const struct TALER_EXCHANGE_DenomPublicKey *dk;
(void) cmd;
@ -202,26 +202,6 @@ auditor_add_cleanup (void *cls,
}
/**
* Offer internal data from a "auditor_add" CMD, to other commands.
*
* @param cls closure.
* @param[out] ret result.
* @param trait name of the trait.
* @param index index number of the object to offer.
*
* @return #GNUNET_OK on success.
*/
static int
auditor_add_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
return GNUNET_NO;
}
struct TALER_TESTING_Command
TALER_TESTING_cmd_auditor_add_denom_sig (const char *label,
unsigned int expected_http_status,
@ -239,8 +219,7 @@ TALER_TESTING_cmd_auditor_add_denom_sig (const char *label,
.cls = ds,
.label = label,
.run = &auditor_add_run,
.cleanup = &auditor_add_cleanup,
.traits = &auditor_add_traits
.cleanup = &auditor_add_cleanup
};
return cmd;

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2018 Taler Systems SA
Copyright (C) 2018, 2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
@ -201,8 +201,8 @@ deposit_confirmation_run (void *cls,
{
struct DepositConfirmationState *dcs = cls;
const struct TALER_TESTING_Command *deposit_cmd;
struct GNUNET_HashCode h_wire;
struct GNUNET_HashCode h_contract_terms;
struct TALER_MerchantWireHash h_wire;
struct TALER_PrivateContractHash h_contract_terms;
const struct GNUNET_TIME_Absolute *exchange_timestamp = NULL;
struct GNUNET_TIME_Absolute timestamp;
struct GNUNET_TIME_Absolute refund_deadline;
@ -251,7 +251,6 @@ deposit_confirmation_run (void *cls,
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_contract_terms (deposit_cmd,
dcs->coin_index,
&contract_terms));
/* Very unlikely to fail */
GNUNET_assert (NULL != contract_terms);
@ -260,7 +259,6 @@ deposit_confirmation_run (void *cls,
&h_contract_terms));
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_wire_details (deposit_cmd,
dcs->coin_index,
&wire_details));
GNUNET_assert (GNUNET_OK ==
TALER_JSON_merchant_wire_signature_hash (wire_details,
@ -273,7 +271,6 @@ deposit_confirmation_run (void *cls,
&coin_pub.eddsa_pub);
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_merchant_priv (deposit_cmd,
dcs->coin_index,
&merchant_priv));
GNUNET_CRYPTO_eddsa_key_get_public (&merchant_priv->eddsa_priv,
&merchant_pub.eddsa_pub);
@ -371,47 +368,6 @@ deposit_confirmation_cleanup (void *cls,
}
/**
* Offer internal data to other commands.
*
* @param cls closure.
* @param[out] ret set to the wanted data.
* @param trait name of the trait.
* @param index index number of the traits to be returned.
*
* @return #GNUNET_OK on success
*/
static int
deposit_confirmation_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
(void) cls;
(void) ret;
(void) trait;
(void) index;
/* Must define this function because some callbacks
* look for certain traits on _all_ the commands. */
return GNUNET_SYSERR;
}
/**
* Create a "deposit-confirmation" command.
*
* @param label command label.
* @param auditor auditor connection.
* @param deposit_reference reference to any operation that can
* provide a coin.
* @param coin_index if @a deposit_reference offers an array of
* coins, this parameter selects which one in that array.
* This value is currently ignored, as only one-coin
* deposits are implemented.
* @param amount_without_fee deposited amount without the fee
* @param expected_response_code expected HTTP response code.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_deposit_confirmation (const char *label,
struct TALER_AUDITOR_Handle *auditor,
@ -434,8 +390,7 @@ TALER_TESTING_cmd_deposit_confirmation (const char *label,
.cls = dcs,
.label = label,
.run = &deposit_confirmation_run,
.cleanup = &deposit_confirmation_cleanup,
.traits = &deposit_confirmation_traits
.cleanup = &deposit_confirmation_cleanup
};
return cmd;
@ -443,13 +398,6 @@ TALER_TESTING_cmd_deposit_confirmation (const char *label,
}
/**
* Modify a deposit confirmation command to enable retries when we get
* transient errors from the auditor.
*
* @param cmd a deposit confirmation command
* @return the command with retries enabled
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_deposit_confirmation_with_retry (
struct TALER_TESTING_Command cmd)

View File

@ -115,7 +115,7 @@ auditor_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
auditor_traits (void *cls,
const void **ret,
const char *trait,
@ -123,7 +123,7 @@ auditor_traits (void *cls,
{
struct AuditorState *ks = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0, &ks->auditor_proc),
TALER_TESTING_make_trait_process (&ks->auditor_proc),
TALER_TESTING_trait_end ()
};
@ -134,13 +134,6 @@ auditor_traits (void *cls,
}
/**
* Make the "exec-auditor" CMD.
*
* @param label command label.
* @param config_filename configuration filename.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_auditor (const char *label,
const char *config_filename)

View File

@ -124,7 +124,7 @@ auditor_dbinit_traits (void *cls,
{
struct AuditorDbinitState *ks = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0, &ks->auditor_dbinit_proc),
TALER_TESTING_make_trait_process (&ks->auditor_dbinit_proc),
TALER_TESTING_trait_end ()
};
@ -135,13 +135,6 @@ auditor_dbinit_traits (void *cls,
}
/**
* Make the "exec-auditor-dbinit" CMD.
*
* @param label command label.
* @param config_filename configuration filename.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_auditor_dbinit (const char *label,
const char *config_filename)

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2018-2020 Taler Systems SA
Copyright (C) 2018-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
@ -326,11 +326,9 @@ admin_add_incoming_run (void *cls,
}
if (GNUNET_OK !=
TALER_TESTING_get_trait_reserve_priv (ref,
0,
&reserve_priv))
{
if (GNUNET_OK != TALER_TESTING_get_trait_reserve_pub (ref,
0,
&reserve_pub))
{
GNUNET_break (0);
@ -420,13 +418,14 @@ admin_add_incoming_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
admin_add_incoming_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
struct AdminAddIncomingState *fts = cls;
static const char *void_uri = "payto://void/the-exchange";
if (MHD_HTTP_OK !=
fts->expected_http_status)
@ -435,21 +434,16 @@ admin_add_incoming_traits (void *cls,
{
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_bank_row (&fts->serial_id),
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
fts->payto_debit_account),
TALER_TESTING_make_trait_debit_payto_uri (&fts->payto_debit_account),
/* Used as a marker, content does not matter */
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
"payto://void/the-exchange"),
TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL,
fts->exchange_credit_url),
TALER_TESTING_make_trait_amount_obj (0, &fts->amount),
TALER_TESTING_make_trait_credit_payto_uri (&void_uri),
TALER_TESTING_make_trait_exchange_bank_account_url (
&fts->exchange_credit_url),
TALER_TESTING_make_trait_amount (&fts->amount),
TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp),
TALER_TESTING_make_trait_reserve_priv (0,
&fts->reserve_priv),
TALER_TESTING_make_trait_reserve_pub (0,
&fts->reserve_pub),
TALER_TESTING_make_trait_reserve_history (0,
&fts->reserve_history),
TALER_TESTING_make_trait_reserve_priv (&fts->reserve_priv),
TALER_TESTING_make_trait_reserve_pub (&fts->reserve_pub),
TALER_TESTING_make_trait_reserve_history (&fts->reserve_history),
TALER_TESTING_trait_end ()
};
@ -462,19 +456,15 @@ admin_add_incoming_traits (void *cls,
{
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_bank_row (&fts->serial_id),
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
fts->payto_debit_account),
TALER_TESTING_make_trait_debit_payto_uri (&fts->payto_debit_account),
/* Used as a marker, content does not matter */
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
"payto://void/the-exchange"),
TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL,
fts->exchange_credit_url),
TALER_TESTING_make_trait_amount_obj (0, &fts->amount),
TALER_TESTING_make_trait_credit_payto_uri (&void_uri),
TALER_TESTING_make_trait_exchange_bank_account_url (
&fts->exchange_credit_url),
TALER_TESTING_make_trait_amount (&fts->amount),
TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp),
TALER_TESTING_make_trait_reserve_pub (0,
&fts->reserve_pub),
TALER_TESTING_make_trait_reserve_history (0,
&fts->reserve_history),
TALER_TESTING_make_trait_reserve_pub (&fts->reserve_pub),
TALER_TESTING_make_trait_reserve_history (&fts->reserve_history),
TALER_TESTING_trait_end ()
};
@ -543,11 +533,11 @@ make_command (const char *label,
struct TALER_TESTING_Command
TALER_TESTING_cmd_admin_add_incoming (const char *label,
const char *amount,
const struct
TALER_BANK_AuthenticationData *auth,
const char *payto_debit_account)
TALER_TESTING_cmd_admin_add_incoming (
const char *label,
const char *amount,
const struct TALER_BANK_AuthenticationData *auth,
const char *payto_debit_account)
{
return make_command (label,
make_fts (amount,

View File

@ -95,7 +95,6 @@ check_bank_admin_transfer_run (void *cls,
}
if (GNUNET_OK !=
TALER_TESTING_get_trait_reserve_pub (cmd_ref,
0,
&reserve_pub))
{
GNUNET_break (0);
@ -159,33 +158,6 @@ check_bank_admin_transfer_cleanup (void *cls,
}
/**
* Offer internal data from a "bank admin check" CMD state.
*
* @param cls closure.
* @param[out] ret result.
* @param trait name of the trait.
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
check_bank_admin_transfer_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_trait_end ()
};
(void) cls;
return TALER_TESTING_get_trait (traits,
ret,
trait,
index);
}
/**
* Make a "bank check" CMD. It checks whether a particular wire transfer to
* the exchange (credit) has been made or not.
@ -217,8 +189,7 @@ TALER_TESTING_cmd_check_bank_admin_transfer
.label = label,
.cls = bcs,
.run = &check_bank_admin_transfer_run,
.cleanup = &check_bank_admin_transfer_cleanup,
.traits = &check_bank_admin_transfer_traits
.cleanup = &check_bank_admin_transfer_cleanup
};
return cmd;

View File

@ -74,6 +74,7 @@ struct BankCheckState
const char *deposit_reference;
};
/**
* Run the command.
*
@ -90,17 +91,17 @@ check_bank_transfer_run (void *cls,
struct TALER_Amount amount;
char *debit_account;
char *credit_account;
const char *exchange_base_url;
const char *debit_payto;
const char *credit_payto;
const char **exchange_base_url;
const char **debit_payto;
const char **credit_payto;
(void) cmd;
if (NULL == bcs->deposit_reference)
{
TALER_LOG_INFO ("Deposit reference NOT given\n");
debit_payto = bcs->debit_payto;
credit_payto = bcs->credit_payto;
exchange_base_url = bcs->exchange_base_url;
debit_payto = &bcs->debit_payto;
credit_payto = &bcs->credit_payto;
exchange_base_url = &bcs->exchange_base_url;
if (GNUNET_OK !=
TALER_string_to_amount (bcs->amount,
@ -130,37 +131,33 @@ check_bank_transfer_run (void *cls,
if (NULL == deposit_cmd)
TALER_TESTING_FAIL (is);
if ( (GNUNET_OK !=
TALER_TESTING_get_trait_amount_obj (deposit_cmd,
0,
&amount_ptr)) ||
TALER_TESTING_get_trait_amount (deposit_cmd,
&amount_ptr)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (deposit_cmd,
TALER_TESTING_PT_DEBIT,
&debit_payto)) ||
TALER_TESTING_get_trait_debit_payto_uri (deposit_cmd,
&debit_payto)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (deposit_cmd,
TALER_TESTING_PT_CREDIT,
&credit_payto)) ||
TALER_TESTING_get_trait_credit_payto_uri (deposit_cmd,
&credit_payto)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_url (deposit_cmd,
TALER_TESTING_UT_EXCHANGE_BASE_URL,
&exchange_base_url)) )
TALER_TESTING_get_trait_exchange_url (deposit_cmd,
&exchange_base_url)) )
TALER_TESTING_FAIL (is);
amount = *amount_ptr;
}
debit_account = TALER_xtalerbank_account_from_payto (debit_payto);
credit_account = TALER_xtalerbank_account_from_payto (credit_payto);
debit_account = TALER_xtalerbank_account_from_payto (*debit_payto);
credit_account = TALER_xtalerbank_account_from_payto (*credit_payto);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"converted debit_payto (%s) to debit_account (%s)\n",
debit_payto,
*debit_payto,
debit_account);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"converted credit_payto (%s) to credit_account (%s)\n",
credit_payto,
*credit_payto,
credit_account);
if (GNUNET_OK !=
@ -168,7 +165,7 @@ check_bank_transfer_run (void *cls,
&amount,
debit_account,
credit_account,
exchange_base_url,
*exchange_base_url,
&bcs->wtid))
{
GNUNET_break (0);
@ -209,7 +206,7 @@ check_bank_transfer_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
check_bank_transfer_traits (void *cls,
const void **ret,
const char *trait,
@ -218,10 +215,9 @@ check_bank_transfer_traits (void *cls,
struct BankCheckState *bcs = cls;
struct TALER_WireTransferIdentifierRawP *wtid_ptr = &bcs->wtid;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_wtid (0,
wtid_ptr),
TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BASE_URL,
bcs->exchange_base_url),
TALER_TESTING_make_trait_wtid (wtid_ptr),
TALER_TESTING_make_trait_exchange_url (
&bcs->exchange_base_url),
TALER_TESTING_trait_end ()
};

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2018-2020 Taler Systems SA
Copyright (C) 2018-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@ -93,10 +93,10 @@ struct HistoryState
uint64_t results_obtained;
/**
* Set to GNUNET_YES if the callback detects something
* Set to true if the callback detects something
* unexpected.
*/
int failed;
bool failed;
/**
* Expected history.
@ -111,32 +111,6 @@ struct HistoryState
};
/**
* Offer internal data to other commands.
*
* @param cls closure.
* @param[out] ret set to the wanted data.
* @param trait name of the trait.
* @param index index number of the traits to be returned.
*
* @return #GNUNET_OK on success
*/
static int
history_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
(void) cls;
(void) ret;
(void) trait;
(void) index;
/* Must define this function because some callbacks
* look for certain traits on _all_ the commands. */
return GNUNET_SYSERR;
}
/**
* Log which history we expected. Called when an error occurs.
*
@ -210,9 +184,8 @@ build_history (struct TALER_TESTING_Interpreter *is,
hs->start_row_reference);
GNUNET_assert (NULL != add_incoming_cmd);
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_uint64 (add_incoming_cmd,
0,
&row_id_start));
TALER_TESTING_get_trait_row (add_incoming_cmd,
&row_id_start));
}
GNUNET_assert (0 != hs->num_results);
@ -249,11 +222,11 @@ build_history (struct TALER_TESTING_Interpreter *is,
{
const struct TALER_TESTING_Command *cmd = &is->commands[off];
const uint64_t *row_id;
const char *credit_account;
const char *debit_account;
const char **credit_account;
const char **debit_account;
const struct TALER_Amount *amount;
const struct TALER_ReservePublicKeyP *reserve_pub;
const char *exchange_credit_url;
const char **exchange_credit_url;
/* The following command allows us to skip over those CMDs
* that do not offer a "row_id" trait. Such skipped CMDs are
@ -262,25 +235,21 @@ build_history (struct TALER_TESTING_Interpreter *is,
TALER_TESTING_get_trait_bank_row (cmd,
&row_id)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (cmd,
TALER_TESTING_PT_CREDIT,
&credit_account)) ||
TALER_TESTING_get_trait_credit_payto_uri (cmd,
&credit_account)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (cmd,
TALER_TESTING_PT_DEBIT,
&debit_account)) ||
TALER_TESTING_get_trait_debit_payto_uri (cmd,
&debit_account)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_amount_obj (cmd,
0,
&amount)) ||
TALER_TESTING_get_trait_amount (cmd,
&amount)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_reserve_pub (cmd,
0,
&reserve_pub)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_url (cmd,
TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL,
&exchange_credit_url)) )
TALER_TESTING_get_trait_exchange_bank_account_url (
cmd,
&exchange_credit_url)) )
continue; /* not an interesting event */
/* Seek "/history/incoming" starting row. */
if ( (NULL != row_id_start) &&
@ -295,7 +264,7 @@ build_history (struct TALER_TESTING_Interpreter *is,
if (GNUNET_NO == ok)
continue; /* skip until we find the marker */
if (0 != strcasecmp (hs->account_url,
exchange_credit_url))
*exchange_credit_url))
continue; /* account mismatch */
if (total >= GNUNET_MAX (hs->num_results,
-hs->num_results) )
@ -304,20 +273,20 @@ build_history (struct TALER_TESTING_Interpreter *is,
break;
}
TALER_LOG_INFO ("Found history: %s->%s for account %s\n",
debit_account,
credit_account,
*debit_account,
*credit_account,
hs->account_url);
/* found matching record, make sure we have room */
if (pos == total)
GNUNET_array_grow (h,
total,
pos * 2);
h[pos].url = GNUNET_strdup (debit_account);
h[pos].url = GNUNET_strdup (*debit_account);
h[pos].details.debit_account_uri = h[pos].url;
h[pos].details.amount = *amount;
h[pos].row_id = *row_id;
h[pos].details.reserve_pub = *reserve_pub;
h[pos].details.credit_account_uri = exchange_credit_url;
h[pos].details.credit_account_uri = *exchange_credit_url;
pos++;
}
GNUNET_assert (GNUNET_YES == ok);
@ -405,7 +374,7 @@ check_result (struct History *h,
* reply was not in JSON.
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
*/
static int
static enum GNUNET_GenericReturnValue
history_cb (void *cls,
unsigned int http_status,
enum TALER_ErrorCode ec,
@ -421,7 +390,7 @@ history_cb (void *cls,
{
hs->hh = NULL;
if ( (hs->results_obtained != hs->total) ||
(GNUNET_YES == hs->failed) ||
(hs->failed) ||
(MHD_HTTP_NO_CONTENT != http_status) )
{
GNUNET_break (0);
@ -432,7 +401,7 @@ history_cb (void *cls,
(unsigned long long) hs->results_obtained,
http_status,
(int) ec,
hs->failed);
hs->failed ? 1 : 0);
print_expected (hs->h,
hs->total,
UINT_MAX);
@ -469,7 +438,7 @@ history_cb (void *cls,
acc);
if (NULL != acc)
free (acc);
hs->failed = GNUNET_YES;
hs->failed = true;
return GNUNET_SYSERR;
}
hs->results_obtained++;
@ -499,16 +468,15 @@ history_run (void *cls,
{
const struct TALER_TESTING_Command *history_cmd;
history_cmd = TALER_TESTING_interpreter_lookup_command
(is, hs->start_row_reference);
history_cmd = TALER_TESTING_interpreter_lookup_command (
is,
hs->start_row_reference);
if (NULL == history_cmd)
TALER_TESTING_FAIL (is);
if (GNUNET_OK !=
TALER_TESTING_get_trait_uint64 (history_cmd,
0,
&row_ptr))
TALER_TESTING_get_trait_row (history_cmd,
&row_ptr))
TALER_TESTING_FAIL (is);
else
row_id = *row_ptr;
@ -574,8 +542,7 @@ TALER_TESTING_cmd_bank_credits (
.label = label,
.cls = hs,
.run = &history_run,
.cleanup = &history_cleanup,
.traits = &history_traits
.cleanup = &history_cleanup
};
return cmd;

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2018-2020 Taler Systems SA
Copyright (C) 2018-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@ -115,32 +115,6 @@ struct HistoryState
};
/**
* Offer internal data to other commands.
*
* @param cls closure.
* @param[out] ret set to the wanted data.
* @param trait name of the trait.
* @param index index number of the traits to be returned.
*
* @return #GNUNET_OK on success
*/
static int
history_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
(void) cls;
(void) ret;
(void) trait;
(void) index;
/* Must define this function because some callbacks
* look for certain traits on _all_ the commands. */
return GNUNET_SYSERR;
}
/**
* Log which history we expected. Called when an error occurs.
*
@ -207,13 +181,13 @@ build_history (struct TALER_TESTING_Interpreter *is,
("`%s': start row given via reference `%s'\n",
TALER_TESTING_interpreter_get_current_label (is),
hs->start_row_reference);
add_incoming_cmd = TALER_TESTING_interpreter_lookup_command
(is, hs->start_row_reference);
add_incoming_cmd = TALER_TESTING_interpreter_lookup_command (
is,
hs->start_row_reference);
GNUNET_assert (NULL != add_incoming_cmd);
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_uint64 (add_incoming_cmd,
0,
&row_id_start));
TALER_TESTING_get_trait_row (add_incoming_cmd,
&row_id_start));
}
GNUNET_assert (0 != hs->num_results);
@ -255,11 +229,11 @@ build_history (struct TALER_TESTING_Interpreter *is,
{
const struct TALER_TESTING_Command *cmd = &is->commands[off];
const uint64_t *row_id;
const char *debit_account;
const char *credit_account;
const char **debit_account;
const char **credit_account;
const struct TALER_Amount *amount;
const struct TALER_WireTransferIdentifierRawP *wtid;
const char *exchange_base_url;
const char **exchange_base_url;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Checking if command %s is relevant for debit history\n",
@ -268,25 +242,20 @@ build_history (struct TALER_TESTING_Interpreter *is,
TALER_TESTING_get_trait_bank_row (cmd,
&row_id)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (cmd,
TALER_TESTING_PT_DEBIT,
&debit_account)) ||
TALER_TESTING_get_trait_debit_payto_uri (cmd,
&debit_account)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_payto (cmd,
TALER_TESTING_PT_CREDIT,
&credit_account)) ||
TALER_TESTING_get_trait_credit_payto_uri (cmd,
&credit_account)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_amount_obj (cmd,
0,
&amount)) ||
TALER_TESTING_get_trait_amount (cmd,
&amount)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_wtid (cmd,
0,
&wtid)) ||
(GNUNET_OK !=
TALER_TESTING_get_trait_url (cmd,
TALER_TESTING_UT_EXCHANGE_BASE_URL,
&exchange_base_url)) )
TALER_TESTING_get_trait_exchange_url (cmd,
&exchange_base_url)) )
continue; /* not an event we care about */
/* Seek "/history/outgoing" starting row. */
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@ -310,22 +279,22 @@ build_history (struct TALER_TESTING_Interpreter *is,
break;
}
TALER_LOG_INFO ("Found history: %s->%s for account %s\n",
debit_account,
credit_account,
*debit_account,
*credit_account,
hs->account_url);
/* found matching record, make sure we have room */
if (pos == total)
GNUNET_array_grow (h,
total,
pos * 2);
h[pos].c_url = GNUNET_strdup (credit_account);
h[pos].d_url = GNUNET_strdup (debit_account);
h[pos].c_url = GNUNET_strdup (*credit_account);
h[pos].d_url = GNUNET_strdup (*debit_account);
h[pos].details.credit_account_uri = h[pos].c_url;
h[pos].details.debit_account_uri = h[pos].d_url;
h[pos].details.amount = *amount;
h[pos].row_id = *row_id;
h[pos].details.wtid = *wtid;
h[pos].details.exchange_base_url = exchange_base_url;
h[pos].details.exchange_base_url = *exchange_base_url;
pos++;
}
GNUNET_assert (GNUNET_YES == ok);
@ -350,7 +319,7 @@ build_history (struct TALER_TESTING_Interpreter *is,
* @param details the expected transaction details.
* @return #GNUNET_OK if the transaction is what we expect.
*/
static int
static enum GNUNET_GenericReturnValue
check_result (struct History *h,
uint64_t total,
unsigned int off,
@ -407,7 +376,7 @@ check_result (struct History *h,
* reply was not in JSON.
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
*/
static int
static enum GNUNET_GenericReturnValue
history_cb (void *cls,
unsigned int http_status,
enum TALER_ErrorCode ec,
@ -508,9 +477,8 @@ history_run (void *cls,
if (NULL == history_cmd)
TALER_TESTING_FAIL (is);
if (GNUNET_OK !=
TALER_TESTING_get_trait_uint64 (history_cmd,
0,
&row_ptr))
TALER_TESTING_get_trait_row (history_cmd,
&row_ptr))
TALER_TESTING_FAIL (is);
else
row_id = *row_ptr;
@ -558,17 +526,6 @@ history_cleanup (void *cls,
}
/**
* Make a "history" CMD.
*
* @param label command label.
* @param auth login data to use
* @param start_row_reference reference to a command that can
* offer a row identifier, to be used as the starting row
* to accept in the result.
* @param num_results how many rows we want in the result.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_bank_debits (const char *label,
const struct TALER_BANK_AuthenticationData *auth,
@ -588,8 +545,7 @@ TALER_TESTING_cmd_bank_debits (const char *label,
.label = label,
.cls = hs,
.run = &history_run,
.cleanup = &history_cleanup,
.traits = &history_traits
.cleanup = &history_cleanup
};
return cmd;

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2018-2020 Taler Systems SA
Copyright (C) 2018-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
@ -310,7 +310,7 @@ transfer_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
transfer_traits (void *cls,
const void **ret,
const char *trait,
@ -318,17 +318,16 @@ transfer_traits (void *cls,
{
struct TransferState *fts = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BASE_URL,
fts->exchange_base_url),
TALER_TESTING_make_trait_exchange_url (
(const char **) &fts->exchange_base_url),
TALER_TESTING_make_trait_bank_row (&fts->serial_id),
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
fts->payto_credit_account),
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
fts->payto_debit_account),
TALER_TESTING_make_trait_amount_obj (0, &fts->amount),
TALER_TESTING_make_trait_credit_payto_uri (
(const char **) &fts->payto_credit_account),
TALER_TESTING_make_trait_debit_payto_uri (
(const char **) &fts->payto_debit_account),
TALER_TESTING_make_trait_amount (&fts->amount),
TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp),
TALER_TESTING_make_trait_wtid (0,
&fts->wtid),
TALER_TESTING_make_trait_wtid (&fts->wtid),
TALER_TESTING_trait_end ()
};
@ -339,18 +338,6 @@ transfer_traits (void *cls,
}
/**
* Create transfer command.
*
* @param label command label.
* @param amount amount to transfer.
* @param auth authentication data to use
* @param payto_debit_account which account sends money.
* @param payto_credit_account which account receives money.
* @param wtid wire transfer identifier to use
* @param exchange_base_url exchange URL to use
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_transfer (const char *label,
const char *amount,
@ -394,13 +381,6 @@ TALER_TESTING_cmd_transfer (const char *label,
}
/**
* Modify a transfer command to enable retries when the reserve is not yet
* full or we get other transient errors from the bank.
*
* @param cmd a fakebank transfer command
* @return the command with retries enabled
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_transfer_retry (struct TALER_TESTING_Command cmd)
{

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2014-2018 Taler Systems SA
Copyright (C) 2014-2021 Taler Systems SA
TALER is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@ -113,22 +113,15 @@ batch_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
batch_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
#define CURRENT_CMD_INDEX 0
#define BATCH_INDEX 1
struct BatchState *bs = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_cmd
(CURRENT_CMD_INDEX, &bs->batch[bs->batch_ip]),
TALER_TESTING_make_trait_cmd
(BATCH_INDEX, bs->batch),
TALER_TESTING_make_trait_batch_cmds (&bs->batch),
TALER_TESTING_trait_end ()
};
@ -140,18 +133,6 @@ batch_traits (void *cls,
}
/**
* Create a "batch" command. Such command takes a
* end_CMD-terminated array of CMDs and executed them.
* Once it hits the end CMD, it passes the control
* to the next top-level CMD, regardless of it being
* another batch or ordinary CMD.
*
* @param label the command label.
* @param batch array of CMDs to execute.
*
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_batch (const char *label,
struct TALER_TESTING_Command *batch)
@ -185,11 +166,6 @@ TALER_TESTING_cmd_batch (const char *label,
}
/**
* Advance internal pointer to next command.
*
* @param is interpreter state.
*/
void
TALER_TESTING_cmd_batch_next (struct TALER_TESTING_Interpreter *is)
{
@ -206,23 +182,13 @@ TALER_TESTING_cmd_batch_next (struct TALER_TESTING_Interpreter *is)
}
/**
* Test if this command is a batch command.
*
* @return false if not, true if it is a batch command
*/
int
bool
TALER_TESTING_cmd_is_batch (const struct TALER_TESTING_Command *cmd)
{
return cmd->run == &batch_run;
}
/**
* Obtain what command the batch is at.
*
* @return cmd current batch command
*/
struct TALER_TESTING_Command *
TALER_TESTING_cmd_batch_get_current (const struct TALER_TESTING_Command *cmd)
{
@ -233,12 +199,6 @@ TALER_TESTING_cmd_batch_get_current (const struct TALER_TESTING_Command *cmd)
}
/**
* Set what command the batch should be at.
*
* @param cmd current batch command
* @param new_ip where to move the IP
*/
void
TALER_TESTING_cmd_batch_set_current (const struct TALER_TESTING_Command *cmd,
unsigned int new_ip)

View File

@ -287,7 +287,7 @@ deposit_run (void *cls,
struct TALER_CoinSpendSignatureP coin_sig;
struct GNUNET_TIME_Absolute wire_deadline;
struct TALER_MerchantPublicKeyP merchant_pub;
struct GNUNET_HashCode h_contract_terms;
struct TALER_PrivateContractHash h_contract_terms;
enum TALER_ErrorCode ec;
(void) cmd;
@ -333,7 +333,6 @@ deposit_run (void *cls,
}
if ( (GNUNET_OK !=
TALER_TESTING_get_trait_merchant_priv (cmd,
0,
&merchant_priv)) )
{
GNUNET_break (0);
@ -393,7 +392,7 @@ deposit_run (void *cls,
&merchant_pub.eddsa_pub);
(void) GNUNET_TIME_round_abs (&wire_deadline);
{
struct GNUNET_HashCode h_wire;
struct TALER_MerchantWireHash h_wire;
GNUNET_assert (GNUNET_OK ==
TALER_JSON_merchant_wire_signature_hash (ds->wire_details,
@ -402,6 +401,7 @@ deposit_run (void *cls,
&denom_pub->fee_deposit,
&h_wire,
&h_contract_terms,
NULL, /* FIXME: extension hash! */
&denom_pub->h_key,
coin_priv,
ds->wallet_timestamp,
@ -414,6 +414,7 @@ deposit_run (void *cls,
wire_deadline,
ds->wire_details,
&h_contract_terms,
NULL, /* FIXME: extension object */
&coin_pub,
denom_pub_sig,
&denom_pub->key,
@ -476,10 +477,9 @@ deposit_cleanup (void *cls,
* @param[out] ret result.
* @param trait name of the trait.
* @param index index number of the object to offer.
*
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
deposit_traits (void *cls,
const void **ret,
const char *trait,
@ -519,25 +519,16 @@ deposit_traits (void *cls,
struct TALER_TESTING_Trait traits[] = {
/* First two traits are only available if
ds->traits is #GNUNET_YES */
TALER_TESTING_make_trait_exchange_pub (0,
&ds->exchange_pub),
TALER_TESTING_make_trait_exchange_sig (0,
&ds->exchange_sig),
TALER_TESTING_make_trait_exchange_pub (0, &ds->exchange_pub),
TALER_TESTING_make_trait_exchange_sig (0, &ds->exchange_sig),
/* These traits are always available */
TALER_TESTING_make_trait_coin_priv (0,
coin_spent_priv),
TALER_TESTING_make_trait_wire_details (0,
ds->wire_details),
TALER_TESTING_make_trait_contract_terms (0,
ds->contract_terms),
TALER_TESTING_make_trait_merchant_priv (0,
&ds->merchant_priv),
TALER_TESTING_make_trait_amount_obj (
TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_VALUE,
&ds->amount),
TALER_TESTING_make_trait_amount_obj (
TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_FEE,
&ds->deposit_fee),
TALER_TESTING_make_trait_wire_details (ds->wire_details),
TALER_TESTING_make_trait_contract_terms (ds->contract_terms),
TALER_TESTING_make_trait_merchant_priv (&ds->merchant_priv),
TALER_TESTING_make_trait_deposit_amount (&ds->amount),
TALER_TESTING_make_trait_deposit_fee_amount (&ds->deposit_fee),
TALER_TESTING_make_trait_absolute_time (0,
&ds->exchange_timestamp),
TALER_TESTING_trait_end ()

View File

@ -128,7 +128,6 @@ deposit_wtid_cb (void *cls,
if (GNUNET_OK !=
TALER_TESTING_get_trait_wtid (bank_transfer_cmd,
0,
&wtid_want))
{
GNUNET_break (0);
@ -178,8 +177,8 @@ track_transaction_run (void *cls,
struct TALER_CoinSpendPublicKeyP coin_pub;
const json_t *contract_terms;
const json_t *wire_details;
struct GNUNET_HashCode h_wire_details;
struct GNUNET_HashCode h_contract_terms;
struct TALER_MerchantWireHash h_wire_details;
struct TALER_PrivateContractHash h_contract_terms;
const struct TALER_MerchantPrivateKeyP *merchant_priv;
(void) cmd;
@ -210,7 +209,6 @@ track_transaction_run (void *cls,
/* Get the strings.. */
if (GNUNET_OK !=
TALER_TESTING_get_trait_wire_details (transaction_cmd,
0,
&wire_details))
{
GNUNET_break (0);
@ -220,7 +218,6 @@ track_transaction_run (void *cls,
if (GNUNET_OK !=
TALER_TESTING_get_trait_contract_terms (transaction_cmd,
0,
&contract_terms))
{
GNUNET_break (0);
@ -247,7 +244,6 @@ track_transaction_run (void *cls,
if (GNUNET_OK !=
TALER_TESTING_get_trait_merchant_priv (transaction_cmd,
0,
&merchant_priv))
{
GNUNET_break (0);
@ -301,7 +297,7 @@ track_transaction_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
track_transaction_traits (void *cls,
const void **ret,
const char *trait,
@ -309,7 +305,7 @@ track_transaction_traits (void *cls,
{
struct TrackTransactionState *tts = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_wtid (0, &tts->wtid),
TALER_TESTING_make_trait_wtid (&tts->wtid),
TALER_TESTING_trait_end ()
};

View File

@ -115,7 +115,7 @@ aggregator_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success
*/
static int
static enum GNUNET_GenericReturnValue
aggregator_traits (void *cls,
const void **ret,
const char *trait,
@ -123,7 +123,7 @@ aggregator_traits (void *cls,
{
struct AggregatorState *as = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0, &as->aggregator_proc),
TALER_TESTING_make_trait_process (&as->aggregator_proc),
TALER_TESTING_trait_end ()
};
@ -134,14 +134,6 @@ aggregator_traits (void *cls,
}
/**
* Make a "aggregator" CMD.
*
* @param label command label.
* @param config_filename configuration file for the
* aggregator to use.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_aggregator (const char *label,
const char *config_filename)

View File

@ -65,7 +65,7 @@ struct CloserState
/**
* Do we expect the command to actually close a reserve?
*/
int expect_close;
bool expect_close;
};
@ -93,7 +93,6 @@ closer_run (void *cls,
as->reserve_ref);
if (GNUNET_OK !=
TALER_TESTING_get_trait_reserve_pub (rcmd,
0,
&reserve_pubp))
{
GNUNET_break (0);
@ -156,7 +155,7 @@ closer_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success
*/
static int
static enum GNUNET_GenericReturnValue
closer_traits (void *cls,
const void **ret,
const char *trait,
@ -164,15 +163,13 @@ closer_traits (void *cls,
{
struct CloserState *as = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0, &as->closer_proc),
TALER_TESTING_make_trait_process (&as->closer_proc),
TALER_TESTING_trait_end ()
};
struct TALER_TESTING_Trait xtraits[] = {
TALER_TESTING_make_trait_process (0, &as->closer_proc),
TALER_TESTING_make_trait_reserve_pub (0,
&as->reserve_pub),
TALER_TESTING_make_trait_reserve_history (0,
&as->reserve_history),
TALER_TESTING_make_trait_process (&as->closer_proc),
TALER_TESTING_make_trait_reserve_pub (&as->reserve_pub),
TALER_TESTING_make_trait_reserve_history (&as->reserve_history),
TALER_TESTING_trait_end ()
};
@ -185,22 +182,6 @@ closer_traits (void *cls,
}
/**
* Make a "closer" CMD. Note that it is right now not supported to run the
* closer to close multiple reserves in combination with a subsequent reserve
* status call, as we cannot generate the traits necessary for multiple closed
* reserves. You can work around this by using multiple closer commands, one
* per reserve that is being closed.
*
* @param label command label.
* @param config_filename configuration file for the
* closer to use.
* @param expected_amount amount we expect to see wired from a @a expected_reserve_ref
* @param expected_fee closing fee we expect to see
* @param expected_reserve_ref reference to a reserve we expect the closer to drain;
* NULL if we do not expect the closer to do anything
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_closer (const char *label,
const char *config_filename,
@ -214,7 +195,7 @@ TALER_TESTING_cmd_exec_closer (const char *label,
as->config_filename = config_filename;
if (NULL != expected_reserve_ref)
{
as->expect_close = GNUNET_YES;
as->expect_close = true;
as->reserve_ref = expected_reserve_ref;
if (GNUNET_OK !=
TALER_string_to_amount (expected_amount,

View File

@ -116,7 +116,7 @@ transfer_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success
*/
static int
static enum GNUNET_GenericReturnValue
transfer_traits (void *cls,
const void **ret,
const char *trait,
@ -124,7 +124,7 @@ transfer_traits (void *cls,
{
struct TransferState *as = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0, &as->transfer_proc),
TALER_TESTING_make_trait_process (&as->transfer_proc),
TALER_TESTING_trait_end ()
};
@ -135,14 +135,6 @@ transfer_traits (void *cls,
}
/**
* Make a "transfer" CMD.
*
* @param label command label.
* @param config_filename configuration file for the
* transfer to use.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_transfer (const char *label,
const char *config_filename)

View File

@ -46,6 +46,7 @@ struct WirewatchState
const char *config_filename;
};
/**
* Run the command; use the `taler-exchange-wirewatch' program.
*
@ -115,7 +116,7 @@ wirewatch_cleanup (void *cls,
* @param index index number of the object to offer.
* @return #GNUNET_OK on success.
*/
static int
static enum GNUNET_GenericReturnValue
wirewatch_traits (void *cls,
const void **ret,
const char *trait,
@ -123,8 +124,7 @@ wirewatch_traits (void *cls,
{
struct WirewatchState *ws = cls;
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_process (0,
&ws->wirewatch_proc),
TALER_TESTING_make_trait_process (&ws->wirewatch_proc),
TALER_TESTING_trait_end ()
};
@ -135,13 +135,6 @@ wirewatch_traits (void *cls,
}
/**
* Make a "wirewatch" CMD.
*
* @param label command label.
* @param config_filename configuration filename.
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_exec_wirewatch (const char *label,
const char *config_filename)

View File

@ -68,13 +68,12 @@ rewind_ip_cleanup (void *cls,
* @return #GNUNET_OK on success, #GNUNET_NO if target was not found,
* #GNUNET_SYSERR if target is in the future and we failed
*/
static int
static enum GNUNET_GenericReturnValue
seek_batch (struct TALER_TESTING_Interpreter *is,
const struct TALER_TESTING_Command *cmd,
const struct TALER_TESTING_Command *target)
{
unsigned int new_ip;
#define BATCH_INDEX 1
struct TALER_TESTING_Command *batch;
struct TALER_TESTING_Command *current;
struct TALER_TESTING_Command *icmd;
@ -82,9 +81,8 @@ seek_batch (struct TALER_TESTING_Interpreter *is,
current = TALER_TESTING_cmd_batch_get_current (cmd);
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_cmd (cmd,
BATCH_INDEX,
&batch));
TALER_TESTING_get_trait_batch_cmds (cmd,
&batch));
match = NULL;
for (new_ip = 0;
NULL != (icmd = &batch[new_ip]);
@ -189,15 +187,6 @@ rewind_ip_run (void *cls,
}
/**
* Make the instruction pointer point to @a new_ip
* only if @a counter is greater than zero.
*
* @param label command label
* @param target_label label of the new instruction pointer's destination after the jump;
* must be before the current instruction
* @param counter counts how many times the rewinding is to happen.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_rewind_ip (const char *label,
const char *target_label,

View File

@ -27,46 +27,6 @@
#include "taler_testing_lib.h"
/**
* Cleanup the state from a "stat service" CMD.
*
* @param cls closure.
* @param cmd the command which is being cleaned up.
*/
static void
stat_cleanup (void *cls,
const struct TALER_TESTING_Command *cmd)
{
(void) cls;
(void) cmd;
/* nothing to clean. */
}
/**
* No traits to offer, just provide a stub to be called when
* some CMDs iterates through the list of all the commands.
*
* @param cls closure.
* @param[out] ret result.
* @param trait name of the trait.
* @param index index number of the trait to return.
* @return #GNUNET_OK on success.
*/
static int
stat_traits (void *cls,
const void **ret,
const char *trait,
unsigned int index)
{
(void) cls;
(void) ret;
(void) trait;
(void) index;
return GNUNET_NO;
}
/**
* Add the time @a cmd took to the respective duration in @a timings.
*
@ -123,19 +83,19 @@ do_stat (struct TALER_TESTING_Timer *timings,
{
if (TALER_TESTING_cmd_is_batch (cmd))
{
#define BATCH_INDEX 1
struct TALER_TESTING_Command *bcmd;
if (GNUNET_OK !=
TALER_TESTING_get_trait_cmd (cmd,
BATCH_INDEX,
&bcmd))
TALER_TESTING_get_trait_batch_cmds (cmd,
&bcmd))
{
GNUNET_break (0);
return;
}
for (unsigned int j = 0; NULL != bcmd[j].label; j++)
for (unsigned int j = 0;
NULL != bcmd[j].label;
j++)
do_stat (timings,
&bcmd[j]);
}
@ -172,20 +132,12 @@ stat_run (void *cls,
}
/**
* Obtain performance data from the interpreter.
*
* @param timers what commands (by label) to obtain runtimes for
* @return the command
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_stat (struct TALER_TESTING_Timer *timers)
{
struct TALER_TESTING_Command cmd = {
.label = "stat",
.run = stat_run,
.cleanup = stat_cleanup,
.traits = stat_traits,
.cls = (void *) timers
};

View File

@ -146,7 +146,7 @@ history_entry_cmp (const struct TALER_EXCHANGE_ReserveHistory *h1,
* @param[in,out] found array to update
* @return #GNUNET_OK if @a cmd action on reserve was found in @a history
*/
static int
static enum GNUNET_GenericReturnValue
analyze_command (const struct TALER_ReservePublicKeyP *reserve_pub,
const struct TALER_TESTING_Command *cmd,
unsigned int history_length,
@ -155,15 +155,13 @@ analyze_command (const struct TALER_ReservePublicKeyP *reserve_pub,
{
if (TALER_TESTING_cmd_is_batch (cmd))
{
#define BATCH_INDEX 1
struct TALER_TESTING_Command *cur;
struct TALER_TESTING_Command *bcmd;
cur = TALER_TESTING_cmd_batch_get_current (cmd);
if (GNUNET_OK !=
TALER_TESTING_get_trait_cmd (cmd,
BATCH_INDEX,
&bcmd))
TALER_TESTING_get_trait_batch_cmds (cmd,
&bcmd))
{
GNUNET_break (0);
return GNUNET_SYSERR;
@ -388,16 +386,6 @@ status_cleanup (void *cls,
}
/**
* Create a "reserve status" command.
*
* @param label the command label.
* @param reserve_reference reference to the reserve to check.
* @param expected_balance expected balance for the reserve.
* @param expected_response_code expected HTTP response code.
*
* @return the command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_status (const char *label,
const char *reserve_reference,

View File

@ -66,7 +66,6 @@ TALER_TESTING_interpreter_lookup_command (struct TALER_TESTING_Interpreter *is,
if (TALER_TESTING_cmd_is_batch (cmd))
{
#define BATCH_INDEX 1
struct TALER_TESTING_Command *batch;
struct TALER_TESTING_Command *current;
struct TALER_TESTING_Command *icmd;
@ -74,9 +73,8 @@ TALER_TESTING_interpreter_lookup_command (struct TALER_TESTING_Interpreter *is,
current = TALER_TESTING_cmd_batch_get_current (cmd);
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_cmd (cmd,
BATCH_INDEX,
&batch));
TALER_TESTING_get_trait_batch_cmds (cmd,
&batch));
/* We must do the loop forward, but we can find the last match */
match = NULL;
for (unsigned int j = 0;
@ -120,15 +118,6 @@ TALER_TESTING_interpreter_get_fakebank (struct TALER_TESTING_Interpreter *is)
}
/**
* Run tests starting the "fakebank" first. The "fakebank"
* is a C minimalist version of the human-oriented Python bank,
* which is also part of the Taler project.
*
* @param is pointer to the interpreter state
* @param commands the list of commands to execute
* @param bank_url the url the fakebank is supposed to run on
*/
void
TALER_TESTING_run_with_fakebank (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands,
@ -166,9 +155,6 @@ static void
interpreter_run (void *cls);
/**
* Current command is done, run the next one.
*/
void
TALER_TESTING_interpreter_next (struct TALER_TESTING_Interpreter *is)
{
@ -203,11 +189,6 @@ TALER_TESTING_interpreter_next (struct TALER_TESTING_Interpreter *is)
}
/**
* Current command failed, clean up and fail the test case.
*
* @param is interpreter of the test
*/
void
TALER_TESTING_interpreter_fail (struct TALER_TESTING_Interpreter *is)
{
@ -228,11 +209,6 @@ TALER_TESTING_interpreter_fail (struct TALER_TESTING_Interpreter *is)
}
/**
* Create command array terminator.
*
* @return a end-command.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_end (void)
{
@ -243,9 +219,6 @@ TALER_TESTING_cmd_end (void)
}
/**
* Obtain current label.
*/
const char *
TALER_TESTING_interpreter_get_current_label (struct
TALER_TESTING_Interpreter *is)
@ -393,17 +366,8 @@ maint_child_death (void *cls)
enum GNUNET_OS_ProcessStatusType type;
unsigned long code;
if (TALER_TESTING_cmd_is_batch (cmd))
{
struct TALER_TESTING_Command *batch_cmd;
GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_cmd (cmd,
0,
&batch_cmd));
cmd = batch_cmd;
}
while (TALER_TESTING_cmd_is_batch (cmd))
cmd = TALER_TESTING_cmd_batch_get_current (cmd);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Got SIGCHLD for `%s'.\n",
cmd->label);
@ -469,12 +433,6 @@ maint_child_death (void *cls)
}
/**
* Wait until we receive SIGCHLD signal.
* Then obtain the process trait of the current
* command, wait on the the zombie and continue
* with the next command.
*/
void
TALER_TESTING_wait_for_sigchld (struct TALER_TESTING_Interpreter *is)
{
@ -491,16 +449,6 @@ TALER_TESTING_wait_for_sigchld (struct TALER_TESTING_Interpreter *is)
}
/**
* Run the testsuite. Note, CMDs are copied into
* the interpreter state because they are _usually_
* defined into the "run" method that returns after
* having scheduled the test interpreter.
*
* @param is the interpreter state
* @param commands the list of command to execute
* @param timeout how long to wait
*/
void
TALER_TESTING_run2 (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands,
@ -530,15 +478,6 @@ TALER_TESTING_run2 (struct TALER_TESTING_Interpreter *is,
}
/**
* Run the testsuite. Note, CMDs are copied into
* the interpreter state because they are _usually_
* defined into the "run" method that returns after
* having scheduled the test interpreter.
*
* @param is the interpreter state
* @param commands the list of command to execute
*/
void
TALER_TESTING_run (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands)
@ -597,16 +536,6 @@ sighandler_child_death (void)
}
/**
* "Canonical" cert_cb used when we are connecting to the
* Exchange.
*
* @param cls closure, typically, the "run" method containing
* all the commands to be run, and a closure for it.
* @param hr HTTP response details
* @param keys the exchange's keys.
* @param compat protocol compatibility information.
*/
void
TALER_TESTING_cert_cb (void *cls,
const struct TALER_EXCHANGE_HttpResponse *hr,
@ -875,25 +804,6 @@ load_urls (struct TALER_TESTING_Interpreter *is)
}
/**
* Install signal handlers plus schedules the main wrapper
* around the "run" method.
*
* @param main_cb the "run" method which contains all the
* commands.
* @param main_cb_cls a closure for "run", typically NULL.
* @param cfg configuration to use
* @param exchanged exchange process handle: will be put in the
* state as some commands - e.g. revoke - need to send
* signal to it, for example to let it know to reload the
* key state.. if NULL, the interpreter will run without
* trying to connect to the exchange first.
* @param exchange_connect #GNUNET_YES if the test should connect
* to the exchange, #GNUNET_NO otherwise
* @return #GNUNET_OK if all is okay, != #GNUNET_OK otherwise.
* non-GNUNET_OK codes are #GNUNET_SYSERR most of the
* times.
*/
int
TALER_TESTING_setup (TALER_TESTING_Main main_cb,
void *main_cb_cls,