Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }