Beispiel #1
0
        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()));
        }
Beispiel #2
0
        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]));
            }
        }
Beispiel #3
0
        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()));
        }
Beispiel #4
0
        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]));
            }
        }