Tatham Oddie is sharing code with you

Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.

Don't show this again

tatham / reliability-patterns-with-autofac

Clone this repository (size: 1.5 MB): HTTPS / SSH
hg clone https://bitbucket.org/tatham/reliability-patterns-with-autofac
hg clone ssh://hg@bitbucket.org/tatham/reliability-patterns-with-autofac

reliability-patterns-with-autofac / Tests / CircuitBreakerTests.cs

Branch
default
using Autofac;
using Autofac.Features.Indexed;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ReliabilityPatterns;

namespace Tests
{
    [TestClass]
    public class CircuitBreakerTests
    {
        public enum ExternalServices
        {
            ServiceA,
            ServiceB
        }

        public class ClientA
        {
            readonly CircuitBreaker breaker;

            public ClientA(IIndex<ExternalServices, CircuitBreaker> circuitBreakers)
            {
                breaker = circuitBreakers[ExternalServices.ServiceA];
            }

            public CircuitBreaker Breaker
            {
                get { return breaker; }
            }
        }

        [TestMethod]
        public void ShouldRetrieveADifferentCircuitBreakerPerExternalService()
        {
            // Arrange
            var builder = new ContainerBuilder();
            builder
                .RegisterInstance(new CircuitBreaker() { Threshold = 5 })
                .Keyed<CircuitBreaker>(ExternalServices.ServiceA);
            builder
                .RegisterInstance(new CircuitBreaker() { Threshold = 10 })
                .Keyed<CircuitBreaker>(ExternalServices.ServiceB);
            builder.RegisterType<ClientA>().AsSelf();

            var container = builder.Build();

            // Act
            var client = container.Resolve<ClientA>();

            // Assert
            Assert.AreEqual((uint)5, client.Breaker.Threshold);
        }
    }
}