public MenuReliableService(StatefulServiceContext context) : base(context) { this.circuitBreaker = new CircuitBreakerManager(50000); this.menuActionService = new MenuActionService(); this.menuFailActionService = new MenuFailActionService(); }
public CartController() { circuitBreaker = new CircuitBreakerManager(5000); httpDelegateHandler = new HttpDelegateHandler(); client = HttpClientFactory.Create(httpDelegateHandler); client.BaseAddress = new Uri("https://127.0.0.1/api"); }
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); }
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)); } }
public void ServiceOffCircuitBreakerOff() { var circuitBreakerManager = new CircuitBreakerManager(circuitBreaker, sessionState); circuitBreakerManager.CircuitBreakerEnabled = false; circuitBreakerManager.ServiceEnabled = false; var result = circuitBreakerManager.PerformAction(); Assert.IsFalse(result.IsSuccess); }
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); }
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); }
public void Setup() { _sut = new CircuitBreakerManager(); _sut.Registry.Clear(); _testPolicy = GetCircuitBreakerPolicy(); }
private void AssertManagerContainsPolicy(CircuitBreakerManager instance, string policyName) { Assert.AreEqual(1, instance.GetKeys().Count()); Assert.AreEqual(policyName, instance.GetKeys().ElementAt(0)); }