23 #include <gtest/gtest.h>
38 TEST(BackOffTest, ConstantBackOff) {
40 const double multiplier = 1.0;
41 const double jitter = 0.0;
45 options.set_initial_backoff(initial_backoff)
46 .set_multiplier(multiplier)
48 .set_max_backoff(max_backoff);
54 for (
int i = 0;
i < 10000;
i++) {
55 next_attempt_start_time = backoff.NextAttemptTime();
61 TEST(BackOffTest, MinConnect) {
63 const double multiplier = 1.0;
64 const double jitter = 0.0;
68 options.set_initial_backoff(initial_backoff)
69 .set_multiplier(multiplier)
71 .set_max_backoff(max_backoff);
77 TEST(BackOffTest, NoJitterBackOff) {
79 const double multiplier = 2.0;
80 const double jitter = 0.0;
83 options.set_initial_backoff(initial_backoff)
84 .set_multiplier(multiplier)
86 .set_max_backoff(max_backoff);
96 next = backoff.NextAttemptTime();
99 next = backoff.NextAttemptTime();
102 next = backoff.NextAttemptTime();
105 next = backoff.NextAttemptTime();
108 next = backoff.NextAttemptTime();
111 next = backoff.NextAttemptTime();
114 next = backoff.NextAttemptTime();
117 next = backoff.NextAttemptTime();
121 next = backoff.NextAttemptTime();
127 next = backoff.NextAttemptTime();
131 next = backoff.NextAttemptTime();
136 TEST(BackOffTest, JitterBackOff) {
138 auto current_backoff = initial_backoff;
140 const double multiplier = 1.0;
141 const double jitter = 0.1;
143 options.set_initial_backoff(initial_backoff)
144 .set_multiplier(multiplier)
146 .set_max_backoff(max_backoff);
154 static_cast<double>(current_backoff.millis()) * (1 - jitter));
156 static_cast<double>(current_backoff.millis()) * (1 + jitter));
158 for (
int i = 0;
i < 10000;
i++) {
159 next = backoff.NextAttemptTime();
164 EXPECT_GE(timeout_millis, expected_next_lower_bound);
165 EXPECT_LE(timeout_millis, expected_next_upper_bound);
168 static_cast<double>(current_backoff.millis()) * multiplier),
171 static_cast<double>(current_backoff.millis()) * (1 - jitter));
173 static_cast<double>(current_backoff.millis()) * (1 + jitter));
181 int main(
int argc,
char** argv) {