public async Task InvalidPartitionExceptionRetryHandlerDoesNotRetryOn410() { CosmosClient client = MockDocumentClient.CreateMockCosmosClient(); NamedCacheRetryHandler retryHandler = new NamedCacheRetryHandler(client); int handlerCalls = 0; int expectedHandlerCalls = 2; TestHandler testHandler = new TestHandler((request, cancellationToken) => { if (handlerCalls == 0) { handlerCalls++; return(TestHandler.ReturnStatusCode((HttpStatusCode)StatusCodes.Gone, SubStatusCodes.NameCacheIsStale)); } handlerCalls++; return(TestHandler.ReturnSuccess()); }); retryHandler.InnerHandler = testHandler; RequestInvokerHandler invoker = new RequestInvokerHandler(client); invoker.InnerHandler = retryHandler; CosmosRequestMessage requestMessage = new CosmosRequestMessage(HttpMethod.Get, new Uri("https://dummy.documents.azure.com:443/dbs")); await invoker.SendAsync(requestMessage, new CancellationToken()); Assert.AreEqual(expectedHandlerCalls, handlerCalls); }
public async Task InvalidPartitionExceptionRetryHandlerDoesNotRetryOnSuccess() { using CosmosClient client = MockCosmosUtil.CreateMockCosmosClient(); NamedCacheRetryHandler retryHandler = new NamedCacheRetryHandler(); int handlerCalls = 0; int expectedHandlerCalls = 1; TestHandler testHandler = new TestHandler((request, cancellationToken) => { handlerCalls++; return(TestHandler.ReturnSuccess()); }); retryHandler.InnerHandler = testHandler; RequestInvokerHandler invoker = new RequestInvokerHandler( client, requestedClientConsistencyLevel: null) { InnerHandler = retryHandler }; RequestMessage requestMessage = new RequestMessage( HttpMethod.Get, new Uri("https://dummy.documents.azure.com:443/dbs")); await invoker.SendAsync(requestMessage, new CancellationToken()); Assert.AreEqual(expectedHandlerCalls, handlerCalls); }