Exemple #1
0
        private static ServiceCollection ConfigureServices()
        {
            Mock <ITelemetryService> mockITelemetryService    = new Mock <ITelemetryService>();
            ITelemetryService        telemetryServiceResolver = mockITelemetryService.Object;

            ServiceCollection services = new ServiceCollection();

            _loggerFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay  = new LoggerFor_TestSearchHttpClient();
            _loggerFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay = new LoggerFor_TestSearchHttpClient();
            _loggerFor_ValidTestSearchHttpClient = new LoggerFor_TestSearchHttpClient();
            _loggerFor_InvalidTestSearchHttpClientRetryCountExpires = new LoggerFor_TestSearchHttpClient();

            services.AddHttpClient <TestSearchHttpClient>(_nameFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay, c => c.BaseAddress = new Uri(_longInvalidAddress))
            .AddPolicyHandler(SearchClientPolicies.SearchClientFallBackCircuitBreakerPolicy(_loggerFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay, "InvalidTestSearchHttpClientWithLongCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientWaitAndRetryPolicy(_retryCount, _waitBetweenRetriesInMilliseconds, _loggerFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay, "InvalidTestSearchHttpClientWithLongCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientCircuitBreakerPolicy(
                                  _circuitBreakerFailAfter,
                                  TimeSpan.FromSeconds(_circuitBreakerLongDelaySeconds),
                                  _loggerFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay,
                                  "InvalidTestSearchHttpClientWithLongCircuitBreakDelay", telemetryServiceResolver));

            services.AddHttpClient <TestSearchHttpClient>(_nameFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay, c => c.BaseAddress = new Uri(_shortInvalidAddress))
            .AddPolicyHandler(SearchClientPolicies.SearchClientFallBackCircuitBreakerPolicy(_loggerFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay, "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientWaitAndRetryPolicy(_retryCount, _waitBetweenRetriesInMilliseconds, _loggerFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay, "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientCircuitBreakerPolicy(
                                  _circuitBreakerFailAfter,
                                  TimeSpan.FromSeconds(_circuitBreakerShortDelaySeconds),
                                  _loggerFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay,
                                  "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver));

            services.AddHttpClient <TestSearchHttpClient>(_nameFor_ValidTestSearchHttpClient, c => c.BaseAddress = new Uri(_validAddress))
            .AddPolicyHandler(SearchClientPolicies.SearchClientFallBackCircuitBreakerPolicy(_loggerFor_ValidTestSearchHttpClient, "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientWaitAndRetryPolicy(_retryCount, _waitBetweenRetriesInMilliseconds, _loggerFor_ValidTestSearchHttpClient, "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientCircuitBreakerPolicy(
                                  _circuitBreakerFailAfter,
                                  TimeSpan.FromSeconds(_circuitBreakerShortDelaySeconds),
                                  _loggerFor_ValidTestSearchHttpClient,
                                  "InvalidTestSearchHttpClientWithShortCircuitBreakDelay", telemetryServiceResolver));

            services.AddHttpClient <TestSearchHttpClient>(_nameFor_InvalidTestSearchHttpClientRetryCountExpires, c => c.BaseAddress = new Uri(_shortInvalidAddress_2))
            .AddPolicyHandler(SearchClientPolicies.SearchClientFallBackCircuitBreakerPolicy(_loggerFor_InvalidTestSearchHttpClientRetryCountExpires, "InvalidTestSearchHttpClientRetryCountExpires", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientWaitAndRetryPolicy(_retryCount_2, _waitBetweenRetriesInMilliseconds, _loggerFor_InvalidTestSearchHttpClientRetryCountExpires, "InvalidTestSearchHttpClientRetryCountExpires", telemetryServiceResolver))
            .AddPolicyHandler(SearchClientPolicies.SearchClientCircuitBreakerPolicy(
                                  _circuitBreakerFailAfter_2,
                                  TimeSpan.FromSeconds(_circuitBreakerShortDelaySeconds),
                                  _loggerFor_InvalidTestSearchHttpClientRetryCountExpires,
                                  "InvalidTestSearchHttpClientRetryCountExpires", telemetryServiceResolver));

            return(services);
        }
Exemple #2
0
        private ServiceCollection ConfigureServices(ITestOutputHelper output)
        {
            Mock <ITelemetryService> mockITelemetryService    = new Mock <ITelemetryService>();
            ITelemetryService        telemetryServiceResolver = mockITelemetryService.Object;

            ServiceCollection services = new ServiceCollection();

            _logger = new LoggerFor_TestSearchHttpClient(output);
            services.AddSingleton <ILogger>(_logger);

            AddTestHttpClient(
                services,
                _longInvalidAddress,
                _nameFor_InvalidTestSearchHttpClientWithLongCircuitBreakDelay,
                _retryCount,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutLongInMilliseconds,
                _circuitBreakerFailAfter,
                _circuitBreakerShortDelaySeconds,
                telemetryServiceResolver);

            AddTestHttpClient(
                services,
                _shortInvalidAddress,
                _nameFor_InvalidTestSearchHttpClientWithShortCircuitBreakDelay,
                _retryCount,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutLongInMilliseconds,
                _circuitBreakerFailAfter,
                _circuitBreakerShortDelaySeconds,
                telemetryServiceResolver);

            AddTestHttpClient(
                services,
                _validAddress,
                _nameFor_ValidTestSearchHttpClient,
                _retryCount,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutLongInMilliseconds,
                _circuitBreakerFailAfter,
                _circuitBreakerShortDelaySeconds,
                telemetryServiceResolver);

            AddTestHttpClient(
                services,
                _shortInvalidAddress_2,
                _nameFor_InvalidTestSearchHttpClientRetryCountExpires,
                _retryCount_2,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutLongInMilliseconds,
                _circuitBreakerFailAfter_2,
                _circuitBreakerShortDelaySeconds,
                telemetryServiceResolver);

            AddTestHttpClient(
                services,
                _403Address,
                _nameFor_SearchHttpClientReturning403,
                _retryCount,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutLongInMilliseconds,
                _circuitBreakerFailAfter,
                _circuitBreakerLongDelaySeconds,
                telemetryServiceResolver);

            AddTestHttpClient(
                services,
                _timeoutAddress,
                _nameFor_SearchHttpClientTimingOut,
                _retryCount,
                _waitBetweenRetriesInMilliseconds,
                _circuitBreakerTimeoutShortInMilliseconds,
                _circuitBreakerFailAfter,
                _circuitBreakerShortDelaySeconds,
                telemetryServiceResolver);

            return(services);
        }