public void AddResponseToRetryOn_RetriesOnMatchedPredicate_WhenMultiplePredicatesAreRegistered() { var service = Substitute.For <ITestService>(); var firstFailResponse = new Response { StatusCode = 100 }; var secondFailResponse = new Response { StatusCode = 101 }; var successResponse = new Response { StatusCode = 1 }; service .TestMethodComplex(Arg.Any <Request>()) .Returns(firstFailResponse, secondFailResponse, successResponse); var actionInvoker = new RetryingWcfActionInvoker <ITestService>( () => service, () => new ConstantDelayPolicy(TimeSpan.FromMilliseconds(50)), retryCount: 2); actionInvoker.AddResponseToRetryOn <IResponseStatus>(r => r.StatusCode == firstFailResponse.StatusCode); actionInvoker.AddResponseToRetryOn <IResponseStatus>(r => r.StatusCode == secondFailResponse.StatusCode); var response = actionInvoker.Invoke(s => s.TestMethodComplex(new Request())); Assert.That(response.StatusCode, Is.EqualTo(successResponse.StatusCode)); }
public void AddResponseToRetryOn_RetriesOnConfiguredResponse_ForResponseType() { var service = Substitute.For <ITestService>(); var failResponse = new Response { ResponseMessage = "fail" }; var successResponse = new Response { ResponseMessage = "success" }; service .TestMethodComplex(Arg.Any <Request>()) .Returns(failResponse, failResponse, successResponse); var actionInvoker = new RetryingWcfActionInvoker <ITestService>( () => service, () => new ConstantDelayPolicy(TimeSpan.FromMilliseconds(50)), retryCount: 2); actionInvoker.AddResponseToRetryOn <Response>(r => r.ResponseMessage == failResponse.ResponseMessage); var response = actionInvoker.Invoke(s => s.TestMethodComplex(new Request())); Assert.That(response.ResponseMessage, Is.EqualTo(successResponse.ResponseMessage)); }
public void AddResponseToRetryOn_RetriesOnConfiguredResponse_ForResponseType() { var mockService = new Mock <ITestService>(); var failResponse = new Response { ResponseMessage = "fail" }; var successResponse = new Response { ResponseMessage = "success" }; mockService .SetupSequence(m => m.TestMethodComplex(It.IsAny <Request>())) .Returns(failResponse) .Returns(failResponse) .Returns(successResponse); var actionInvoker = new RetryingWcfActionInvoker <ITestService>( () => new TestServiceImpl(mockService), () => new ConstantDelayPolicy(TimeSpan.FromMilliseconds(50)), retryCount: 2); actionInvoker.AddResponseToRetryOn <Response>(r => r.ResponseMessage == failResponse.ResponseMessage); var response = actionInvoker.Invoke(s => s.TestMethodComplex(new Request())); Assert.That(response.ResponseMessage, Is.EqualTo(successResponse.ResponseMessage)); }
public void Benchmark_RetryingWcfActionInvoker_Invoke() { var service = Substitute.For <ITestService>(); service .TestMethodComplex(Arg.Any <Request>()) .Returns(new Response { StatusCode = 1 }); var actionInvoker = new RetryingWcfActionInvoker <ITestService>( () => service); actionInvoker.AddResponseToRetryOn <IResponseStatus>(r => r.StatusCode == 100); var sw = Stopwatch.StartNew(); foreach (var i in Enumerable.Range(0, 300000)) { var response = actionInvoker.Invoke(s => s.TestMethodComplex(new Request())); Assert.That(response.StatusCode, Is.EqualTo(1)); } sw.Stop(); Trace.WriteLine(string.Format("Complete in {0}", sw.Elapsed)); }
public void Benchmark_RetryingWcfActionInvoker_Invoke() { var service = Substitute.For<ITestService>(); service .TestMethodComplex(Arg.Any<Request>()) .Returns(new Response { StatusCode = 1 }); var actionInvoker = new RetryingWcfActionInvoker<ITestService>( () => service); actionInvoker.AddResponseToRetryOn<IResponseStatus>(r => r.StatusCode == 100); var sw = Stopwatch.StartNew(); foreach (var i in Enumerable.Range(0, 300000)) { var response = actionInvoker.Invoke(s => s.TestMethodComplex(new Request())); Assert.That(response.StatusCode, Is.EqualTo(1)); } sw.Stop(); Trace.WriteLine(string.Format("Complete in {0}", sw.Elapsed)); }