aboutsummaryrefslogtreecommitdiff
path: root/src/merchant-tools/taler-merchant-benchmark.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-07-03 17:46:30 +0200
committerChristian Grothoff <christian@grothoff.org>2020-07-03 17:46:30 +0200
commit1610f3a16efe10c456f86af65134e1d3765863fd (patch)
treebcb6356a533e72f52986fd27f54a7a495fd0985b /src/merchant-tools/taler-merchant-benchmark.c
parent4b5ceba3c5f4656f271f286c2a3b75543b030845 (diff)
more merchant benchmark cleanup
Diffstat (limited to 'src/merchant-tools/taler-merchant-benchmark.c')
-rw-r--r--src/merchant-tools/taler-merchant-benchmark.c194
1 files changed, 91 insertions, 103 deletions
diff --git a/src/merchant-tools/taler-merchant-benchmark.c b/src/merchant-tools/taler-merchant-benchmark.c
index f811b502..ac348998 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-2018 Taler Systems SA
+ (C) 2014--2020 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
@@ -55,19 +55,18 @@ 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
};
-/* Hard-coded params. Note, the bank is expected to
- * have the Tor user with account number 3 and password 'x'.
- */
-#define EXCHANGE_ACCOUNT_NO 2
-#define USER_LOGIN_NAME "Tor"
-#define USER_LOGIN_PASS "x"
-#define EXCHANGE_URL "http://example.com/"
+/* Arguments for #TALER_TESTING_cmd_rewind_ip(). FIXME: should probably be
+ replaced with labels? Bad style! */
#define FIRST_INSTRUCTION -1
#define TRACKS_INSTRUCTION 9
#define TWOCOINS_INSTRUCTION 5
@@ -89,11 +88,6 @@ static bool ordinary;
static bool corner;
/**
- * Alternative non default instance.
- */
-static char *alt_instance_id;
-
-/**
* Base URL of the alternative non default instance.
*/
static char *alt_instance_url;
@@ -124,9 +118,9 @@ static unsigned int tracks_number = 1;
static char *cfg_filename;
/**
- * Bank base URL.
+ * Bank configuration.
*/
-static char *bank_url;
+static struct TALER_TESTING_BankConfiguration bc;
/**
* Merchant base URL.
@@ -138,15 +132,6 @@ static char *merchant_url;
*/
static char *currency;
-/**
- * Authentication data to use. FIXME: init !
- */
-static struct TALER_BANK_AuthenticationData auth;
-
-static char *exchange_payto;
-static char *customer_payto;
-static char *merchant_payto;
-
/**
* Actual commands collection.
@@ -251,6 +236,8 @@ run (void *cls,
currency,
currency,
currency);
+
+ if (NULL != apikey)
{
char *hdr;
@@ -269,8 +256,8 @@ run (void *cls,
struct TALER_TESTING_Command ordinary_commands[] = {
TALER_TESTING_cmd_admin_add_incoming ("create-reserve-1",
CURRENCY_10_02,
- &auth,
- customer_payto),
+ &bc.exchange_auth,
+ bc.user43_payto),
TALER_TESTING_cmd_exec_wirewatch ("wirewatch-1",
cfg_filename),
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
@@ -313,17 +300,18 @@ run (void *cls,
TALER_TESTING_cmd_exec_aggregator ("aggregate-1",
cfg_filename),
- TALER_TESTING_cmd_merchant_post_transfer ("post-transfer-1",
- &auth,
- bank_url,
- merchant_url,
- "EUR:4.98", /* FIXME: check amount! */
- MHD_HTTP_OK,
- "deposit-simple-2",
- NULL),
+ TALER_TESTING_cmd_merchant_post_transfer (
+ "post-transfer-1",
+ &bc.exchange_auth,
+ bc.exchange_auth.wire_gateway_url,
+ merchant_url,
+ "EUR:4.98", /* FIXME: check amount! */
+ MHD_HTTP_OK,
+ "deposit-simple-2",
+ NULL),
TALER_TESTING_cmd_merchant_get_transfers ("track-transfer-1",
merchant_url,
- merchant_payto,
+ bc.user42_payto,
MHD_HTTP_OK,
"post-transaction-1",
NULL),
@@ -343,8 +331,8 @@ run (void *cls,
struct TALER_TESTING_Command corner_commands[] = {
TALER_TESTING_cmd_admin_add_incoming ("create-reserve-1",
CURRENCY_5_01,
- &auth,
- customer_payto),
+ &bc.exchange_auth,
+ bc.user43_payto),
TALER_TESTING_cmd_exec_wirewatch ("wirewatch-1",
cfg_filename),
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
@@ -367,8 +355,8 @@ run (void *cls,
&unaggregated_number),
TALER_TESTING_cmd_admin_add_incoming ("create-reserve-2",
CURRENCY_10_02,
- &auth,
- customer_payto),
+ &bc.exchange_auth,
+ bc.user43_payto),
TALER_TESTING_cmd_exec_wirewatch ("wirewatch-2",
cfg_filename),
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-2",
@@ -433,6 +421,8 @@ main (int argc,
{
char *loglev;
char *logfile;
+ char *exchange_account;
+ char *alt_instance_id;
struct GNUNET_OS_Process *bankd;
struct GNUNET_OS_Process *merchantd;
struct GNUNET_GETOPT_CommandLineOption *options;
@@ -456,31 +446,17 @@ main (int argc,
"TC",
"will perform TC 2-coins payments, defaults to 1",
&twocoins_number),
- /**
- * NOTE: useful when the setup serves merchant
- * backends via unix domain sockets, since there
- * is no way - yet? - to get the merchant base url.
- * Clearly, we could introduce a merchant_base_url
- * value into the configuration.
- *///
GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('m',
- "merchant-url",
- "MU",
- "merchant base url, mandatory",
- &merchant_url)),
- GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('a',
- "apikey",
- "APIKEY",
- "HTTP 'Authorization' header to send to the merchant, mandatory",
- &apikey)),
- GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('k',
- "currency",
- "K",
- "Used currency, mandatory",
- &currency)),
+ 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_mandatory (
GNUNET_GETOPT_option_string ('i',
"alt-instance",
@@ -494,12 +470,6 @@ main (int argc,
" as they would get those far future ones"
" aggregated too.",
&alt_instance_id)),
- GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('b',
- "bank-url",
- "BU",
- "bank base url, mandatory",
- &bank_url)),
GNUNET_GETOPT_option_string ('l',
"logfile",
"LF",
@@ -513,41 +483,27 @@ main (int argc,
GNUNET_GETOPT_option_help ("Generate Taler ordinary payments"
" to populate the databases"),
GNUNET_GETOPT_option_loglevel (&loglev),
+ 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_mandatory (
- GNUNET_GETOPT_option_string ('a',
- "apikey",
- "APIKEY",
- "HTTP 'Authorization' header to send to the merchant, mandatory",
- &apikey)),
+ 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),
- /**
- * NOTE: useful when the setup serves merchant
- * backends via unix domain sockets, since there
- * is no way - yet? - to get the merchant base url.
- * Clearly, we could introduce a merchant_base_url
- * value into the configuration.
- *///
- GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('m',
- "merchant-url",
- "MU",
- "merchant base url, mandatory",
- &merchant_url)),
- GNUNET_GETOPT_option_mandatory (
- GNUNET_GETOPT_option_string ('b',
- "bank-url",
- "BU",
- "bank base url, mandatory",
- &bank_url)),
GNUNET_GETOPT_option_string ('l',
"logfile",
"LF",
@@ -598,6 +554,35 @@ main (int argc,
}
if (NULL == cfg_filename)
cfg_filename = (char *) default_config_file;
+ /* load currency from configuration */
+ {
+ struct GNUNET_CONFIGURATION_Handle *cfg;
+
+ cfg = GNUNET_CONFIGURATION_create ();
+ if (GNUNET_OK !=
+ GNUNET_CONFIGURATION_load (cfg,
+ cfg_filename))
+ {
+ TALER_LOG_ERROR ("Could not parse configuration\n");
+ return PG_BAD_CONFIG_FILE;
+ }
+ if (GNUNET_OK !=
+ TALER_config_get_currency (cfg,
+ &currency))
+ {
+ TALER_LOG_ERROR ("Failed to read currency from configuration\n");
+ GNUNET_CONFIGURATION_destroy (cfg);
+ return PG_FAILED_CFG_CURRENCY;
+ }
+ 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;
+ }
if (NULL != alt_instance_id)
{
GNUNET_assert (0 < GNUNET_asprintf (&alt_instance_url,
@@ -605,6 +590,16 @@ main (int argc,
merchant_url,
&alt_instance_id));
}
+ if (GNUNET_OK !=
+ TALER_TESTING_prepare_bank (cfg_filename,
+ GNUNET_YES,
+ 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)))
{
@@ -612,21 +607,14 @@ main (int argc,
return PG_FAILED_TO_LAUNCH_MERCHANT;
}
if (NULL == (bankd = TALER_TESTING_run_bank (cfg_filename,
- bank_url)))
+ bc.exchange_auth.wire_gateway_url)))
{
TALER_LOG_ERROR ("Failed to run the bank\n");
terminate_process (merchantd);
return PG_FAILED_TO_LAUNCH_BANK;
}
- /**
- * FIXME: Need to retrieve the bank base URL!
- */
-
- exchange_payto = "payto://x-taler-bank/localhost/Exchange";
- merchant_payto = "payto://x-taler-bank/localhost/Merchant";
- customer_payto = "payto://x-taler-bank/localhost/Customer";
-
+ /* launch exchange and run benchmark */
{
int result;