summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-12-16 15:05:43 +0100
committerChristian Grothoff <christian@grothoff.org>2020-12-16 15:05:43 +0100
commite0497239e90df63eaee085a45488e9ff3ee799bc (patch)
tree031050d54b0c7d9a187ba3fc02e0dfe4d8a143a7
parent0336e62ccaf32854aa3133bcb44587d746573dfd (diff)
downloadexchange-e0497239e90df63eaee085a45488e9ff3ee799bc.tar.gz
exchange-e0497239e90df63eaee085a45488e9ff3ee799bc.tar.bz2
exchange-e0497239e90df63eaee085a45488e9ff3ee799bc.zip
adapt tests to run without keyup tool
-rw-r--r--src/testing/test_exchange_management_api.c2
-rw-r--r--src/testing/testing_api_cmd_exec_keyup.c236
-rw-r--r--src/testing/testing_api_cmd_revoke.c4
-rw-r--r--src/testing/testing_api_cmd_revoke_denom_key.c4
-rw-r--r--src/testing/testing_api_cmd_revoke_sign_key.c4
-rw-r--r--src/testing/testing_api_helpers_exchange.c224
6 files changed, 12 insertions, 462 deletions
diff --git a/src/testing/test_exchange_management_api.c b/src/testing/test_exchange_management_api.c
index b53926fd..e2d1b822 100644
--- a/src/testing/test_exchange_management_api.c
+++ b/src/testing/test_exchange_management_api.c
@@ -170,7 +170,7 @@ main (int argc,
&bc))
return 77;
TALER_TESTING_cleanup_files (CONFIG_FILE);
- /* @helpers. Run keyup, create tables, ... Note: it
+ /* @helpers. Create tables, ... Note: it
* fetches the port number from config in order to see
* if it's available. */
switch (TALER_TESTING_prepare_exchange (CONFIG_FILE,
diff --git a/src/testing/testing_api_cmd_exec_keyup.c b/src/testing/testing_api_cmd_exec_keyup.c
deleted file mode 100644
index 7a0b36d1..00000000
--- a/src/testing/testing_api_cmd_exec_keyup.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2018 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- TALER is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with TALER; see the file COPYING. If not,
- see <http://www.gnu.org/licenses/>
-*/
-
-/**
- * @file testing/testing_api_cmd_exec_keyup.c
- * @brief run the taler-exchange-keyup command
- * @author Marcello Stanisci
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include "taler_json_lib.h"
-#include <gnunet/gnunet_curl_lib.h>
-#include "taler_signatures.h"
-#include "taler_testing_lib.h"
-
-
-/**
- * State for a "keyup" CMD.
- */
-struct KeyupState
-{
-
- /**
- * Process for the "keyup" command.
- */
- struct GNUNET_OS_Process *keyup_proc;
-
- /**
- * Configuration file used by the command.
- */
- const char *config_filename;
-
- /**
- * If GNUNET_YES, then the fake @e now value will be
- * passed to taler-exchange-keyup via the --time
- * option.
- */
- unsigned int with_now;
-
- /**
- * User-provided fake now.
- */
- struct GNUNET_TIME_Absolute now;
-};
-
-
-/**
- * Run the command; calls the `taler-exchange-keyup' program.
- *
- * @param cls closure.
- * @param cmd the commaind being run.
- * @param is interpreter state.
- */
-static void
-keyup_run (void *cls,
- const struct TALER_TESTING_Command *cmd,
- struct TALER_TESTING_Interpreter *is)
-{
- struct KeyupState *ks = cls;
-
- if (GNUNET_YES == ks->with_now)
- {
- ks->keyup_proc
- = GNUNET_OS_start_process
- (GNUNET_OS_INHERIT_STD_ALL,
- NULL, NULL, NULL,
- "taler-exchange-keyup",
- "taler-exchange-keyup",
- "-c", ks->config_filename,
- "-o", "auditor.in",
- "--time",
- GNUNET_STRINGS_absolute_time_to_string (ks->now),
- NULL);
- }
- else
- ks->keyup_proc
- = GNUNET_OS_start_process
- (GNUNET_OS_INHERIT_STD_ALL,
- NULL, NULL, NULL,
- "taler-exchange-keyup",
- "taler-exchange-keyup",
- "-c", ks->config_filename,
- "-o", "auditor.in",
- NULL);
-
- if (NULL == ks->keyup_proc)
- {
- GNUNET_break (0);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
-
- /* This function does not tell whether the command
- * succeeded or not! */
- TALER_TESTING_wait_for_sigchld (is);
-}
-
-
-/**
- * Free the state of a "keyup" CMD, and possibly kills its
- * process if it did not terminate correctly.
- *
- * @param cls closure.
- * @param cmd the command being freed.
- */
-static void
-keyup_cleanup (void *cls,
- const struct TALER_TESTING_Command *cmd)
-{
- struct KeyupState *ks = cls;
-
- (void) cmd;
- if (NULL != ks->keyup_proc)
- {
- GNUNET_break (0 ==
- GNUNET_OS_process_kill (ks->keyup_proc,
- SIGKILL));
- GNUNET_OS_process_wait (ks->keyup_proc);
- GNUNET_OS_process_destroy (ks->keyup_proc);
- ks->keyup_proc = NULL;
- }
- GNUNET_free (ks);
-}
-
-
-/**
- * Offer "keyup" CMD internal data to other commands.
- *
- * @param cls closure.
- * @param[out] ret result
- * @param trait name of the trait.
- * @param index index number of the object to offer.
- *
- * @return #GNUNET_OK on success.
- */
-static int
-keyup_traits (void *cls,
- const void **ret,
- const char *trait,
- unsigned int index)
-{
- struct KeyupState *ks = cls;
- struct TALER_TESTING_Trait traits[] = {
- TALER_TESTING_make_trait_process (0, &ks->keyup_proc),
- TALER_TESTING_trait_end ()
- };
-
- return TALER_TESTING_get_trait (traits,
- ret,
- trait,
- index);
-}
-
-
-/**
- * Make the "keyup" CMD, with "--timestamp" option.
- *
- * @param label command label.
- * @param config_filename configuration filename.
- * @param now Unix timestamp representing the fake "now".
- *
- * @return the command.
- */
-struct TALER_TESTING_Command
-TALER_TESTING_cmd_exec_keyup_with_now
- (const char *label,
- const char *config_filename,
- struct GNUNET_TIME_Absolute now)
-{
- struct KeyupState *ks;
-
- ks = GNUNET_new (struct KeyupState);
- ks->config_filename = config_filename;
- ks->now = now;
- ks->with_now = GNUNET_YES;
- {
- struct TALER_TESTING_Command cmd = {
- .cls = ks,
- .label = label,
- .run = &keyup_run,
- .cleanup = &keyup_cleanup,
- .traits = &keyup_traits
- };
-
- return cmd;
- }
-}
-
-
-/**
- * Make the "keyup" CMD.
- *
- * @param label command label.
- * @param config_filename configuration filename.
- *
- * @return the command.
- */
-struct TALER_TESTING_Command
-TALER_TESTING_cmd_exec_keyup (const char *label,
- const char *config_filename)
-{
- struct KeyupState *ks;
-
- ks = GNUNET_new (struct KeyupState);
- ks->config_filename = config_filename;
- {
- struct TALER_TESTING_Command cmd = {
- .cls = ks,
- .label = label,
- .run = &keyup_run,
- .cleanup = &keyup_cleanup,
- .traits = &keyup_traits
- };
-
- return cmd;
- }
-}
-
-
-/* end of testing_api_cmd_exec_keyup.c */
diff --git a/src/testing/testing_api_cmd_revoke.c b/src/testing/testing_api_cmd_revoke.c
index f17f351e..9f904454 100644
--- a/src/testing/testing_api_cmd_revoke.c
+++ b/src/testing/testing_api_cmd_revoke.c
@@ -123,9 +123,7 @@ revoke_traits (void *cls,
/**
- * Run the "revoke" command. The core of the function
- * is to call the "keyup" utility passing it the base32
- * encoding of the denomination to revoke.
+ * Run the "revoke" command.
*
* @param cls closure.
* @param cmd the command to execute.
diff --git a/src/testing/testing_api_cmd_revoke_denom_key.c b/src/testing/testing_api_cmd_revoke_denom_key.c
index fd7695bc..7c77c356 100644
--- a/src/testing/testing_api_cmd_revoke_denom_key.c
+++ b/src/testing/testing_api_cmd_revoke_denom_key.c
@@ -143,9 +143,7 @@ revoke_traits (void *cls,
/**
- * Run the "revoke" command. The core of the function
- * is to call the "keyup" utility passing it the base32
- * encoding of the denomination to revoke.
+ * Run the "revoke" command for a denomination key.
*
* @param cls closure.
* @param cmd the command to execute.
diff --git a/src/testing/testing_api_cmd_revoke_sign_key.c b/src/testing/testing_api_cmd_revoke_sign_key.c
index 599fe180..9745d728 100644
--- a/src/testing/testing_api_cmd_revoke_sign_key.c
+++ b/src/testing/testing_api_cmd_revoke_sign_key.c
@@ -143,9 +143,7 @@ revoke_traits (void *cls,
/**
- * Run the "revoke" command. The core of the function
- * is to call the "keyup" utility passing it the base32
- * encoding of the signination to revoke.
+ * Run the "revoke" command for a signing key.
*
* @param cls closure.
* @param cmd the command to execute.
diff --git a/src/testing/testing_api_helpers_exchange.c b/src/testing/testing_api_helpers_exchange.c
index a12998e2..043bf8a0 100644
--- a/src/testing/testing_api_helpers_exchange.c
+++ b/src/testing/testing_api_helpers_exchange.c
@@ -30,11 +30,6 @@
#include "taler_testing_lib.h"
-/**
- * Remove files from previous runs
- *
- * @param config_name configuration filename.
- */
void
TALER_TESTING_cleanup_files (const char *config_name)
{
@@ -46,13 +41,6 @@ TALER_TESTING_cleanup_files (const char *config_name)
}
-/**
- * Remove files from previous runs
- *
- * @param cls NULL
- * @param cfg configuration
- * @return #GNUNET_OK on success
- */
int
TALER_TESTING_cleanup_files_cfg (void *cls,
const struct GNUNET_CONFIGURATION_Handle *cfg)
@@ -97,88 +85,6 @@ TALER_TESTING_cleanup_files_cfg (void *cls,
}
-/**
- * Run `taler-exchange-keyup`.
- *
- * @param config_filename configuration file to use
- * @param output_filename where to write the output for the auditor
- * @return #GNUNET_OK on success
- */
-int
-TALER_TESTING_run_keyup (const char *config_filename,
- const char *output_filename)
-{
- struct GNUNET_OS_Process *proc;
-
- proc = GNUNET_OS_start_process (GNUNET_OS_INHERIT_STD_ALL,
- NULL, NULL, NULL,
- "taler-exchange-keyup",
- "taler-exchange-keyup",
- "-c", config_filename,
- "-o", output_filename,
- NULL);
- if (NULL == proc)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed to run `taler-exchange-keyup`, is your PATH correct?\n");
- return GNUNET_SYSERR;
- }
- GNUNET_OS_process_wait (proc);
- GNUNET_OS_process_destroy (proc);
- return GNUNET_OK;
-}
-
-
-/**
- * Run `taler-auditor-sign`.
- *
- * @param config_filename configuration file to use
- * @param exchange_master_pub master public key of the exchange
- * @param auditor_base_url what is the base URL of the auditor
- * @param signdata_in where is the information from taler-exchange-keyup
- * @param signdata_out where to write the output for the exchange
- * @return #GNUNET_OK on success
- */
-int
-TALER_TESTING_run_auditor_sign (const char *config_filename,
- const char *exchange_master_pub,
- const char *auditor_base_url,
- const char *signdata_in,
- const char *signdata_out)
-{
- struct GNUNET_OS_Process *proc;
-
- proc = GNUNET_OS_start_process (GNUNET_OS_INHERIT_STD_ALL,
- NULL, NULL, NULL,
- "taler-auditor-sign",
- "taler-auditor-sign",
- "-c", config_filename,
- "-u", auditor_base_url,
- "-m", exchange_master_pub,
- "-r", signdata_in,
- "-o", signdata_out,
- NULL);
- if (NULL == proc)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed to run `taler-auditor-sign`, is your PATH correct?\n");
- return GNUNET_SYSERR;
- }
- GNUNET_OS_process_wait (proc);
- GNUNET_OS_process_destroy (proc);
- return GNUNET_OK;
-}
-
-
-/**
- * Run `taler-auditor-exchange`.
- *
- * @param config_filename configuration file to use
- * @param exchange_master_pub master public key of the exchange
- * @param exchange_base_url what is the base URL of the exchange
- * @param do_remove #GNUNET_NO to add exchange, #GNUNET_YES to remove
- * @return #GNUNET_OK on success
- */
int
TALER_TESTING_run_auditor_exchange (const char *config_filename,
const char *exchange_master_pub,
@@ -228,12 +134,6 @@ TALER_TESTING_run_auditor_exchange (const char *config_filename,
}
-/**
- * Run `taler-exchange-dbinit -r` (reset exchange database).
- *
- * @param config_filename configuration file to use
- * @return #GNUNET_OK on success
- */
int
TALER_TESTING_exchange_db_reset (const char *config_filename)
{
@@ -285,12 +185,6 @@ TALER_TESTING_exchange_db_reset (const char *config_filename)
}
-/**
- * Run `taler-auditor-dbinit -R` (reset auditor database).
- *
- * @param config_filename configuration file to use
- * @return #GNUNET_OK on success
- */
int
TALER_TESTING_auditor_db_reset (const char *config_filename)
{
@@ -359,12 +253,6 @@ struct SignInfo
const char *config_filename;
/**
- * Must be set to input file with the data to be signed before
- * calling #TALER_TESTING_sign_keys_for_exchange.
- */
- const char *auditor_sign_input_filename;
-
- /**
* Did we reset the database?
*/
int db_reset;
@@ -384,8 +272,6 @@ sign_keys_for_exchange (void *cls,
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
struct SignInfo *si = cls;
- char *test_home_dir;
- char *signed_keys_out;
char *exchange_master_pub;
int ret;
@@ -408,7 +294,6 @@ sign_keys_for_exchange (void *cls,
si->ec->exchange_url = NULL;
return GNUNET_NO;
}
-
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg,
"auditor",
@@ -430,24 +315,6 @@ sign_keys_for_exchange (void *cls,
goto fail;
}
if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_filename (cfg,
- "paths",
- "TALER_TEST_HOME",
- &test_home_dir))
- {
- GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
- "paths",
- "TALER_TEST_HOME");
- ret = GNUNET_SYSERR;
- goto fail;
- }
-
- GNUNET_asprintf (&signed_keys_out,
- "%s/.local/share/taler/auditors/auditor.out",
- test_home_dir);
- GNUNET_free (test_home_dir);
-
- if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg,
"exchange",
"MASTER_PUBLIC_KEY",
@@ -456,7 +323,6 @@ sign_keys_for_exchange (void *cls,
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
"exchange",
"MASTER_PUBLIC_KEY");
- GNUNET_free (signed_keys_out);
ret = GNUNET_SYSERR;
goto fail;
}
@@ -467,25 +333,9 @@ sign_keys_for_exchange (void *cls,
GNUNET_NO)) &&
(GNUNET_YES == si->db_reset) )
{
- GNUNET_free (signed_keys_out);
- ret = GNUNET_NO;
- goto fail;
- }
-
- if ( (GNUNET_OK !=
- TALER_TESTING_run_auditor_sign (si->config_filename,
- exchange_master_pub,
- si->ec->auditor_url,
- si->auditor_sign_input_filename,
- signed_keys_out)) &&
- (GNUNET_YES == si->db_reset) )
- {
- GNUNET_free (signed_keys_out);
- GNUNET_free (exchange_master_pub);
ret = GNUNET_NO;
goto fail;
}
- GNUNET_free (signed_keys_out);
GNUNET_free (exchange_master_pub);
return GNUNET_OK;
fail:
@@ -499,8 +349,7 @@ fail:
/**
* Prepare launching an exchange. Checks that the configured
- * port is available, runs taler-exchange-keyup,
- * taler-auditor-sign and taler-exchange-dbinit. Does NOT
+ * port is available, runs taler-exchange-dbinit. Does NOT
* launch the exchange process itself.
*
* @param config_filename configuration file to use
@@ -517,14 +366,9 @@ TALER_TESTING_prepare_exchange (const char *config_filename,
struct SignInfo si = {
.config_filename = config_filename,
.ec = ec,
- .auditor_sign_input_filename = "auditor.in",
.db_reset = reset_db
};
- if (GNUNET_OK !=
- TALER_TESTING_run_keyup (config_filename,
- si.auditor_sign_input_filename))
- return GNUNET_NO;
if (GNUNET_YES == reset_db)
{
if (GNUNET_OK !=
@@ -683,18 +527,6 @@ TALER_TESTING_wait_auditor_ready (const char *base_url)
}
-/**
- * Initialize scheduler loop and curl context for the testcase
- * including starting and stopping the exchange using the given
- * configuration file.
- *
- * @param main_cb routine containing all the commands to run.
- * @param main_cb_cls closure for @a main_cb, typically NULL.
- * @param config_file configuration file for the test-suite.
- * @return #GNUNET_OK if all is okay, != #GNUNET_OK otherwise.
- * non-#GNUNET_OK codes are #GNUNET_SYSERR most of the
- * time.
- */
int
TALER_TESTING_setup_with_exchange (TALER_TESTING_Main main_cb,
void *main_cb_cls,
@@ -802,15 +634,6 @@ start_helpers (const char *config_filename,
}
-/**
- * Initialize scheduler loop and curl context for the test case
- * including starting and stopping the exchange using the given
- * configuration file.
- *
- * @param cls must be a `struct TALER_TESTING_SetupContext *`
- * @param cfg configuration to use.
- * @return #GNUNET_OK if no errors occurred.
- */
int
TALER_TESTING_setup_with_exchange_cfg (
void *cls,
@@ -921,20 +744,10 @@ TALER_TESTING_setup_with_exchange_cfg (
}
-/**
- * Initialize scheduler loop and curl context for the test case
- * including starting and stopping the auditor and exchange using the
- * given configuration file.
- *
- * @param cls must be a `struct TALER_TESTING_SetupContext *`
- * @param cfg configuration to use.
- * @return #GNUNET_OK if no errors occurred.
- */
int
-TALER_TESTING_setup_with_auditor_and_exchange_cfg (void *cls,
- const struct
- GNUNET_CONFIGURATION_Handle *
- cfg)
+TALER_TESTING_setup_with_auditor_and_exchange_cfg (
+ void *cls,
+ const struct GNUNET_CONFIGURATION_Handle *cfg)
{
const struct TALER_TESTING_SetupContext *setup_ctx = cls;
struct GNUNET_OS_Process *auditord;
@@ -1027,21 +840,6 @@ TALER_TESTING_setup_with_auditor_and_exchange_cfg (void *cls,
}
-/**
- * Initialize scheduler loop and curl context for the test case
- * including starting and stopping the auditor and exchange using the
- * given configuration file.
- *
- * @param main_cb main method.
- * @param main_cb_cls main method closure.
- * @param config_file configuration file name. Is is used
- * by both this function and the exchange itself. In the
- * first case it gives out the exchange port number and
- * the exchange base URL so as to check whether the port
- * is available and the exchange responds when requested
- * at its base URL.
- * @return #GNUNET_OK if no errors occurred.
- */
int
TALER_TESTING_setup_with_auditor_and_exchange (TALER_TESTING_Main main_cb,
void *main_cb_cls,
@@ -1053,19 +851,13 @@ TALER_TESTING_setup_with_auditor_and_exchange (TALER_TESTING_Main main_cb,
.main_cb_cls = main_cb_cls
};
- return GNUNET_CONFIGURATION_parse_and_run (config_file,
- &
- TALER_TESTING_setup_with_auditor_and_exchange_cfg,
- &setup_ctx);
+ return GNUNET_CONFIGURATION_parse_and_run (
+ config_file,
+ &TALER_TESTING_setup_with_auditor_and_exchange_cfg,
+ &setup_ctx);
}
-/**
- * Test port in URL string for availability.
- *
- * @param url URL to extract port from, 80 is default
- * @return #GNUNET_OK if the port is free
- */
int
TALER_TESTING_url_port_free (const char *url)
{