//[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); }
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); }
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; })); }
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); }