From de092c2c2b4184e5276923a92e19a859c1cc07aa Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 21 Jan 2018 20:10:05 +0100 Subject: make fakebank_url more robust --- src/exchange-lib/test_exchange_api_new.c | 40 +++++++++++++---------------- src/exchange-lib/testing_api_helpers.c | 43 ++++++++++++++++++++++++++++++++ src/include/taler_testing_lib.h | 11 ++++++++ 3 files changed, 72 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/exchange-lib/test_exchange_api_new.c b/src/exchange-lib/test_exchange_api_new.c index 077115a22..32e1ad37a 100644 --- a/src/exchange-lib/test_exchange_api_new.c +++ b/src/exchange-lib/test_exchange_api_new.c @@ -30,16 +30,17 @@ #include "taler_fakebank_lib.h" #include "taler_testing_lib.h" - /** - * Is the configuration file is set to include wire format 'test'? + * Configuration file we use. One (big) configuration is used + * for the various components for this test. */ -#define WIRE_TEST 1 +#define CONFIG_FILE "test_exchange_api.conf" /** - * Is the configuration file is set to include wire format 'sepa'? + * URL of the fakebank. Obtained from CONFIG_FILE's "exchange-wire-test:BANK_URI" option. */ -#define WIRE_SEPA 1 +static char *fakebank_url; + /** * Account number of the exchange at the bank. @@ -52,41 +53,37 @@ #define USER_ACCOUNT_NO 42 /** - * + * User name. Never checked by fakebank. */ #define USER_LOGIN_NAME "user42" /** - * + * User password. Never checked by fakebank. */ #define USER_LOGIN_PASS "pass42" /** + * Execute the taler-exchange-wirewatch command with + * our configuration file. * - */ -#define FAKEBANK_URL "http://localhost:8082/" - -/** - * - */ -#define CONFIG_FILE "test_exchange_api.conf" - -/** - * + * @param label label to use for the command. */ #define CMD_EXEC_WIREWATCH(label) \ TALER_TESTING_cmd_exec_wirewatch (label, CONFIG_FILE) /** + * Run wire transfer of funds from some user's account to the + * exchange. * + * @param label label to use for the command. + * @param amount amount to transfer, i.e. "EUR:1" */ #define CMD_TRANSFER_TO_EXCHANGE(label,amount) \ TALER_TESTING_cmd_fakebank_transfer (label, amount, \ - FAKEBANK_URL, USER_ACCOUNT_NO, EXCHANGE_ACCOUNT_NO, \ + fakebank_url, USER_ACCOUNT_NO, EXCHANGE_ACCOUNT_NO, \ USER_LOGIN_NAME, USER_LOGIN_PASS) - /** * Main function that will tell the interpreter what commands to run. * @@ -105,7 +102,7 @@ run (void *cls, TALER_TESTING_run_with_fakebank (is, commands, - FAKEBANK_URL); + fakebank_url); } @@ -119,8 +116,7 @@ main (int argc, GNUNET_log_setup ("test-exchange-api-new", "INFO", NULL); - if (GNUNET_OK != - TALER_TESTING_url_port_free (FAKEBANK_URL)) + if (NULL == (fakebank_url = TALER_TESTING_prepare_fakebank (CONFIG_FILE))) return 77; TALER_TESTING_cleanup_files (CONFIG_FILE); switch (TALER_TESTING_prepare_exchange (CONFIG_FILE)) diff --git a/src/exchange-lib/testing_api_helpers.c b/src/exchange-lib/testing_api_helpers.c index fd3d2ddf0..2d1e866fe 100644 --- a/src/exchange-lib/testing_api_helpers.c +++ b/src/exchange-lib/testing_api_helpers.c @@ -95,6 +95,7 @@ TALER_TESTING_prepare_exchange (const char *config_filename) GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "exchange", "PORT"); + GNUNET_CONFIGURATION_destroy (cfg); return GNUNET_NO; } GNUNET_CONFIGURATION_destroy (cfg); @@ -324,4 +325,46 @@ TALER_TESTING_url_port_free (const char *url) return GNUNET_OK; } + +/** + * Prepare launching a fakebank. Check that the configuration + * file has the right option, and that the port is avaiable. + * If everything is OK, return the configured URL of the fakebank. + * + * @param config_filename configuration file to use + * @return NULL on error, fakebank URL otherwise + */ +char * +TALER_TESTING_prepare_fakebank (const char *config_filename) +{ + struct GNUNET_CONFIGURATION_Handle *cfg; + char *fakebank_url; + + cfg = GNUNET_CONFIGURATION_create (); + if (GNUNET_OK != + GNUNET_CONFIGURATION_load (cfg, + config_filename)) + return NULL; + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "exchange-wire-test", + "BANK_URI", + &fakebank_url)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, + "exchange-wire-test", + "BANK_URI"); + GNUNET_CONFIGURATION_destroy (cfg); + return NULL; + } + GNUNET_CONFIGURATION_destroy (cfg); + if (GNUNET_OK != + TALER_TESTING_url_port_free (fakebank_url)) + { + GNUNET_free (fakebank_url); + return NULL; + } + return fakebank_url; +} + /* end of testing_api_helpers.c */ diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index 709139b7c..2a95ff6de 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -71,6 +71,17 @@ int TALER_TESTING_url_port_free (const char *url); +/** + * Prepare launching a fakebank. Check that the configuration + * file has the right option, and that the port is avaiable. + * If everything is OK, return the configured URL of the fakebank. + * + * @param config_filename configuration file to use + * @return NULL on error, fakebank URL otherwise + */ +char * +TALER_TESTING_prepare_fakebank (const char *config_filename); + /* ******************* Generic interpreter logic ****************** */ -- cgit v1.2.3