App.Metrics.Reporting.GrafanaCloudHostedMetrics.Facts.DefaultLineProtocolClientTests.Should_back_off_when_reached_max_failures C# (CSharp) Method

Should_back_off_when_reached_max_failures() private method

private Should_back_off_when_reached_max_failures ( ) : Task
return Task
        public async Task Should_back_off_when_reached_max_failures()
        {
            // Arrange
            var httpMessageHandlerMock = new Mock<HttpMessageHandler>();
            httpMessageHandlerMock.Protected().Setup<Task<HttpResponseMessage>>(
                                       "SendAsync",
                                       ItExpr.IsAny<HttpRequestMessage>(),
                                       ItExpr.IsAny<CancellationToken>()).
                                   Returns(Task.FromResult(new HttpResponseMessage(HttpStatusCode.BadRequest)));
            var policy = new HttpPolicy { FailuresBeforeBackoff = 3, BackoffPeriod = TimeSpan.FromMinutes(1) };
            var settings = new MetricsReportingHostedMetricsOptions
                           {
                               HostedMetrics = new HostedMetricsOptions
                                               {
                                                   BaseUri = new Uri("http://localhost"),
                                                   ApiKey = "123"
                                               },
                               HttpPolicy = policy
                           };
            var hostedMetricsClient = HostedMetricsReporterBuilder.CreateClient(settings, policy, httpMessageHandlerMock.Object);

            // Act
            foreach (var attempt in Enumerable.Range(0, 10))
            {
                await hostedMetricsClient.WriteAsync(Payload, CancellationToken.None);

                // ReSharper disable ConvertIfStatementToConditionalTernaryExpression
                if (attempt <= policy.FailuresBeforeBackoff)
                {
                    // ReSharper restore ConvertIfStatementToConditionalTernaryExpression
                    // Assert
                    httpMessageHandlerMock.Protected().Verify<Task<HttpResponseMessage>>(
                        "SendAsync",
                        Times.AtLeastOnce(),
                        ItExpr.IsAny<HttpRequestMessage>(),
                        ItExpr.IsAny<CancellationToken>());
                }
                else
                {
                    // Assert
                    httpMessageHandlerMock.Protected().Verify<Task<HttpResponseMessage>>(
                        "SendAsync",
                        Times.AtMost(6), // TODO: Starting failing when running all tests with 2.0.0 upgrade, should be 3
                        ItExpr.IsAny<HttpRequestMessage>(),
                        ItExpr.IsAny<CancellationToken>());
                }
            }
        }