public void TestBackoffStrategyCoerce() { var c = new Config(); c.Set("backoff_strategy", "exponential"); Assert.AreEqual(typeof(ExponentialStrategy), c.BackoffStrategy.GetType()); c.Set("backoff_strategy", ""); Assert.AreEqual(typeof(ExponentialStrategy), c.BackoffStrategy.GetType()); c.Set("backoff_strategy", null); Assert.IsNull(c.BackoffStrategy); c.Set("backoff_strategy", "full_jitter"); Assert.AreEqual(typeof(FullJitterStrategy), c.BackoffStrategy.GetType()); Assert.Throws<Exception>(() => c.Set("backoff_strategy", "invalid")); var fullJitterStrategy = new FullJitterStrategy(); c.Set("backoff_strategy", fullJitterStrategy); Assert.AreEqual(fullJitterStrategy, c.BackoffStrategy); var exponentialStrategy = new ExponentialStrategy(); c.Set("backoff_strategy", exponentialStrategy); Assert.AreEqual(exponentialStrategy, c.BackoffStrategy); Assert.Throws<Exception>(() => c.Set("backoff_strategy", new object())); }
public void TestExponentialBackoff() { var expected = new[] { TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(32) }; var backoffStrategy = new ExponentialStrategy(); var config = new NsqConfig(); config.BackoffMultiplier = TimeSpan.FromSeconds(1); var attempts = new[] { 1, 2, 4, 6 }; for (var i = 0; i < attempts.Length; i++) { var result = backoffStrategy.Calculate(config, attempts[i]); Assert.AreEqual(expected[i], result.Duration, string.Format("wrong backoff duration for attempt {0}", attempts[i])); } }
public void TestBackoffStrategyCoerce() { var c = new NsqConfig(); c.Set("backoff_strategy", "exponential"); Assert.AreEqual(typeof(ExponentialStrategy), c.BackoffStrategy.GetType()); c.Set("backoff_strategy", ""); Assert.AreEqual(typeof(ExponentialStrategy), c.BackoffStrategy.GetType()); c.Set("backoff_strategy", null); Assert.IsNull(c.BackoffStrategy); c.Set("backoff_strategy", "full_jitter"); Assert.AreEqual(typeof(FullJitterStrategy), c.BackoffStrategy.GetType()); AssertHelper.Throws <Exception>(() => c.Set("backoff_strategy", "invalid")); var fullJitterStrategy = new FullJitterStrategy(); c.Set("backoff_strategy", fullJitterStrategy); Assert.AreEqual(fullJitterStrategy, c.BackoffStrategy); var exponentialStrategy = new ExponentialStrategy(); c.Set("backoff_strategy", exponentialStrategy); Assert.AreEqual(exponentialStrategy, c.BackoffStrategy); AssertHelper.Throws <Exception>(() => c.Set("backoff_strategy", new object())); }
public void TestExponentialBackoff() { var expected = new[] { TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(32) }; var backoffStrategy = new ExponentialStrategy(); var config = new Config(); var attempts = new[] { 0, 1, 3, 5 }; for (int i = 0; i < attempts.Length; i++) { var result = backoffStrategy.Calculate(config, attempts[i]); Assert.AreEqual(expected[i], result, string.Format("wrong backoff duration for attempt {0}", attempts[i])); } }