diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index f4ccb63d6..5dfd9059c 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -258,6 +258,7 @@ test_taler_exchange_aggregator_postgres_LDADD = \ $(top_builddir)/src/bank-lib/libtalerfakebank.la \ $(top_builddir)/src/json/libtalerjson.la \ $(top_builddir)/src/util/libtalerutil.la \ + $(top_builddir)/src/lib/libtalertesting.la \ -lmicrohttpd \ -lgnunetutil \ -lgnunetjson \ diff --git a/src/lib/test_taler_exchange_aggregator.c b/src/lib/test_taler_exchange_aggregator.c index a5f03e1d9..01203ab86 100644 --- a/src/lib/test_taler_exchange_aggregator.c +++ b/src/lib/test_taler_exchange_aggregator.c @@ -26,8 +26,19 @@ #include "taler_exchangedb_plugin.h" #include #include "taler_fakebank_lib.h" +#include "taler_testing_lib.h" +/** + * Helper structure to keep exchange configuration values. + */ +static struct TALER_TESTING_ExchangeConfiguration ec; + +/** + * Bank configuration data. + */ +static struct TALER_TESTING_BankConfiguration bc; + /** * Commands for the interpreter. */ @@ -252,16 +263,6 @@ static struct GNUNET_CRYPTO_RsaPublicKey *coin_pub; */ static struct TALER_FAKEBANK_Handle *fb; - -/** - * Interprets the commands from the test program. - * - * @param cls the `struct State` of the interpreter - */ -static void -interpreter (void *cls); - - /** * Task triggered whenever we are to shutdown. * @@ -319,6 +320,7 @@ shutdown_action (void *cls) plugin = NULL; } +#if 0 /** * Task triggered whenever we receive a SIGCHLD (child @@ -349,7 +351,7 @@ maint_child_death (void *cls) interpreter (state); } - +#endif /** * Setup (fake) information about a coin used in deposit. @@ -511,6 +513,7 @@ fail (struct Command *cmd) * * @param cls the `struct State` of the interpreter */ +#if 0 static void interpreter (void *cls) { @@ -613,12 +616,13 @@ interpreter (void *cls) } } } - +#endif /** * Contains the test program. Here each step of the testcase * is defined. */ +#if 0 static void run_test () { @@ -1155,15 +1159,59 @@ run_test () int_task = GNUNET_SCHEDULER_add_now (&interpreter, &state); } +#endif +/** + * @return GNUNET_NO if database could not be prepared, + * otherwise GNUNET_OK + */ +static int +prepare_database (const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + + // connect to the database. + plugin = TALER_EXCHANGEDB_plugin_load (cfg); + if (NULL == plugin) + { + GNUNET_break (0); + result = 77; + return GNUNET_NO; + } + + if (GNUNET_OK != + plugin->create_tables (plugin->cls)) + { + GNUNET_break (0); + TALER_EXCHANGEDB_plugin_unload (plugin); + plugin = NULL; + result = 77; + return GNUNET_NO; + } + + session = plugin->get_session (plugin->cls); + GNUNET_assert (NULL != session); + + return GNUNET_OK; +} + + +static void +run (void *cls, + struct TALER_TESTING_Interpreter *is) +{ + if (GNUNET_OK != prepare_database (is->cfg)) + return; + +} /** * Main function that will be run by the scheduler. * * @param cls closure with configuration */ +#if 0 static void -run (void *cls) +OLDrun (void *cls) { struct GNUNET_CONFIGURATION_Handle *cfg = cls; struct TALER_EXCHANGEDB_DenominationKeyInformationP issue; @@ -1231,7 +1279,7 @@ run (void *cls) } run_test (); } - +#endif /** * Signal handler called for SIGCHLD. Triggers the @@ -1250,7 +1298,6 @@ sighandler_child_death () errno = old_errno; /* restore errno */ } - int main (int argc, char *const argv[]) @@ -1261,7 +1308,11 @@ main (int argc, struct GNUNET_CONFIGURATION_Handle *cfg; struct GNUNET_SIGNAL_Context *shc_chld; - result = -1; + + /* these might get in the way */ + unsetenv ("XDG_DATA_HOME"); + unsetenv ("XDG_CONFIG_HOME"); + if (NULL == (plugin_name = strrchr (argv[0], (int) '-'))) { GNUNET_break (0); @@ -1274,65 +1325,44 @@ main (int argc, (void) GNUNET_asprintf (&config_filename, "%s.conf", testname); - /* these might get in the way */ - unsetenv ("XDG_DATA_HOME"); - unsetenv ("XDG_CONFIG_HOME"); + GNUNET_log_setup ("test_taler_exchange_aggregator", - "WARNING", + "DEBUG", NULL); - proc = GNUNET_OS_start_process (GNUNET_NO, - GNUNET_OS_INHERIT_STD_ALL, - NULL, NULL, NULL, - "taler-exchange-keyup", - "taler-exchange-keyup", - "-c", config_filename, - NULL); - if (NULL == proc) + + + + TALER_TESTING_cleanup_files (config_filename); + if (GNUNET_OK != TALER_TESTING_prepare_exchange (config_filename, + &ec)) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to run `taler-exchange-keyup`, is your PATH correct?\n"); + TALER_LOG_WARNING ("Could not prepare the exchange (keyup, ..)\n"); return 77; } - GNUNET_OS_process_wait (proc); - GNUNET_OS_process_destroy (proc); - if (GNUNET_OK != - GNUNET_NETWORK_test_port_free (IPPROTO_TCP, - 8082)) + + if (GNUNET_OK != TALER_TESTING_prepare_fakebank (config_filename, + "account-1", + &bc)) { - fprintf (stderr, - "Required port %u not available, skipping.\n", - (unsigned int) 8082); + TALER_LOG_WARNING ("Could not prepare the fakebank\n"); return 77; } - cfg = GNUNET_CONFIGURATION_create (); - if (GNUNET_OK != - GNUNET_CONFIGURATION_parse (cfg, - config_filename)) - { - GNUNET_break (0); - GNUNET_free (config_filename); - GNUNET_free (testname); - return 2; - } - sigpipe = GNUNET_DISK_pipe (GNUNET_NO, GNUNET_NO, - GNUNET_NO, GNUNET_NO); - GNUNET_assert (NULL != sigpipe); - shc_chld = - GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD, - &sighandler_child_death); + coin_pk = GNUNET_CRYPTO_rsa_private_key_create (1024); coin_pub = GNUNET_CRYPTO_rsa_private_key_get_public (coin_pk); - GNUNET_SCHEDULER_run (&run, - cfg); + + + result = TALER_TESTING_setup (&run, + NULL, + config_filename, + NULL, // no exchange process handle. + GNUNET_NO); // do not try to connect to the exchange + GNUNET_CRYPTO_rsa_private_key_free (coin_pk); GNUNET_CRYPTO_rsa_public_key_free (coin_pub); - GNUNET_SIGNAL_handler_uninstall (shc_chld); - shc_chld = NULL; - GNUNET_DISK_pipe_close (sigpipe); - GNUNET_CONFIGURATION_destroy (cfg); GNUNET_free (config_filename); GNUNET_free (testname); - return result; + return GNUNET_OK == result ? 0 : 1; } diff --git a/src/lib/testing_api_cmd_insert_deposit.c b/src/lib/testing_api_cmd_insert_deposit.c index f83e98232..0e7ea661d 100644 --- a/src/lib/testing_api_cmd_insert_deposit.c +++ b/src/lib/testing_api_cmd_insert_deposit.c @@ -81,7 +81,7 @@ insert_deposit_run (void *cls, const struct TALER_TESTING_Command *cmd, struct TALER_TESTING_Interpreter *is) { - struct InsertDepositState *ks = cls; + struct InsertDepositState *ids = cls; // TODO } @@ -118,7 +118,7 @@ insert_deposit_traits (void *cls, const char *trait, unsigned int index) { - struct AuditorDbinitState *ks = cls; + struct InsertDepositState *ids = cls; struct TALER_TESTING_Trait traits[] = { // FIXME: needed? TALER_TESTING_trait_end () @@ -154,17 +154,17 @@ TALER_TESTING_cmd_insert_deposit (const char *label, const char *deposit_fee) { struct TALER_TESTING_Command cmd; - struct InsertDepositState *ds; + struct InsertDepositState *ids; - ds = GNUNET_new (struct InsertDepositState); - ds->config_filename = config_filename; - ds->merchant_name = merchant_name; - ds->merchant_account = merchant_account; - ds->wire_deadline = wire_deadline; - ds->amount_with_fee = amount_with_fee; - ds->deposit_fee = deposit_fee; + ids = GNUNET_new (struct InsertDepositState); + ids->config_filename = config_filename; + ids->merchant_name = merchant_name; + ids->merchant_account = merchant_account; + ids->wire_deadline = wire_deadline; + ids->amount_with_fee = amount_with_fee; + ids->deposit_fee = deposit_fee; - cmd.cls = ds; + cmd.cls = ids; cmd.label = label; cmd.run = &insert_deposit_run; cmd.cleanup = &insert_deposit_cleanup;