public async Task MultipleErrors_ForSameResumeToken() { var results = CreateResultSets("token1", "token2", "token3", "token4"); var client = new FakeSpannerClient(results, CreateExceptionFilter("token2", RetriableStatusCode, 2)); var stream = CreateStream(client); // We expect calls of: // - Start: no token, MoveNext(yes), MoveNext(throw) // - Start: token1, MoveNext(throw) // - No further calls, due to second failure // Only the result with token1 is returned await AssertResultsThenExceptionAsync(stream, results, 1); Assert.Equal(2, client.Calls); }
public async Task MultipleErrors_WithSuccessBetween() { var results = CreateResultSets("token1", "token2", "token3", "token4"); var filter1 = CreateExceptionFilter("token2", RetriableStatusCode); var filter2 = CreateExceptionFilter("token3", RetriableStatusCode); // Note: if we do this a lot, we might want a way of specifying multiple filters easily. var client = new FakeSpannerClient(results, prs => filter2(filter1(prs))); var stream = CreateStream(client); await AssertResultsAsync(stream, results); Assert.Equal(3, client.Calls); }