diff options
Diffstat (limited to 'src/testing/testing_api_helpers.c')
-rw-r--r-- | src/testing/testing_api_helpers.c | 161 |
1 files changed, 29 insertions, 132 deletions
diff --git a/src/testing/testing_api_helpers.c b/src/testing/testing_api_helpers.c index ea7f2dea..dbc7a6eb 100644 --- a/src/testing/testing_api_helpers.c +++ b/src/testing/testing_api_helpers.c @@ -1,4 +1,3 @@ - /* This file is part of TALER Copyright (C) 2014-2018 Taler Systems SA @@ -22,153 +21,51 @@ * @file testing_api_helpers.c * @brief helper functions for test library. * @author Christian Grothoff - * @author Marcello Stanisci */ - #include "platform.h" #include <taler/taler_exchange_service.h> #include <taler/taler_testing_lib.h> #include "taler_merchant_testing_lib.h" -struct GNUNET_OS_Process * -TALER_TESTING_run_merchant (const char *config_filename, - const char *merchant_url) -{ - struct GNUNET_OS_Process *merchant_proc; - unsigned int iter; - char *wget_cmd; - - merchant_proc - = GNUNET_OS_start_process (GNUNET_OS_INHERIT_STD_ALL, - NULL, NULL, NULL, - "taler-merchant-httpd", - "taler-merchant-httpd", - "--log=INFO", - "-c", config_filename, - NULL); - if (NULL == merchant_proc) - MERCHANT_FAIL (); - - GNUNET_asprintf (&wget_cmd, - "wget -q -t 1 -T 1" - " --header='Authorization: ApiKey sandbox'" - " %s" - " -o /dev/null -O /dev/null", - merchant_url); - - /* give child time to start and bind against the socket */ - fprintf (stderr, - "Waiting for `taler-merchant-httpd' to be ready\n"); - iter = 0; - do - { - if (10 == iter) - { - fprintf (stderr, - "Failed to launch" - " `taler-merchant-httpd' (or `wget')\n"); - GNUNET_OS_process_kill (merchant_proc, - SIGTERM); - GNUNET_OS_process_wait (merchant_proc); - GNUNET_OS_process_destroy (merchant_proc); - MERCHANT_FAIL (); - } - fprintf (stderr, ".\n"); - sleep (1); - iter++; - } - while (0 != system (wget_cmd)); - GNUNET_free (wget_cmd); - fprintf (stderr, "\n"); - - return merchant_proc; -} - - char * -TALER_TESTING_prepare_merchant (const char *config_filename) +TALER_MERCHANT_TESTING_extract_host (const char *merchant_url) { - struct GNUNET_CONFIGURATION_Handle *cfg; - unsigned long long port; - struct GNUNET_OS_Process *dbinit_proc; - enum GNUNET_OS_ProcessStatusType type; - unsigned long code; - char *base_url; + const char *hosts = strchr (merchant_url, '/'); + const char *hend; + const char *pstr; + const char *pend; + char *host; - cfg = GNUNET_CONFIGURATION_create (); - if (GNUNET_OK != - GNUNET_CONFIGURATION_load (cfg, - config_filename)) - MERCHANT_FAIL (); - if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_number (cfg, - "merchant", - "PORT", - &port)) + if (NULL == hosts) { - GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, - "merchant", - "PORT"); - GNUNET_CONFIGURATION_destroy (cfg); - MERCHANT_FAIL (); + GNUNET_break (0); + return NULL; } - - GNUNET_CONFIGURATION_destroy (cfg); - - if (GNUNET_OK != - GNUNET_NETWORK_test_port_free (IPPROTO_TCP, - (uint16_t) port)) + if (hosts[1] != '/') { - fprintf (stderr, - "Required port %llu not available, skipping.\n", - port); - MERCHANT_FAIL (); + GNUNET_break (0); + return NULL; } - - /* DB preparation */ - if (NULL == (dbinit_proc = GNUNET_OS_start_process ( - GNUNET_OS_INHERIT_STD_ALL, - NULL, NULL, NULL, - "taler-merchant-dbinit", - "taler-merchant-dbinit", - "-c", config_filename, - "-r", - NULL))) + hosts += 2; + pstr = strchr (hosts, ':'); + if (NULL == pstr) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to run taler-merchant-dbinit. Check your PATH.\n"); - MERCHANT_FAIL (); + hend = &hosts[strlen (hosts)]; + pstr = "80"; + pend = &pstr[2]; } - - if (GNUNET_SYSERR == - GNUNET_OS_process_wait_status (dbinit_proc, - &type, - &code)) + else { - GNUNET_OS_process_destroy (dbinit_proc); - MERCHANT_FAIL (); + hend = pstr; + pstr++; + pend = strchr (pstr, '/'); } - if ( (type == GNUNET_OS_PROCESS_EXITED) && - (0 != code) ) - { - fprintf (stderr, - "Failed to setup database\n"); - MERCHANT_FAIL (); - } - if ( (type != GNUNET_OS_PROCESS_EXITED) || - (0 != code) ) - { - fprintf (stderr, - "Unexpected error running" - " `taler-merchant-dbinit'!\n"); - MERCHANT_FAIL (); - } - GNUNET_OS_process_destroy (dbinit_proc); - - - GNUNET_asprintf (&base_url, - "http://localhost:%llu/", - port); - return base_url; + GNUNET_asprintf (&host, + "%.*s:%.*s", + (int) (hend - hosts), + hosts, + (int) (pend - pstr), + pstr); + return host; } |