public void Should_limit_last_value_tail_timeout_by_remaining_budget() { var provider = new AdHocTimeoutsProvider(TailTimeoutBehaviour.RepeatLastValue, () => 5.Seconds(), () => 3.Seconds(), () => 7.Seconds()); var budget = Budget.WithRemaining(6.Seconds()); provider.GetTimeout(request, budget, 3, 5).Should().Be(6.Seconds()); provider.GetTimeout(request, budget, 4, 5).Should().Be(6.Seconds()); }
public void Should_correctly_implement_last_value_tail_behaviour() { var provider = new AdHocTimeoutsProvider(TailTimeoutBehaviour.RepeatLastValue, () => 5.Seconds(), () => 3.Seconds(), () => 10.Seconds()); var budget = Budget.WithRemaining(15.Seconds()); provider.GetTimeout(request, budget, 3, 5).Should().Be(10.Seconds()); provider.GetTimeout(request, budget, 4, 5).Should().Be(10.Seconds()); }
public void Should_correctly_implement_whole_remaining_budget_tail_behaviour() { var provider = new AdHocTimeoutsProvider(() => 5.Seconds(), () => 3.Seconds(), () => 10.Seconds()); var budget = Budget.WithRemaining(15.Seconds()); provider.GetTimeout(request, budget, 3, 5).Should().Be(15.Seconds()); provider.GetTimeout(request, budget, 4, 5).Should().Be(15.Seconds()); }
public void Should_return_all_set_up_timeouts_one_by_one() { var provider = new AdHocTimeoutsProvider(() => 5.Seconds(), () => 3.Seconds(), () => 10.Seconds()); provider.GetTimeout(request, Budget.Infinite, 0, 5).Should().Be(5.Seconds()); provider.GetTimeout(request, Budget.Infinite, 1, 5).Should().Be(3.Seconds()); provider.GetTimeout(request, Budget.Infinite, 2, 5).Should().Be(10.Seconds()); }
public void Should_limit_set_up_timeouts_by_remaining_time_budget() { var provider = new AdHocTimeoutsProvider(() => 5.Seconds(), () => 3.Seconds(), () => 10.Seconds()); var budget = Budget.WithRemaining(4.Seconds()); provider.GetTimeout(request, budget, 0, 5).Should().Be(4.Seconds()); provider.GetTimeout(request, budget, 1, 5).Should().Be(3.Seconds()); provider.GetTimeout(request, budget, 2, 5).Should().Be(4.Seconds()); }
public void Should_evaluate_the_delegate_each_time() { var cumulative = 0.Seconds(); var provider = new AdHocTimeoutsProvider( () => { cumulative += 1.Seconds(); return(cumulative); }); provider.GetTimeout(request, Budget.Infinite, 0, 3).Should().Be(1.Seconds()); provider.GetTimeout(request, Budget.Infinite, 0, 3).Should().Be(2.Seconds()); provider.GetTimeout(request, Budget.Infinite, 0, 3).Should().Be(3.Seconds()); provider.GetTimeout(request, Budget.Infinite, 0, 3).Should().Be(4.Seconds()); }