diff options
Diffstat (limited to 'src/testing/testing_api_cmd_refresh.c')
-rw-r--r-- | src/testing/testing_api_cmd_refresh.c | 67 |
1 files changed, 63 insertions, 4 deletions
diff --git a/src/testing/testing_api_cmd_refresh.c b/src/testing/testing_api_cmd_refresh.c index 2f91df377..51c3890ba 100644 --- a/src/testing/testing_api_cmd_refresh.c +++ b/src/testing/testing_api_cmd_refresh.c @@ -29,11 +29,23 @@ #include "backoff.h" /** + * How long do we wait AT MOST when retrying? + */ +#define MAX_BACKOFF GNUNET_TIME_relative_multiply ( \ + GNUNET_TIME_UNIT_MILLISECONDS, 100) + +/** * How often do we retry before giving up? */ #define NUM_RETRIES 5 /** + * How long do we wait AT MOST when retrying? + */ +#define MAX_BACKOFF GNUNET_TIME_relative_multiply ( \ + GNUNET_TIME_UNIT_MILLISECONDS, 100) + +/** * Information about a fresh coin generated by the refresh * operation. */ @@ -120,6 +132,11 @@ struct RefreshMeltState struct GNUNET_TIME_Relative backoff; /** + * How long did we wait in total for retries? + */ + struct GNUNET_TIME_Relative total_backoff; + + /** * Number of bytes in @e refresh_data. */ size_t refresh_data_length; @@ -202,6 +219,11 @@ struct RefreshRevealState struct GNUNET_TIME_Relative backoff; /** + * How long did we wait in total for retries? + */ + struct GNUNET_TIME_Relative total_backoff; + + /** * Number of fresh coins withdrawn, set by the * reveal callback as it comes from the exchange, * it is the length of the @e fresh_coins array. @@ -252,6 +274,11 @@ struct RefreshLinkState struct GNUNET_TIME_Relative backoff; /** + * How long did we wait in total for retries? + */ + struct GNUNET_TIME_Relative total_backoff; + + /** * Expected HTTP response code. */ unsigned int expected_response_code; @@ -341,7 +368,10 @@ reveal_cb (void *cls, if (TALER_EC_DB_COMMIT_FAILED_ON_RETRY == ec) rrs->backoff = GNUNET_TIME_UNIT_ZERO; else - rrs->backoff = EXCHANGE_LIB_BACKOFF (rrs->backoff); + rrs->backoff = GNUNET_TIME_randomized_backoff (rrs->backoff, + MAX_BACKOFF); + rrs->total_backoff = GNUNET_TIME_relative_add (rrs->total_backoff, + rrs->backoff); rrs->retry_task = GNUNET_SCHEDULER_add_delayed (rrs->backoff, &do_reveal_retry, rrs); @@ -391,6 +421,14 @@ reveal_cb (void *cls, fc->sig.rsa_signature = GNUNET_CRYPTO_rsa_signature_dup (sigs[i].rsa_signature); } + if (0 != rrs->total_backoff.rel_value_us) + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Total reveal backoff for %s was %s\n", + rrs->is->commands[rrs->is->ip].label, + GNUNET_STRINGS_relative_time_to_string (rrs->total_backoff, + GNUNET_YES)); + } break; default: GNUNET_log (GNUNET_ERROR_TYPE_WARNING, @@ -568,7 +606,10 @@ link_cb (void *cls, if (TALER_EC_DB_COMMIT_FAILED_ON_RETRY == ec) rls->backoff = GNUNET_TIME_UNIT_ZERO; else - rls->backoff = EXCHANGE_LIB_BACKOFF (rls->backoff); + rls->backoff = GNUNET_TIME_randomized_backoff (rls->backoff, + MAX_BACKOFF); + rls->total_backoff = GNUNET_TIME_relative_add (rls->total_backoff, + rls->backoff); rls->retry_task = GNUNET_SCHEDULER_add_delayed (rls->backoff, &do_link_retry, rls); @@ -663,6 +704,14 @@ link_cb (void *cls, TALER_TESTING_interpreter_fail (rls->is); return; } + if (0 != rls->total_backoff.rel_value_us) + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Total link backoff for %s was %s\n", + rls->is->commands[rls->is->ip].label, + GNUNET_STRINGS_relative_time_to_string (rls->total_backoff, + GNUNET_YES)); + } break; default: GNUNET_log (GNUNET_ERROR_TYPE_ERROR, @@ -851,7 +900,10 @@ melt_cb (void *cls, if (TALER_EC_DB_COMMIT_FAILED_ON_RETRY == ec) rms->backoff = GNUNET_TIME_UNIT_ZERO; else - rms->backoff = EXCHANGE_LIB_BACKOFF (rms->backoff); + rms->backoff = GNUNET_TIME_randomized_backoff (rms->backoff, + MAX_BACKOFF); + rms->total_backoff = GNUNET_TIME_relative_add (rms->total_backoff, + rms->backoff); rms->retry_task = GNUNET_SCHEDULER_add_delayed (rms->backoff, &do_melt_retry, @@ -872,7 +924,14 @@ melt_cb (void *cls, return; } rms->noreveal_index = noreveal_index; - + if (0 != rms->total_backoff.rel_value_us) + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Total melt backoff for %s was %s\n", + rms->is->commands[rms->is->ip].label, + GNUNET_STRINGS_relative_time_to_string (rms->total_backoff, + GNUNET_YES)); + } if (GNUNET_YES == rms->double_melt) { TALER_LOG_DEBUG ("Doubling the melt (%s)\n", |