diff options
Diffstat (limited to 'src/merchant-tools/taler-merchant-benchmark.c')
-rw-r--r-- | src/merchant-tools/taler-merchant-benchmark.c | 696 |
1 files changed, 353 insertions, 343 deletions
diff --git a/src/merchant-tools/taler-merchant-benchmark.c b/src/merchant-tools/taler-merchant-benchmark.c index d60cfeed..238b9f03 100644 --- a/src/merchant-tools/taler-merchant-benchmark.c +++ b/src/merchant-tools/taler-merchant-benchmark.c @@ -1,6 +1,6 @@ /* This file is part of TALER - (C) 2014--2020 Taler Systems SA + (C) 2014--2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -16,7 +16,6 @@ along with TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ - /** * @file taler-merchant-benchmark.c * @brief benchmark the backend to evaluate performance @@ -25,18 +24,9 @@ */ #include "platform.h" #include <taler/taler_util.h> -#include <taler/taler_signatures.h> -#include <taler/taler_exchange_service.h> -#include <taler/taler_json_lib.h> -#include <gnunet/gnunet_util_lib.h> -#include <microhttpd.h> -#include <taler/taler_bank_service.h> -#include <taler/taler_fakebank_lib.h> #include <taler/taler_testing_lib.h> -#include <taler/taler_error_codes.h> #include "taler_merchant_testing_lib.h" -#define PAYTO_I1 "payto://x-taler-bank/localhost/42" /** * Maximum length of an amount (value plus currency string) needed by the test. @@ -51,22 +41,6 @@ #define MAX_ORDER_LEN (MAX_AMOUNT_LEN * 4 + 2048) -/* Error codes. */ -enum PaymentGeneratorError -{ - PG_SUCCESS = 0, - PG_NO_SUBCOMMAND, - PG_BAD_OPTIONS, - PG_BAD_CONFIG_FILE, - PG_FAILED_CFG_CURRENCY, - PG_FAILED_TO_PREPARE_MERCHANT, - PG_FAILED_TO_PREPARE_BANK, - PG_FAILED_TO_LAUNCH_MERCHANT, - PG_FAILED_TO_LAUNCH_BANK, - PG_RUNTIME_FAILURE -}; - - /** * ID to use for the 'alternative' instance. */ @@ -108,21 +82,11 @@ static unsigned int twocoins_number = 1; static unsigned int payments_number = 1; /** - * How many /tracks operation we want to perform. - */ -static unsigned int tracks_number = 1; - -/** * Config filename to give to commands (like wirewatch). */ static char *cfg_filename; /** - * Bank configuration. - */ -static struct TALER_TESTING_BankConfiguration bc; - -/** * Merchant base URL. */ static char *merchant_url; @@ -132,6 +96,22 @@ static char *merchant_url; */ static char *currency; +/** + * Set to 1 if `-f` command line option given. + */ +static int use_fakebank; + +/** + * Configuration section with details about the exchange + * bank account to use. + */ +static char *exchange_bank_section; + +/** + * Credentials to use for the benchmark. + */ +static struct TALER_TESTING_Credentials cred; + /** * Actual commands collection. @@ -186,106 +166,79 @@ run (void *cls, sizeof (CURRENCY_0_01), "%s:0.01", currency); - - if (NULL != apikey) - { - char *hdr; - - GNUNET_asprintf (&hdr, - "%s: %s", - MHD_HTTP_HEADER_AUTHORIZATION, - apikey); - GNUNET_assert (GNUNET_OK == - GNUNET_CURL_append_header (is->ctx, - hdr)); - GNUNET_free (hdr); - } - if (ordinary) { struct TALER_TESTING_Command ordinary_commands[] = { - TALER_TESTING_cmd_merchant_post_instances ("instance-create-default", - merchant_url, - "default", - PAYTO_I1, - currency, - MHD_HTTP_NO_CONTENT), - TALER_TESTING_cmd_admin_add_incoming ("create-reserve-1", - CURRENCY_10_02, - &bc.exchange_auth, - bc.user43_payto), - TALER_TESTING_cmd_exec_wirewatch ("wirewatch-1", - cfg_filename), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1", - "create-reserve-1", - CURRENCY_5, - 0, - MHD_HTTP_OK), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-2", - "create-reserve-1", - CURRENCY_5, - 0, - MHD_HTTP_OK), - TALER_TESTING_cmd_merchant_post_orders ("create-proposal-1", - merchant_url, - MHD_HTTP_OK, - NULL, /* random order ID please */ - GNUNET_TIME_UNIT_ZERO_TS, - GNUNET_TIME_UNIT_FOREVER_TS, - CURRENCY_5), - TALER_TESTING_cmd_merchant_pay_order ("deposit-simple", - merchant_url, - MHD_HTTP_OK, - "create-proposal-1", - "withdraw-coin-1", - CURRENCY_5, - CURRENCY_4_99, - NULL), - TALER_TESTING_cmd_rewind_ip ("rewind-payments", - "create-reserve-1", - payments_number), - /* Next proposal-pay cycle will be used by /track CMDs - * and so it will not have to be looped over, only /track - * CMDs will have to. */ - TALER_TESTING_cmd_merchant_post_orders ("create-proposal-2", - merchant_url, - MHD_HTTP_OK, - NULL, /* random order ID */ - GNUNET_TIME_UNIT_ZERO_TS, - GNUNET_TIME_UNIT_FOREVER_TS, - CURRENCY_5), - TALER_TESTING_cmd_merchant_pay_order ("deposit-simple-2", - merchant_url, - MHD_HTTP_OK, - "create-proposal-2", - "withdraw-coin-2", - CURRENCY_5, - CURRENCY_4_99, - NULL), - /* /track/transaction over deposit-simple-2 */ - - TALER_TESTING_cmd_exec_aggregator ("aggregate-1", - cfg_filename), - TALER_TESTING_cmd_exec_transfer ("transfer-1", - cfg_filename), - TALER_TESTING_cmd_merchant_post_transfer ( - "post-transfer-1", - &bc.exchange_auth, - bc.exchange_auth.wire_gateway_url, + TALER_TESTING_cmd_get_exchange ( + "get-exchange", + cred.cfg, + NULL, + true, + true), + TALER_TESTING_cmd_set_authorization ( + "set-auth-valid", + apikey), + TALER_TESTING_cmd_merchant_post_instances ( + "instance-create-default", + merchant_url, + "default", + MHD_HTTP_NO_CONTENT), + TALER_TESTING_cmd_merchant_post_account ( + "instance-create-default-account", + merchant_url, + cred.user42_payto, + NULL, NULL, + MHD_HTTP_OK), + TALER_TESTING_cmd_admin_add_incoming ( + "create-reserve-1", + CURRENCY_10_02, + &cred.ba, + cred.user43_payto), + TALER_TESTING_cmd_exec_wirewatch2 ( + "wirewatch-1", + cfg_filename, + exchange_bank_section), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-1", + "create-reserve-1", + CURRENCY_5, + 0, + MHD_HTTP_OK), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-2", + "create-reserve-1", + CURRENCY_5, + 0, + MHD_HTTP_OK), + TALER_TESTING_cmd_merchant_post_orders ( + "create-proposal-1", + cred.cfg, + merchant_url, + MHD_HTTP_OK, + NULL, /* random order ID please */ + GNUNET_TIME_UNIT_ZERO_TS, + GNUNET_TIME_UNIT_FOREVER_TS, + CURRENCY_5), + TALER_TESTING_cmd_merchant_pay_order ( + "deposit-simple", merchant_url, - CURRENCY_4_98, MHD_HTTP_OK, - "deposit-simple-2", + "create-proposal-1", + "withdraw-coin-1", + CURRENCY_5, + CURRENCY_4_99, NULL), - TALER_TESTING_cmd_merchant_get_transfers ("track-transfer-1", - merchant_url, - bc.user42_payto, - MHD_HTTP_OK, - "post-transfer-1", - NULL), - TALER_TESTING_cmd_rewind_ip ("rewind-tracks", - "track-transfer-1", - tracks_number), + TALER_TESTING_cmd_rewind_ip ( + "rewind-payments", + "create-reserve-1", + payments_number), + TALER_TESTING_cmd_exec_aggregator ( + "aggregate-1x", + cfg_filename), + TALER_TESTING_cmd_exec_transfer ( + "transfer-1", + cfg_filename), + TALER_TESTING_cmd_end () }; @@ -297,85 +250,123 @@ run (void *cls, if (corner) /* should never be 'false' here */ { struct TALER_TESTING_Command corner_commands[] = { - TALER_TESTING_cmd_merchant_post_instances ("instance-create-default", - merchant_url, - "default", - PAYTO_I1, - currency, - MHD_HTTP_NO_CONTENT), - TALER_TESTING_cmd_merchant_post_instances ("instance-create-alt", - merchant_url, - alt_instance_id, - PAYTO_I1, - currency, - MHD_HTTP_NO_CONTENT), - TALER_TESTING_cmd_admin_add_incoming ("create-reserve-1", - CURRENCY_5_01, - &bc.exchange_auth, - bc.user43_payto), - TALER_TESTING_cmd_exec_wirewatch ("wirewatch-1", - cfg_filename), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1", - "create-reserve-1", - CURRENCY_5, - 0, - MHD_HTTP_OK), - TALER_TESTING_cmd_merchant_post_orders ("create-unaggregated-proposal", - alt_instance_url, - MHD_HTTP_OK, - NULL, /* use random order ID */ - GNUNET_TIME_UNIT_ZERO_TS, - GNUNET_TIME_UNIT_FOREVER_TS, - CURRENCY_5), - TALER_TESTING_cmd_merchant_pay_order ("deposit-unaggregated", - alt_instance_url, - MHD_HTTP_OK, - "create-unaggregated-proposal", - "withdraw-coin-1", - CURRENCY_5, - CURRENCY_4_99, - NULL), - TALER_TESTING_cmd_rewind_ip ("rewind-unaggregated", - "create-reserve-1", - unaggregated_number), - TALER_TESTING_cmd_admin_add_incoming ("create-reserve-2", - CURRENCY_10_02, - &bc.exchange_auth, - bc.user43_payto), - TALER_TESTING_cmd_exec_wirewatch ("wirewatch-2", - cfg_filename), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-2", - "create-reserve-2", - CURRENCY_5, - 0, - MHD_HTTP_OK), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-3", - "create-reserve-2", - CURRENCY_5, - 0, - MHD_HTTP_OK), - TALER_TESTING_cmd_merchant_post_orders ("create-twocoins-proposal", - merchant_url, - MHD_HTTP_OK, - NULL, /* use random order ID */ - GNUNET_TIME_UNIT_ZERO_TS, - GNUNET_TIME_UNIT_FOREVER_TS, - CURRENCY_10), - TALER_TESTING_cmd_merchant_pay_order ("deposit-twocoins", - merchant_url, - MHD_HTTP_OK, - "create-twocoins-proposal", - "withdraw-coin-2;withdraw-coin-3", - CURRENCY_10, - CURRENCY_9_98, - NULL), - TALER_TESTING_cmd_exec_aggregator ("aggregate-twocoins", - cfg_filename), - TALER_TESTING_cmd_exec_transfer ("transfer-twocoins", - cfg_filename), - TALER_TESTING_cmd_rewind_ip ("rewind-twocoins", - "create-reserve-2", - twocoins_number), + TALER_TESTING_cmd_get_exchange ( + "get-exchange", + cred.cfg, + NULL, + true, + true), + TALER_TESTING_cmd_set_authorization ( + "set-auth-valid", + apikey), + TALER_TESTING_cmd_merchant_post_instances ( + "instance-create-default", + merchant_url, + "default", + MHD_HTTP_NO_CONTENT), + TALER_TESTING_cmd_merchant_post_account ( + "instance-create-default-account", + merchant_url, + cred.user42_payto, + NULL, NULL, + MHD_HTTP_OK), + TALER_TESTING_cmd_merchant_post_instances ( + "instance-create-alt", + merchant_url, + alt_instance_id, + MHD_HTTP_NO_CONTENT), + TALER_TESTING_cmd_merchant_post_account ( + "instance-create-alt-account", + alt_instance_url, + cred.user42_payto, + NULL, NULL, + MHD_HTTP_OK), + TALER_TESTING_cmd_admin_add_incoming ( + "create-reserve-1", + CURRENCY_5_01, + &cred.ba, + cred.user43_payto), + TALER_TESTING_cmd_exec_wirewatch2 ( + "wirewatch-1", + cfg_filename, + exchange_bank_section), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-1", + "create-reserve-1", + CURRENCY_5, + 0, + MHD_HTTP_OK), + TALER_TESTING_cmd_merchant_post_orders ( + "create-unaggregated-proposal", + cred.cfg, + alt_instance_url, + MHD_HTTP_OK, + NULL, /* use random order ID */ + GNUNET_TIME_UNIT_ZERO_TS, + GNUNET_TIME_UNIT_FOREVER_TS, + CURRENCY_5), + TALER_TESTING_cmd_merchant_pay_order ( + "deposit-unaggregated", + alt_instance_url, + MHD_HTTP_OK, + "create-unaggregated-proposal", + "withdraw-coin-1", + CURRENCY_5, + CURRENCY_4_99, + NULL), + TALER_TESTING_cmd_rewind_ip ( + "rewind-unaggregated", + "create-reserve-1", + unaggregated_number), + TALER_TESTING_cmd_admin_add_incoming ( + "create-reserve-2", + CURRENCY_10_02, + &cred.ba, + cred.user43_payto), + TALER_TESTING_cmd_exec_wirewatch2 ( + "wirewatch-2", + cfg_filename, + exchange_bank_section), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-2", + "create-reserve-2", + CURRENCY_5, + 0, + MHD_HTTP_OK), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-3", + "create-reserve-2", + CURRENCY_5, + 0, + MHD_HTTP_OK), + TALER_TESTING_cmd_merchant_post_orders ( + "create-twocoins-proposal", + cred.cfg, + merchant_url, + MHD_HTTP_OK, + NULL, /* use random order ID */ + GNUNET_TIME_UNIT_ZERO_TS, + GNUNET_TIME_UNIT_FOREVER_TS, + CURRENCY_10), + TALER_TESTING_cmd_merchant_pay_order ( + "deposit-twocoins", + merchant_url, + MHD_HTTP_OK, + "create-twocoins-proposal", + "withdraw-coin-2;withdraw-coin-3", + CURRENCY_10, + CURRENCY_9_98, + NULL), + TALER_TESTING_cmd_exec_aggregator ( + "aggregate-twocoins", + cfg_filename), + TALER_TESTING_cmd_exec_transfer ( + "transfer-twocoins", + cfg_filename), + TALER_TESTING_cmd_rewind_ip ( + "rewind-twocoins", + "create-reserve-2", + twocoins_number), TALER_TESTING_cmd_end () }; @@ -387,21 +378,6 @@ run (void *cls, /** - * Send SIGTERM and wait for process termination. - * - * @param process process to terminate. - */ -static void -terminate_process (struct GNUNET_OS_Process *process) -{ - GNUNET_OS_process_kill (process, - SIGTERM); - GNUNET_OS_process_wait (process); - GNUNET_OS_process_destroy (process); -} - - -/** * The main function of the serve tool * * @param argc number of arguments from the command line @@ -415,86 +391,110 @@ main (int argc, char *loglev = NULL; char *logfile = NULL; char *exchange_account = NULL; - struct GNUNET_OS_Process *bankd; - struct GNUNET_OS_Process *merchantd; struct GNUNET_GETOPT_CommandLineOption *options; struct GNUNET_GETOPT_CommandLineOption root_options[] = { GNUNET_GETOPT_option_cfgfile (&cfg_filename), + GNUNET_GETOPT_option_string ( + 'u', + "exchange-account-section", + "SECTION", + "use exchange bank account configuration from the given SECTION", + &exchange_bank_section), + GNUNET_GETOPT_option_flag ( + 'f', + "fakebank", + "use fakebank for the banking system", + &use_fakebank), GNUNET_GETOPT_option_version (PACKAGE_VERSION " " VCS_VERSION), - GNUNET_GETOPT_option_help ("Runs benchmark logic against merchant backend. " - "Must be used with either 'ordinary' or 'corner' sub-commands."), - GNUNET_GETOPT_option_string ('l', - "logfile", - "LF", - "will log to file LF", - &logfile), + GNUNET_GETOPT_option_help ( + "Runs benchmark logic against merchant backend. " + "Must be used with either 'ordinary' or 'corner' sub-commands."), + GNUNET_GETOPT_option_string ( + 'l', + "logfile", + "LF", + "will log to file LF", + &logfile), GNUNET_GETOPT_option_loglevel (&loglev), GNUNET_GETOPT_OPTION_END }; struct GNUNET_GETOPT_CommandLineOption corner_options[] = { - GNUNET_GETOPT_option_string ('l', - "logfile", - "LF", - "will log to file LF", - &logfile), - GNUNET_GETOPT_option_loglevel (&loglev), + GNUNET_GETOPT_option_string ( + 'a', + "apikey", + "APIKEY", + "HTTP 'Authorization' header to send to the merchant", + &apikey), GNUNET_GETOPT_option_cfgfile (&cfg_filename), + GNUNET_GETOPT_option_flag ( + 'f', + "fakebank", + "use fakebank for the banking system", + &use_fakebank), GNUNET_GETOPT_option_help ("Populate databases with corner case payments"), - GNUNET_GETOPT_option_uint ('u', - "unaggregated-number", - "UN", - "will generate UN unaggregated payments, defaults to 1", - &unaggregated_number), - GNUNET_GETOPT_option_uint ('t', - "two-coins", - "TC", - "will perform TC 2-coins payments, defaults to 1", - &twocoins_number), - GNUNET_GETOPT_option_mandatory ( - GNUNET_GETOPT_option_string ('e', - "exchange-account", - "SECTION", - "configuration section specifying the exchange account to use, mandatory", - &exchange_account)), - GNUNET_GETOPT_option_string ('a', - "apikey", - "APIKEY", - "HTTP 'Authorization' header to send to the merchant", - &apikey), + GNUNET_GETOPT_option_string ( + 'l', + "logfile", + "LF", + "will log to file LF", + &logfile), + GNUNET_GETOPT_option_loglevel (&loglev), + GNUNET_GETOPT_option_uint ( + 't', + "two-coins", + "TC", + "will perform TC 2-coins payments, defaults to 1", + &twocoins_number), + GNUNET_GETOPT_option_uint ( + 'U', + "unaggregated-number", + "UN", + "will generate UN unaggregated payments, defaults to 1", + &unaggregated_number), + GNUNET_GETOPT_option_string ( + 'u', + "exchange-account-section", + "SECTION", + "use exchange bank account configuration from the given SECTION", + &exchange_bank_section), GNUNET_GETOPT_OPTION_END }; struct GNUNET_GETOPT_CommandLineOption ordinary_options[] = { - GNUNET_GETOPT_option_string ('l', - "logfile", - "LF", - "will log to file LF", - &logfile), - GNUNET_GETOPT_option_loglevel (&loglev), + GNUNET_GETOPT_option_string ( + 'a', + "apikey", + "APIKEY", + "HTTP 'Authorization' header to send to the merchant", + &apikey), GNUNET_GETOPT_option_cfgfile (&cfg_filename), - GNUNET_GETOPT_option_version (PACKAGE_VERSION " " VCS_VERSION), - GNUNET_GETOPT_option_help ("Generate Taler ordinary payments" - " to populate the databases"), GNUNET_GETOPT_option_mandatory ( - GNUNET_GETOPT_option_string ('e', - "exchange-account", - "SECTION", - "configuration section specifying the exchange account to use, mandatory", - &exchange_account)), - GNUNET_GETOPT_option_uint ('p', - "payments-number", - "PN", - "will generate PN payments, defaults to 1", - &payments_number), - GNUNET_GETOPT_option_string ('a', - "apikey", - "APIKEY", - "HTTP 'Authorization' header to send to the merchant", - &apikey), - GNUNET_GETOPT_option_uint ('t', - "tracks-number", - "TN", - "will perform TN /track operations, defaults to 1", - &tracks_number), + GNUNET_GETOPT_option_string ( + 'e', + "exchange-account", + "SECTION", + "configuration section specifying the exchange account to use, mandatory", + &exchange_account)), + GNUNET_GETOPT_option_flag ( + 'f', + "fakebank", + "use fakebank for the banking system", + &use_fakebank), + GNUNET_GETOPT_option_help ( + "Generate Taler ordinary payments" + " to populate the databases"), + GNUNET_GETOPT_option_string ( + 'l', + "logfile", + "LF", + "will log to file LF", + &logfile), + GNUNET_GETOPT_option_loglevel (&loglev), + GNUNET_GETOPT_option_uint ( + 'p', + "payments-number", + "PN", + "will generate PN payments, defaults to 1", + &payments_number), GNUNET_GETOPT_option_version (PACKAGE_VERSION "-" VCS_VERSION), GNUNET_GETOPT_OPTION_END }; @@ -517,19 +517,26 @@ main (int argc, } { - int result; + enum GNUNET_GenericReturnValue result; result = GNUNET_GETOPT_run ("taler-merchant-benchmark", options, argc, argv); - if (GNUNET_SYSERR == result) + switch (result) { - return PG_BAD_OPTIONS; + case GNUNET_SYSERR: + return EXIT_INVALIDARGUMENT; + case GNUNET_NO: + return EXIT_SUCCESS; + case GNUNET_OK: + break; } - if (0 == result) - return PG_SUCCESS; } + if (NULL == exchange_bank_section) + exchange_bank_section = "exchange-account-1"; + if (NULL == loglev) + loglev = "INFO"; GNUNET_log_setup ("taler-merchant-benchmark", loglev, logfile); @@ -537,7 +544,7 @@ main (int argc, (! corner) ) { TALER_LOG_ERROR ("Please use 'ordinary' or 'corner' subcommands.\n"); - return PG_NO_SUBCOMMAND; + return EXIT_INVALIDARGUMENT; } if (NULL == cfg_filename) cfg_filename = (char *) default_config_file; @@ -551,7 +558,7 @@ main (int argc, cfg_filename)) { TALER_LOG_ERROR ("Could not parse configuration\n"); - return PG_BAD_CONFIG_FILE; + return EXIT_NOTCONFIGURED; } if (GNUNET_OK != TALER_config_get_currency (cfg, @@ -559,56 +566,59 @@ main (int argc, { TALER_LOG_ERROR ("Failed to read currency from configuration\n"); GNUNET_CONFIGURATION_destroy (cfg); - return PG_FAILED_CFG_CURRENCY; + return EXIT_NOTCONFIGURED; + } + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "merchant-benchmark", + "MERCHANT_URL", + &merchant_url)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, + "merchant-benchmark", + "MERCHANT_URL"); + GNUNET_CONFIGURATION_destroy (cfg); + return EXIT_NOTCONFIGURED; + } + if ( (0 == strlen (merchant_url)) || + (merchant_url[strlen (merchant_url) - 1] != '/') ) + { + GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, + "merchant-benchmark", + "MERCHANT_URL", + "Not a valid URL"); + GNUNET_CONFIGURATION_destroy (cfg); + return EXIT_NOTCONFIGURED; + } + + if (GNUNET_OK != + TALER_TESTING_get_credentials ( + cfg_filename, + exchange_bank_section, + use_fakebank + ? TALER_TESTING_BS_FAKEBANK + : TALER_TESTING_BS_IBAN, + &cred)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Required bank credentials not given in configuration\n"); + GNUNET_free (cfg_filename); + return EXIT_NOTCONFIGURED; } + GNUNET_CONFIGURATION_destroy (cfg); } - /* prepare merchant and bank */ - merchant_url = TALER_TESTING_prepare_merchant (cfg_filename); - if (NULL == merchant_url) - { - TALER_LOG_ERROR ("Failed to prepare for the merchant\n"); - return PG_FAILED_TO_PREPARE_MERCHANT; - } - GNUNET_assert (0 < strlen (merchant_url)); - GNUNET_assert (merchant_url[strlen (merchant_url) - 1] == '/'); - GNUNET_assert (0 < GNUNET_asprintf (&alt_instance_url, - "%sinstances/%s/", - merchant_url, - alt_instance_id)); - if (GNUNET_OK != - TALER_TESTING_prepare_bank (cfg_filename, - GNUNET_NO, - exchange_account, - &bc)) - { - TALER_LOG_ERROR ("Failed to prepare for the bank\n"); - return PG_FAILED_TO_PREPARE_BANK; - } - /* launch merchant and bank */ - if (NULL == (merchantd = TALER_TESTING_run_merchant (cfg_filename, - merchant_url))) + GNUNET_asprintf (&alt_instance_url, + "%sinstances/%s/", + merchant_url, + alt_instance_id); { - TALER_LOG_ERROR ("Failed to launch the merchant\n"); - return PG_FAILED_TO_LAUNCH_MERCHANT; - } - if (NULL == (bankd = TALER_TESTING_run_bank (cfg_filename, - bc.exchange_auth.wire_gateway_url))) - { - TALER_LOG_ERROR ("Failed to run the bank\n"); - terminate_process (merchantd); - return PG_FAILED_TO_LAUNCH_BANK; - } + enum GNUNET_GenericReturnValue result; - /* launch exchange and run benchmark */ - { - int result; - - result = TALER_TESTING_setup_with_exchange (&run, - NULL, - cfg_filename); - terminate_process (merchantd); - terminate_process (bankd); - return (GNUNET_OK == result) ? 0 : PG_RUNTIME_FAILURE; + result = TALER_TESTING_loop (&run, + NULL); + return (GNUNET_OK == result) + ? 0 + : EXIT_FAILURE; } } |