public void InitializeStoresTransmitterForUseByChildClasses()
        {
            var transmitter = new StubTransmitter();
            var policy      = new TestableTransmissionPolicy();

            policy.Initialize(transmitter);

            Assert.Same(transmitter, policy.Transmitter);
        }
        public void InitializeStoresTransmitterForUseByChildClasses()
        {
            var transmitter = new StubTransmitter();
            var policy = new TestableTransmissionPolicy();

            policy.Initialize(transmitter);

            Assert.Same(transmitter, policy.Transmitter);
        }
 public void UpperBoundOfDelayIsMaxDelay()
 {
     var policy = new TestableTransmissionPolicy();
     policy.ConsecutiveErrors = int.MaxValue;
     TimeSpan delay = policy.GetBackOffTime(new WebHeaderCollection());
     Assert.InRange(delay, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(3600));
 }
            public void RetryAfterOlderThanNowCausesDefaultDelay()
            {
                // An old date
                string retryAfterDateString = DateTime.Now.AddMinutes(-1).ToString("R", CultureInfo.InvariantCulture);

                WebHeaderCollection headers = new WebHeaderCollection();
                headers.Add("Retry-After", retryAfterDateString);

                var policy = new TestableTransmissionPolicy();
                policy.ConsecutiveErrors = 0;
                TimeSpan delay = policy.GetBackOffTime(headers);
                Assert.Equal(TimeSpan.FromSeconds(10), delay);
            }
            public void RetryAfterFromHeadersHasMorePriorityThanExponentialRetry()
            {
                WebHeaderCollection headers = new WebHeaderCollection();
                headers.Add("Retry-After", DateTimeOffset.UtcNow.AddSeconds(30).ToString("O"));

                var policy = new TestableTransmissionPolicy();
                policy.ConsecutiveErrors = 0;
                TimeSpan delay = policy.GetBackOffTime(headers);

                Assert.InRange(delay, TimeSpan.FromSeconds(20), TimeSpan.FromSeconds(30));
            }
 public void NoErrorDelayIsSameAsSlotDelay()
 {
     var policy = new TestableTransmissionPolicy();
     TimeSpan delay = policy.GetBackOffTime(new WebHeaderCollection());
     Assert.Equal(TimeSpan.FromSeconds(10), delay);
 }
            public void AssertIfDateParseErrorCausesDefaultDelay()
            {
                WebHeaderCollection headers = new WebHeaderCollection();
                headers.Add("Retry-After", "no one can parse me");

                var policy = new TestableTransmissionPolicy();
                policy.ConsecutiveErrors = 0;
                TimeSpan delay = policy.GetBackOffTime(headers);
                Assert.Equal(TimeSpan.FromSeconds(10), delay);
            }