protected override void Given()
 {
     base.Given();
     _config = new CircuitBreakerConfig();
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.TryingToCloseCircuitBreaker += (sender, args) => _tryingToCloseFired = true;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">The configuration for the source breaker</param>
 /// <param name="reason">The reason why the breaker tried to open</param>
 /// <param name="exception">The source exception</param>
 /// <param name="toleratedOpenEventCount">How many open events have been tolerated</param>
 public ToleratedOpenCircuitBreakerEventArgs(CircuitBreakerConfig config, BreakerOpenReason reason,
     Exception exception, short toleratedOpenEventCount) : base(config)
 {
     Reason = reason;
     Exception = exception;
     ToleratedOpenEventCount = toleratedOpenEventCount;
 }
 protected override void Given()
 {
     base.Given();
     _thrownException = new ArgumentNullException();
     _config = new CircuitBreakerConfig();
     _circuitBreaker = new CircuitBreaker(_config);
 }
 protected override void Given()
 {
     base.Given();
     _caughtExceptions = new List<Exception>();
     _config = new CircuitBreakerConfig {ExpectedExceptionListType = ExceptionListType.BlackList};
     _config.ExpectedExceptionList.Add(typeof(ArgumentNullException));
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenEventFired = true;
     _thrownException = new NullReferenceException();
 }
 protected override void Given()
 {
     base.Given();
     _timeout = TimeSpan.FromSeconds(10);
     _config = new CircuitBreakerConfig
     {
         UseTimeout = true,
         Timeout = _timeout
     };
     _circuitBreaker = new CircuitBreaker(_config);
 }
 protected override void Given()
 {
     base.Given();
     _config = new CircuitBreakerConfig
     {
         ExpectedExceptionListType = ExceptionListType.BlackList
     };
     _config.ExpectedExceptionList.Add(typeof(ArgumentNullException));
     _circuitBreaker = new CircuitBreaker(_config);
     _thrownException = new NullReferenceException();
 }
 protected override void Given()
 {
     base.Given();
     _thrownException = new ArgumentNullException();
     _config = new CircuitBreakerConfig
     {
         Timeout = TimeSpan.FromMilliseconds(1000),
         UseTimeout = true
     };
     _circuitBreaker = new CircuitBreaker(_config);
 }
 protected override void Given()
 {
     base.Given();
     _caughtExceptions = new List<Exception>();
     _thrownException = new ArgumentNullException();
     _config = new CircuitBreakerConfig
     {
         OpenEventTolerance = 2
     };
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenEventCount++;
 }
 protected override void Given()
 {
     base.Given();
     _config = new CircuitBreakerConfig
     {
         BreakerOpenPeriods = new[] {TimeSpan.FromSeconds(1)}
     };
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.OpenedCircuitBreaker += (sender, args) => _breakerOpenedCount++;
     _circuitBreaker.TryingToCloseCircuitBreaker += (sender, args) => _breakerTryingToCloseCount++;
     _circuitBreaker.ClosedCircuitBreaker += (sender, args) => _breakerClosedCount++;
 }
        protected override void Given()
        {
            base.Given();
            _caughtExceptions = new List<Exception>();
            _config = new CircuitBreakerConfig
            {
                UseImmediateFailureRetry = true
            };

            _circuitBreaker = new CircuitBreaker(_config);
            _circuitBreaker.OpenedCircuitBreaker += (sender, args) => _openedEventFired = true;
        }
 protected override void Given()
 {
     base.Given();
     _config = new CircuitBreakerConfig
     {
         ExpectedExceptionListType = ExceptionListType.BlackList,
         PermittedExceptionPassThrough = PermittedExceptionBehaviour.Swallow
     };
     _config.ExpectedExceptionList.Add(typeof(ArgumentNullException));
     _circuitBreaker = new CircuitBreaker(_config);
     _thrownException = new NullReferenceException();
 }
        protected override void Given()
        {
            base.Given();
            _config = new CircuitBreakerConfig
            {
                ExpectedExceptionListType = ExceptionListType.BlackList,
                ExpectedExceptionList = new List<Type> { typeof (IndexOutOfRangeException) },
                OpenEventTolerance = 5,
            };

            _circuitBreaker = new CircuitBreaker(_config) { State = BreakerState.Open };
            _circuitBreaker.ClosedCircuitBreaker += (sender, args) => _closedEventFired = true;
        }
 protected override void Given()
 {
     base.Given();
     _caughtExceptions = new List<Exception>();
     _thrownException = new ArgumentNullException();
     _config = new CircuitBreakerConfig
     {
         OpenEventTolerance = 2,
         OpenEventToleranceResetPeriod = new TimeSpan(0, 0, 3)
     };
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenEventCount++;
     _circuitBreaker.OpenedCircuitBreaker += (sender, args) => _openedEventFired = true;
 }
 protected override void Given()
 {
     base.Given();
     _caughtExceptions = new List<Exception>();
     _thrownException = new ArgumentNullException();
     _config = new CircuitBreakerConfig
     {
         Timeout = TimeSpan.FromMilliseconds(1000),
         UseTimeout = true,
         OpenEventTolerance = 2
     };
     _circuitBreaker = new CircuitBreaker(_config);
     _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenedCount++;
 }
        protected override void Given()
        {
            base.Given();
            _caughtExceptions = new List<Exception>();
            _config = new CircuitBreakerConfig
            {
                UseTimeout = true,
                Timeout = TimeSpan.FromMilliseconds(0),
                OpenEventTolerance = 2
            };

            _circuitBreaker = new CircuitBreaker(_config);
            _circuitBreaker.OpenedCircuitBreaker += (sender, args) => _openedEventFired = true;
            _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenedCount++;
        }
        protected override void Given()
        {
            base.Given();
            _config = new CircuitBreakerConfig
            {
                ExpectedExceptionListType = ExceptionListType.BlackList,
                ExpectedExceptionList = new List<Type> { typeof (IndexOutOfRangeException) },
                OpenEventTolerance = 5,
            };

            _circuitBreaker = new CircuitBreaker(_config);
            _circuitBreaker.OpenedCircuitBreaker += (sender, args) => _openedEventCount++;
            _circuitBreaker.ToleratedOpenCircuitBreaker += (sender, args) => _toleratedOpenedEventFired = true;
            _thrownException = new IndexOutOfRangeException();
            _circuitBreaker.State = BreakerState.Open;
        }
        protected override void Given()
        {
            base.Given();
            _config = new CircuitBreakerConfig
            {
                ExpectedExceptionListType = ExceptionListType.WhiteList,
                ExpectedExceptionList = new List<Type> { typeof (IndexOutOfRangeException) },
                OpenEventTolerance = 5,
                UseTimeout = true,
                Timeout = TimeSpan.FromSeconds(10),
            };

            _circuitBreaker = new CircuitBreaker(_config);
            _circuitBreaker.ClosedCircuitBreaker += (sender, args) => _closedEventCount++;
            _thrownException = new IndexOutOfRangeException();

            _circuitBreaker.State = BreakerState.Open;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CircuitBreakerTimedOutException"/> class.
 /// </summary>
 /// <param name="config">The configuration.</param>
 public CircuitBreakerTimedOutException(CircuitBreakerConfig config)
     : base(config)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CircuitBreakerExecutionErrorException"/> class.
 /// </summary>
 /// <param name="config">The configuration.</param>
 /// <param name="exception">The exception.</param>
 public CircuitBreakerExecutionErrorException(CircuitBreakerConfig config, Exception exception)
     : base(config, exception)
 {
 }
 protected override void Given()
 {
     base.Given();
     _config = new CircuitBreakerConfig();
     _circuitBreaker = new CircuitBreaker(_config);
 }
 /// <summary>
 /// Constructor without an event factory - the breaker will just raise normal .Net events for you to handle
 /// </summary>
 /// <param name="config">The config for the breaker</param>
 public CircuitBreaker(CircuitBreakerConfig config)
 {
     _config = config;
 }
 /// <summary>
 /// Standard CircuitBreakerException constructor
 /// </summary>
 /// <param name="config"></param>
 public ActionResultNotGoodException(CircuitBreakerConfig config) : base(config)
 {
 }
 private void AddConfig(CircuitBreakerConfig config)
 {
     Config = config;
     Data.Add("CircuitBreakerConfig", Config);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CircuitBreakerException"/> class.
 /// </summary>
 /// <param name="config">The configuration.</param>
 /// <param name="innerException">The inner exception.</param>
 protected CircuitBreakerException(CircuitBreakerConfig config, Exception innerException)
     : base(string.Empty, innerException)
 {
     AddConfig(config);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CircuitBreakerException"/> class.
 /// </summary>
 /// <param name="config">The configuration.</param>
 protected CircuitBreakerException(CircuitBreakerConfig config)
 {
     AddConfig(config);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CircuitBreakerOpenException"/> class.
 /// </summary>
 /// <param name="config">The configuration.</param>
 public CircuitBreakerOpenException(CircuitBreakerConfig config) : base(config)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">Configuration for the source breaker</param>
 /// <param name="reason">The reason for opening</param>
 /// <param name="exception">The original exception</param>
 public OpenedCircuitBreakerEventArgs(CircuitBreakerConfig config, BreakerOpenReason reason, Exception exception) : base(config)
 {
     this.Reason = reason;
     Exception = exception;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">The config for the source breaker</param>
 public CircuitBreakerEventArgs(CircuitBreakerConfig config)
 {
     Config = config;
 }