From 40b27a82103c8596948b37ab5784f7e2b478b162 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Fri, 4 May 2018 15:46:07 +0200 Subject: Tests flexibility. It is now possible to launch the bank from the testing-lib regardless of it being served via HTTP or UWSGI. --- src/bank-lib/bank.conf | 2 ++ src/bank-lib/bank_twisted.conf | 2 ++ src/bank-lib/test_bank_api_new.c | 2 +- src/bank-lib/test_bank_api_twisted.c | 8 +++-- src/bank-lib/testing_api_helpers.c | 67 ++++++++++++++++++++++++++++++++---- src/include/taler_testing_bank_lib.h | 3 +- 6 files changed, 73 insertions(+), 11 deletions(-) diff --git a/src/bank-lib/bank.conf b/src/bank-lib/bank.conf index 9befeba9e..906b95fc5 100644 --- a/src/bank-lib/bank.conf +++ b/src/bank-lib/bank.conf @@ -5,7 +5,9 @@ currency = KUDOS URL = payto://x-taler-bank/localhost:8081/1 [bank] +SERVE = http HTTP_PORT = 8081 +DATABASE = postgres:///talercheck [exchange-wire-test] bank_url = http://localhost:8081/ diff --git a/src/bank-lib/bank_twisted.conf b/src/bank-lib/bank_twisted.conf index d20e10948..ab006b913 100644 --- a/src/bank-lib/bank_twisted.conf +++ b/src/bank-lib/bank_twisted.conf @@ -27,7 +27,9 @@ UNIX_MATCH_GID = YES currency = KUDOS [bank] +serve = http http_port = 8081 +database = postgres:///talercheck [account-1] URL = payto://x-taler-bank/localhost:8081/1 diff --git a/src/bank-lib/test_bank_api_new.c b/src/bank-lib/test_bank_api_new.c index eade78069..513b4aa81 100644 --- a/src/bank-lib/test_bank_api_new.c +++ b/src/bank-lib/test_bank_api_new.c @@ -164,7 +164,7 @@ main(int argc, return 77; if (NULL == (bankd = - TALER_TESTING_run_bank (CONFIG_FILE))) + TALER_TESTING_run_bank (CONFIG_FILE, bank_url))) return 77; ret = TALER_TESTING_setup (&run, diff --git a/src/bank-lib/test_bank_api_twisted.c b/src/bank-lib/test_bank_api_twisted.c index b11ccfd86..55064b25a 100644 --- a/src/bank-lib/test_bank_api_twisted.c +++ b/src/bank-lib/test_bank_api_twisted.c @@ -85,7 +85,7 @@ run (void *cls, struct TALER_TESTING_Command commands[] = { TALER_TESTING_cmd_bank_history ("history-0", - bank_url, + twister_url, EXCHANGE_ACCOUNT_NUMBER, TALER_BANK_DIRECTION_BOTH, NULL, @@ -124,10 +124,12 @@ main (int argc, GNUNET_log_setup ("test-bank-api-twisted", "DEBUG", NULL); - if (NULL == (bank_url = TALER_TESTING_prepare_bank (CONFIG_FILE))) + if (NULL == (bank_url = TALER_TESTING_prepare_bank + (CONFIG_FILE))) return 77; - if (NULL == (bankd = TALER_TESTING_run_bank (CONFIG_FILE))) + if (NULL == (bankd = TALER_TESTING_run_bank + (CONFIG_FILE, bank_url))) return 77; if (NULL == (twister_url = TALER_TESTING_prepare_twister diff --git a/src/bank-lib/testing_api_helpers.c b/src/bank-lib/testing_api_helpers.c index 99b0e8c7c..d890ea4eb 100644 --- a/src/bank-lib/testing_api_helpers.c +++ b/src/bank-lib/testing_api_helpers.c @@ -57,11 +57,63 @@ struct TALER_BANK_AuthenticationData AUTHS[] = { * be started. */ struct GNUNET_OS_Process * -TALER_TESTING_run_bank (const char *config_filename) +TALER_TESTING_run_bank (const char *config_filename, + const char *bank_url) { + /* to fetch: dbname+serving_method+base_url */ + + struct GNUNET_OS_Process *bank_proc; unsigned int iter; + char *wget_cmd; + char *database; + char *serve_cfg; + char *serve_arg; + struct GNUNET_CONFIGURATION_Handle *cfg; + + + cfg = GNUNET_CONFIGURATION_create (); + if (GNUNET_OK != + GNUNET_CONFIGURATION_load (cfg, + config_filename)) + { + GNUNET_break (0); + GNUNET_CONFIGURATION_destroy (cfg); + exit (77); + } + + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "bank", + "database", + &database)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, + "bank", + "database"); + GNUNET_break (0); + GNUNET_CONFIGURATION_destroy (cfg); + exit (77); + } + + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "bank", + "serve", + &serve_cfg)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, + "bank", + "serve"); + GNUNET_break (0); + GNUNET_CONFIGURATION_destroy (cfg); + exit (77); + } + + serve_arg = "serve-http"; + if (0 != strcmp ("http", serve_cfg)) + serve_arg = "serve-uwsgi"; bank_proc = GNUNET_OS_start_process (GNUNET_NO, @@ -70,11 +122,16 @@ TALER_TESTING_run_bank (const char *config_filename) "taler-bank-manage", "taler-bank-manage", "-c", config_filename, - "--with-db=postgres:///talercheck", - "serve-http", NULL); + "--with-db", database, + serve_arg, NULL); if (NULL == bank_proc) BANK_FAIL (); + GNUNET_asprintf (&wget_cmd, + "wget -q -t 1 -T 1 %s" + " -o /dev/null -O /dev/null", + bank_url); + /* give child time to start and bind against the socket */ fprintf (stderr, "Waiting for `taler-bank-manage' to be ready"); @@ -96,9 +153,7 @@ TALER_TESTING_run_bank (const char *config_filename) sleep (1); iter++; } - /*FIXME: no hardcode port*/ - while (0 != system ("wget -q -t 1 -T 1 http://127.0.0.1:8081/" \ - " -o /dev/null -O /dev/null")); + while (0 != system (wget_cmd)); fprintf (stderr, "\n"); return bank_proc; diff --git a/src/include/taler_testing_bank_lib.h b/src/include/taler_testing_bank_lib.h index 87187a733..1461d7acc 100644 --- a/src/include/taler_testing_bank_lib.h +++ b/src/include/taler_testing_bank_lib.h @@ -62,7 +62,8 @@ * be started. */ struct GNUNET_OS_Process * -TALER_TESTING_run_bank (const char *config_filename); +TALER_TESTING_run_bank (const char *config_filename, + const char *bank_url); /** * Prepare the bank execution. Check if the port is available -- cgit v1.2.3