add variant that allows us to control the timeout

This commit is contained in:
Christian Grothoff 2018-08-10 22:29:43 +02:00
parent e0935af764
commit abb84bd065
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 61 additions and 23 deletions

View File

@ -204,9 +204,7 @@ TALER_TESTING_interpreter_fail
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed at command `%s'\n",
cmd->label);
is->result = GNUNET_SYSERR;
// this cleans up too.
GNUNET_SCHEDULER_shutdown ();
}
@ -332,6 +330,8 @@ do_timeout (void *cls)
struct TALER_TESTING_Interpreter *is = cls;
is->timeout_task = NULL;
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Terminating test due to timeout\n");
GNUNET_SCHEDULER_shutdown ();
}
@ -437,13 +437,14 @@ TALER_TESTING_wait_for_sigchld
* defined into the "run" method that returns after
* having scheduled the test interpreter.
*
*
* @param is the interpreter state
* @param commands the list of command to execute
* @param timeout how long to wait
*/
void
TALER_TESTING_run (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands)
TALER_TESTING_run2 (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands,
struct GNUNET_TIME_Relative timeout)
{
unsigned int i;
/* get the number of commands */
@ -455,13 +456,35 @@ TALER_TESTING_run (struct TALER_TESTING_Interpreter *is,
commands,
sizeof (struct TALER_TESTING_Command) * i);
is->timeout_task = GNUNET_SCHEDULER_add_delayed
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 300),
&do_timeout, is);
(timeout,
&do_timeout,
is);
GNUNET_SCHEDULER_add_shutdown (&do_shutdown, is);
is->task = GNUNET_SCHEDULER_add_now (&interpreter_run, is);
}
/**
* Run the testsuite. Note, CMDs are copied into
* the interpreter state because they are _usually_
* defined into the "run" method that returns after
* having scheduled the test interpreter.
*
*
* @param is the interpreter state
* @param commands the list of command to execute
*/
void
TALER_TESTING_run (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands)
{
TALER_TESTING_run2 (is,
commands,
GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES,
5));
}
/**
* Information used by the wrapper around the main
* "run" method.
@ -529,15 +552,15 @@ cert_cb (void *cls,
if (NULL == keys)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Got NULL response for /keys\n");
}
else
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Got %d DK from /keys\n",
keys->num_denom_keys);
}
main_ctx->is->key_generation++;
main_ctx->is->keys = keys;
@ -596,8 +619,9 @@ main_wrapper_exchange_connect (void *cls)
char *exchange_url;
cfg = GNUNET_CONFIGURATION_create ();
if (GNUNET_OK != GNUNET_CONFIGURATION_load
(cfg, main_ctx->config_filename))
if (GNUNET_OK !=
GNUNET_CONFIGURATION_load (cfg,
main_ctx->config_filename))
return;
if (GNUNET_OK !=
@ -612,11 +636,11 @@ main_wrapper_exchange_connect (void *cls)
GNUNET_CONFIGURATION_destroy (cfg);
return;
}
GNUNET_assert ( NULL !=
(is->exchange = TALER_EXCHANGE_connect (is->ctx,
exchange_url,
cert_cb,
main_ctx)) );
GNUNET_assert (NULL !=
(is->exchange = TALER_EXCHANGE_connect (is->ctx,
exchange_url,
&cert_cb,
main_ctx)));
GNUNET_free (exchange_url);
GNUNET_CONFIGURATION_destroy (cfg);
}
@ -635,9 +659,8 @@ main_wrapper_exchange_connect (void *cls)
* signal to it, for example to let it know to reload the
* key state.. if NULL, the interpreter will run without
* trying to connect to the exchange first.
*
* @return GNUNET_OK if all is okay, != GNUNET_OK otherwise.
* non-GNUNET_OK codes are GNUNET_SYSERR most of the
* @return #GNUNET_OK if all is okay, != #GNUNET_OK otherwise.
* non-GNUNET_OK codes are #GNUNET_SYSERR most of the
* times.
*/
int
@ -657,7 +680,7 @@ TALER_TESTING_setup (TALER_TESTING_Main main_cb,
.config_filename = config_filename
};
struct GNUNET_SIGNAL_Context *shc_chld;
/* zero-ing the state */
memset (&is,
0,
sizeof (is));
@ -669,7 +692,8 @@ TALER_TESTING_setup (TALER_TESTING_Main main_cb,
(GNUNET_SIGCHLD, &sighandler_child_death);
is.ctx = GNUNET_CURL_init
(&GNUNET_CURL_gnunet_scheduler_reschedule, &is.rc);
(&GNUNET_CURL_gnunet_scheduler_reschedule,
&is.rc);
GNUNET_assert (NULL != is.ctx);
is.rc = GNUNET_CURL_gnunet_rc_create (is.ctx);

View File

@ -420,6 +420,20 @@ TALER_TESTING_run (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands);
/**
* Run the testsuite. Note, CMDs are copied into
* the interpreter state because they are _usually_
* defined into the "run" method that returns after
* having scheduled the test interpreter.
*
* @param is the interpreter state
* @param commands the list of command to execute
* @param timeout how long to wait
*/
void
TALER_TESTING_run2 (struct TALER_TESTING_Interpreter *is,
struct TALER_TESTING_Command *commands,
struct GNUNET_TIME_Relative timeout);
/**