public async Task AddLease_ThrowsException_LeaseAddingContinues()
        {
            FailingPartitionController controller = new FailingPartitionController();

            // long acquire interval to ensure that only 1 load balancing iteration is performed in a test run
            var leaseAcquireInterval = TimeSpan.FromHours(1);
            var loadBalancer         = new PartitionLoadBalancer(controller, this.leaseManager, this.strategy, leaseAcquireInterval);

            Mock.Get(this.strategy)
            .Setup(s => s.SelectLeasesToTake(It.IsAny <IEnumerable <ILease> >()))
            .Returns(new[] { Mock.Of <ILease>(), Mock.Of <ILease>() });

            Mock.Get(this.leaseManager)
            .Setup(m => m.ListAllLeasesAsync())
            .ReturnsAsync(new[] { Mock.Of <ILease>(), Mock.Of <ILease>() });

            loadBalancer.Start();
            await loadBalancer.StopAsync();

            Mock.Get(this.strategy)
            .Verify(s => s.SelectLeasesToTake(It.IsAny <IEnumerable <ILease> >()), Times.Once);

            Mock.Get(this.leaseManager)
            .Verify(m => m.ListAllLeasesAsync(), Times.Once);

            Assert.Equal(2, controller.HitCount);
        }