retry instantly if /keys download fails during testcase startup
This commit is contained in:
parent
2d7e9bc5aa
commit
7663baf2e2
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"url": "payto://x-taler-bank/localhost:8082/2",
|
"url": "payto://x-taler-bank/localhost:8082/2",
|
||||||
"salt": "B9H7WG3A6881HNVK7C508EHMJ10Z0CEB21Z9047KXKMCZG67JK5M27EQNRW38KNPVXDYNYTX27PA34VSA8JN3NXJA0BX655WGJMM7B8",
|
"salt": "MHJ6P3XF2WEC6WA097H8N1MPCT37T7TBHJ3FDTRBPGX0JNQYHJW6D52J0269WS68WG04FMCD5C0E49YEW7R21EXKC7P1TYTJMVKXNZR",
|
||||||
"master_sig": "FCJAM149MFKTMD8XQ7S32TBD53VN97Y3BCXFXSGQ8DH94P18XXCPRA3Z9ZYBQ4JFFEPS4RE48ACS99MMM193QZ10M7MKGS2B685F030"
|
"master_sig": "ZGZVVR4S9PH9A494B15QSAYCX6NDVF735JN3426T7QQ77VK6QR971TQX71NXHR8N54RGC5GMC49YPK4RSFCJ2Z9GG1CWJ7MAEQSDC08"
|
||||||
}
|
}
|
@ -294,6 +294,7 @@ do_shutdown (void *cls)
|
|||||||
if (NULL != is->exchange)
|
if (NULL != is->exchange)
|
||||||
{
|
{
|
||||||
TALER_EXCHANGE_disconnect (is->exchange);
|
TALER_EXCHANGE_disconnect (is->exchange);
|
||||||
|
is->exchange = NULL;
|
||||||
}
|
}
|
||||||
if (NULL != is->task)
|
if (NULL != is->task)
|
||||||
{
|
{
|
||||||
@ -514,7 +515,7 @@ struct MainContext
|
|||||||
TALER_TESTING_Main main_cb;
|
TALER_TESTING_Main main_cb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closure for "run".
|
* Closure for @e main_cb.
|
||||||
*/
|
*/
|
||||||
void *main_cb_cls;
|
void *main_cb_cls;
|
||||||
|
|
||||||
@ -531,6 +532,11 @@ struct MainContext
|
|||||||
*/
|
*/
|
||||||
const char *config_filename;
|
const char *config_filename;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of the exchange.
|
||||||
|
*/
|
||||||
|
char *exchange_url;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -566,11 +572,27 @@ cert_cb (void *cls,
|
|||||||
enum TALER_EXCHANGE_VersionCompatibility compat)
|
enum TALER_EXCHANGE_VersionCompatibility compat)
|
||||||
{
|
{
|
||||||
struct MainContext *main_ctx = cls;
|
struct MainContext *main_ctx = cls;
|
||||||
|
struct TALER_TESTING_Interpreter *is = main_ctx->is;
|
||||||
|
|
||||||
if (NULL == keys)
|
if (NULL == keys)
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
if (GNUNET_NO == is->working)
|
||||||
"Got NULL response for /keys\n");
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||||
|
"Got NULL response for /keys during startup, retrying!\n");
|
||||||
|
TALER_EXCHANGE_disconnect (is->exchange);
|
||||||
|
GNUNET_assert (NULL !=
|
||||||
|
(is->exchange = TALER_EXCHANGE_connect (is->ctx,
|
||||||
|
main_ctx->exchange_url,
|
||||||
|
&cert_cb,
|
||||||
|
main_ctx,
|
||||||
|
TALER_EXCHANGE_OPTION_END)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Got NULL response for /keys during execution!\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -578,28 +600,28 @@ cert_cb (void *cls,
|
|||||||
"Got %d DK from /keys\n",
|
"Got %d DK from /keys\n",
|
||||||
keys->num_denom_keys);
|
keys->num_denom_keys);
|
||||||
}
|
}
|
||||||
main_ctx->is->key_generation++;
|
is->key_generation++;
|
||||||
main_ctx->is->keys = keys;
|
is->keys = keys;
|
||||||
|
|
||||||
/* /keys has been called for some reason and
|
/* /keys has been called for some reason and
|
||||||
* the interpreter is already running. */
|
* the interpreter is already running. */
|
||||||
if (GNUNET_YES == main_ctx->is->working)
|
if (GNUNET_YES == is->working)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
main_ctx->is->working = GNUNET_YES;
|
is->working = GNUNET_YES;
|
||||||
|
|
||||||
/* Very first start of tests, call "run()" */
|
/* Very first start of tests, call "run()" */
|
||||||
if (1 == main_ctx->is->key_generation)
|
if (1 == is->key_generation)
|
||||||
{
|
{
|
||||||
main_ctx->main_cb (main_ctx->main_cb_cls,
|
main_ctx->main_cb (main_ctx->main_cb_cls,
|
||||||
main_ctx->is);
|
is);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tests already started, just trigger the
|
/* Tests already started, just trigger the
|
||||||
* next command. */
|
* next command. */
|
||||||
GNUNET_SCHEDULER_add_now (&interpreter_run,
|
GNUNET_SCHEDULER_add_now (&interpreter_run,
|
||||||
main_ctx->is);
|
is);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -653,13 +675,13 @@ main_wrapper_exchange_connect (void *cls)
|
|||||||
GNUNET_CONFIGURATION_destroy (cfg);
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
main_ctx->exchange_url = exchange_url;
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(is->exchange = TALER_EXCHANGE_connect (is->ctx,
|
(is->exchange = TALER_EXCHANGE_connect (is->ctx,
|
||||||
exchange_url,
|
exchange_url,
|
||||||
&cert_cb,
|
&cert_cb,
|
||||||
main_ctx,
|
main_ctx,
|
||||||
TALER_EXCHANGE_OPTION_END)));
|
TALER_EXCHANGE_OPTION_END)));
|
||||||
GNUNET_free (exchange_url);
|
|
||||||
GNUNET_CONFIGURATION_destroy (cfg);
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -726,7 +748,7 @@ TALER_TESTING_setup (TALER_TESTING_Main main_cb,
|
|||||||
else
|
else
|
||||||
GNUNET_SCHEDULER_run (&main_wrapper_exchange_agnostic,
|
GNUNET_SCHEDULER_run (&main_wrapper_exchange_agnostic,
|
||||||
&main_ctx);
|
&main_ctx);
|
||||||
|
GNUNET_free_non_null (main_ctx.exchange_url);
|
||||||
GNUNET_SIGNAL_handler_uninstall (shc_chld);
|
GNUNET_SIGNAL_handler_uninstall (shc_chld);
|
||||||
GNUNET_DISK_pipe_close (sigpipe);
|
GNUNET_DISK_pipe_close (sigpipe);
|
||||||
sigpipe = NULL;
|
sigpipe = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user