示例#1
0
 /// <summary>
 /// Constructor
 /// </summary>
 public CircuitBreakerWithThrottling(CircuitBreakerWithThrottlingOptions options)
     : base(options)
 {
     InternalContract.RequireNotNull(options, nameof(options));
     InternalContract.RequireValidated(options, nameof(options));
     _options = options;
     _options.ThrottlingCoolDownStrategy.Reset();
 }
        public void Initialize()
        {
            FulcrumApplicationHelper.UnitTestSetup(nameof(CircuitBreakerTests));
            _coolDownStrategyMock = new Mock <ICoolDownStrategy>();
            _coolDownStrategyMock
            .Setup(strategy => strategy.Reset());
            _coolDownStrategyMock
            .Setup(strategy => strategy.StartNextCoolDownPeriod());
            var circuitBreakerOptions = new CircuitBreakerWithThrottlingOptions
            {
                CoolDownStrategy = _coolDownStrategyMock.Object,
                CancelConcurrentRequestsWhenOneFails   = false,
                ThrottlingCoolDownStrategy             = _coolDownStrategyMock.Object,
                ConcurrencyThresholdForChokingResolved = 100
            };

            _circuitBreakersUnderTest = new ICircuitBreaker[]
            {
                new CircuitBreaker(circuitBreakerOptions),
                new CircuitBreakerWithThrottling(circuitBreakerOptions)
            };
        }