public void Create_PolicyNull() { var instance = new RetryProxySubject(); var policy = new CanRetryProxySubjectPolicy(5, TimeSpan.FromSeconds(5)); Assert.ThrowsException <ArgumentNullException>(() => RetryProxy.Create <IRetryProxySubject>(instance, null)); }
public async Task InvokeSuccessAsync() { var instance = new RetryProxySubject(); var retryPolicy = new CanRetryProxySubjectPolicy(5, TimeSpan.FromSeconds(5)); var retryProxy = RetryProxy.Create <IRetryProxySubject>(instance, retryPolicy); var result = await retryProxy.SucceedAsync(); Assert.AreEqual("succeed", result); }
public async Task InvokeFailure_TimeoutExceededAsync() { var instance = new RetryProxySubject(); var retryPolicy = new CanRetryProxySubjectPolicy(10000, TimeSpan.FromSeconds(1)); var retryProxy = RetryProxy.Create <IRetryProxySubject>(instance, retryPolicy); try { var result = await retryProxy.FailAsync(); } catch (RetryException ex) { Assert.IsTrue(ex.RetrySession.Exceptions.Count > 0); Assert.IsTrue(ex.RetrySession.Exceptions[0] is ProxySubjectTestException); Assert.IsTrue(ex.RetrySession.ElapsedTime >= TimeSpan.FromSeconds(1)); Assert.AreEqual(ex.RetrySession.Attempts, ex.RetrySession.Exceptions.Count); throw; } }
public void InvokeFailure_MaxAttemptsExceeded() { var instance = new RetryProxySubject(); var retryPolicy = new CanRetryProxySubjectPolicy(5, TimeSpan.FromSeconds(60)); var retryProxy = RetryProxy.Create <IRetryProxySubject>(instance, retryPolicy); try { var result = retryProxy.Fail(); } catch (RetryException ex) { Assert.IsTrue(ex.RetrySession.Exceptions.Count > 0); Assert.IsTrue(ex.RetrySession.Exceptions[0] is ProxySubjectTestException); Assert.AreEqual(5, ex.RetrySession.Attempts); Assert.AreEqual(ex.RetrySession.Attempts, ex.RetrySession.Exceptions.Count); throw; } }