public void ReturnsBasedOnScoringFunction() { var balancer = new AdaptiveLoadBalancer <Scoreable>(s => (int)(s.PercentMemoryUsec * 100)); balancer.Resources.Add(new Scoreable { Uri = new Uri("http://base.one"), PercentMemoryUsec = .25 }); balancer.Resources.Add(new Scoreable { Uri = new Uri("http://base.two"), PercentMemoryUsec = .75 }); balancer.Resources.Add(new Scoreable { Uri = new Uri("http://base.three"), PercentMemoryUsec = .5 }); var item = balancer.GetResource(); item.Uri.Should().Be(new Uri("http://base.one")); item.PercentMemoryUsec = .8; item = balancer.GetResource(); item.Uri.Should().Be(new Uri("http://base.three")); balancer.GetResource().Should().BeSameAs(item); }
public void OnlyItemReturnedEveryTime() { var balancer = new AdaptiveLoadBalancer <Scoreable>(s => (int)(s.PercentMemoryUsec * 100)); balancer.Resources.Add(new Scoreable { Uri = new Uri("http://only.one"), PercentMemoryUsec = .75 }); var sameAsFirst = balancer.GetResource(); sameAsFirst.Should().NotBeNull(); foreach (var _ in Enumerable.Range(1, 100)) { balancer.GetResource().Should().Be(sameAsFirst); } }
public void NothingReturnedWhenNoEntries() { var balancer = new AdaptiveLoadBalancer <Scoreable>(s => (int)(s.PercentMemoryUsec * 100)); balancer.GetResource().Should().BeNull(); }