summaryrefslogtreecommitdiff
path: root/src/testing/testing_api_cmd_refresh.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing/testing_api_cmd_refresh.c')
-rw-r--r--src/testing/testing_api_cmd_refresh.c67
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",