Esempio n. 1
0
        //[ExpectedException(typeof(ArgumentException))]
        public void WaitBeforeRetryControllerEnqabled2()
        {
            var info = new ErrorRetryingInfo
            {
                Info = new[]
                {
                    new ErrorRetryingItemInfo(1, 3, 60),
                    new ErrorRetryingItemInfo(2, 3, 60),
                    new ErrorRetryingItemInfo(3, 3, 60),
                },
            };
            var retryingController = new WaitBeforeRetryController(new TestErrorRetryingWaiter(60), info);

            int  counter    = 0;
            int  maxCounter = 2;
            bool rez        = false;

            rez = retryingController.Do <bool>(() => {
                if (counter < maxCounter)
                {
                    ++counter;
                    throw new TimeoutException();
                }

                throw new ArgumentException();
            }, ex => !(ex is ArgumentException));

            Assert.IsFalse(rez);
            Assert.AreEqual(counter, maxCounter);
        }
Esempio n. 2
0
        public void WaitBeforeRetryControllerEnqabled()
        {
            var info = new ErrorRetryingInfo
            {
                Info = new[]
                {
                    new ErrorRetryingItemInfo(1, 3, 60),
                    new ErrorRetryingItemInfo(2, 3, 60),
                    new ErrorRetryingItemInfo(3, 3, 60),
                }
            };
            var retryingController = new WaitBeforeRetryController(new TestErrorRetryingWaiter(60), info);

            int counter    = 0;
            int maxCounter = 2;
            var rez        = retryingController.DoForAllTypesOfErrors(() =>
            {
                if (counter < maxCounter)
                {
                    ++counter;
                    throw new TimeoutException();
                }
                else
                {
                    return(true);
                }
            });

            Assert.IsTrue(rez);
            Assert.AreEqual(counter, maxCounter);
        }
Esempio n. 3
0
        protected R GetServiceData <T, R>(Func <T, R> func, T request)
            where T : AbstractRequestType
            where R : AbstractResponseType
        {
            request.Version = ApiVersion.Value;

            var errorRetryingInfo  = Info.Settings == null ? null : Info.Settings.ErrorRetryingInfo;
            var retryingController = new WaitBeforeRetryController(new ErrorRetryingWaiter(), errorRetryingInfo);

            return(retryingController.Do(() =>
            {
                WriteLog(string.Format("Request to eBay: {0} started", CallProcedureName));
                R response;
                try
                {
                    response = func(request);
                }
                catch (SoapException ex)
                {
                    ServiceFaultDetail fault;

                    if (ServiceRequestException.TryExtractErrorMessage(ex, out fault))
                    {
                        throw ServiceRequestExceptionFactory.Create(fault, ex);
                    }

                    throw;
                }

                if (response.Ack == AckCodeType.Failure)
                {
                    throw ServiceRequestExceptionFactory.Create(new AmazonServiceResponceExceptionWrapper(response));
                }

                WriteLog(string.Format("Request to eBay: {0} ended successfuly", CallProcedureName));
                return response;
            },
                                         ex =>
            {
                WriteLog(string.Format("Request to eBay: {0} ended with error", CallProcedureName), ex);

                if (ex is IServiceRequestException)
                {
                    var exFail = ex as IServiceRequestException;
                    return _CommonInternalErrors.Any(exFail.HasErrorWithCode);
                }

                return true;
            }));
        }
Esempio n. 4
0
        public void WaitBeforeRetryController()
        {
            var info = new ErrorRetryingInfo
            {
                Info = new[]
                {
                    new ErrorRetryingItemInfo(1, 3, 60),
                    new ErrorRetryingItemInfo(2, 3, 60),
                    new ErrorRetryingItemInfo(3, 3, 60),
                }
            };
            var retryingController = new WaitBeforeRetryController(new TestErrorRetryingWaiter(60), info);

            retryingController.DoForAllTypesOfErrors(() => true);
        }
 private AmazonWaitBeforeRetryHelper(ErrorRetryingInfo errorRetryingInfo)
 {
     _WaitBeforeRetryController = new WaitBeforeRetryController(new ErrorRetryingWaiter(), errorRetryingInfo);
 }