コード例 #1
0
 public MenuReliableService(StatefulServiceContext context)
     : base(context)
 {
     this.circuitBreaker        = new CircuitBreakerManager(50000);
     this.menuActionService     = new MenuActionService();
     this.menuFailActionService = new MenuFailActionService();
 }
コード例 #2
0
 public CartController()
 {
     circuitBreaker      = new CircuitBreakerManager(5000);
     httpDelegateHandler = new HttpDelegateHandler();
     client             = HttpClientFactory.Create(httpDelegateHandler);
     client.BaseAddress = new Uri("https://127.0.0.1/api");
 }
コード例 #3
0
        public void CircuitBreakerTripAndReset()
        {
            var circuitBreakerManager = new CircuitBreakerManager(circuitBreaker, sessionState);

            circuitBreakerManager.CircuitBreakerEnabled = true;
            circuitBreakerManager.ServiceEnabled        = false;
            var result = circuitBreakerManager.PerformAction();

            //see service failure message
            Assert.IsFalse(result.IsSuccess);
            Assert.AreEqual(CircuitBreakerManager.FailureMessage, result.Message);
            //try again to open circuit breaker
            result = circuitBreakerManager.PerformAction();
            Assert.IsFalse(result.IsSuccess);
            Assert.AreEqual(CircuitBreakerManager.FailureMessage, result.Message);
            //try again to see circuit breaker failure message
            result = circuitBreakerManager.PerformAction();
            Assert.IsFalse(result.IsSuccess);
            Assert.AreEqual(CircuitBreakerOpenException.ErrorMessage, result.Message);
            //wait 61 seconds for breaker to reset and set service to on and see success
            Thread.Sleep(61000);
            circuitBreakerManager.ServiceEnabled = true;
            result = circuitBreakerManager.PerformAction();
            Assert.IsTrue(result.IsSuccess);
        }
コード例 #4
0
        private void AssertManagerContainsPolicies(CircuitBreakerManager instance, IDictionary <string, ICircuitBreakerPolicy> policies)
        {
            var keys = instance.GetKeys();

            Assert.AreEqual(policies.Count, keys.Count());
            foreach (var policy in policies)
            {
                Assert.IsTrue(keys.Contains(policy.Key));
            }
        }
コード例 #5
0
        public void ServiceOffCircuitBreakerOff()
        {
            var circuitBreakerManager = new CircuitBreakerManager(circuitBreaker, sessionState);

            circuitBreakerManager.CircuitBreakerEnabled = false;
            circuitBreakerManager.ServiceEnabled        = false;
            var result = circuitBreakerManager.PerformAction();

            Assert.IsFalse(result.IsSuccess);
        }
コード例 #6
0
        private IServiceCollection SetupRegisteredManager(string policyName = null)
        {
            var serviceCollection = new ServiceCollectionImpl();
            var manager           = new CircuitBreakerManager();

            if (!string.IsNullOrEmpty(policyName))
            {
                manager.TryAdd(policyName, GetCircuitBreakerPolicy());
            }
            serviceCollection.AddSingleton <ICircuitBreakerManager>(manager);

            return(serviceCollection);
        }
コード例 #7
0
        private static ICircuitBreakerManager GetOrAddManager(IServiceCollection services)
        {
            ICircuitBreakerManager manager;

            using (var provider = services.BuildServiceProvider())
            {
                manager = provider.GetService <ICircuitBreakerManager>();
                if (manager == null)
                {
                    manager = new CircuitBreakerManager();
                    _       = services.AddSingleton(manager);
                }
            }

            return(manager);
        }
コード例 #8
0
 public void Setup()
 {
     _sut = new CircuitBreakerManager();
     _sut.Registry.Clear();
     _testPolicy = GetCircuitBreakerPolicy();
 }
コード例 #9
0
 private void AssertManagerContainsPolicy(CircuitBreakerManager instance, string policyName)
 {
     Assert.AreEqual(1, instance.GetKeys().Count());
     Assert.AreEqual(policyName, instance.GetKeys().ElementAt(0));
 }