public void Should_Wait_For_Request_To_Finish_And_Then_Wait(SettlerType settlerType) { var testScheduler = new TestScheduler(); var(settler, matcher) = CreateSettlers(testScheduler, TimeSpan.FromTicks(100), TimeSpan.FromTicks(800)); matcher.ScheduleRelativeStart(settlerType, 0); matcher.ScheduleRelativeEnd(settlerType, 300); var observer = testScheduler.Start(() => settler.Settle().Take(1), 100, 100, ReactiveTest.Disposed); observer.Messages.Should().ContainInOrder( ReactiveTest.OnNext(401, Unit.Default), ReactiveTest.OnCompleted(401, Unit.Default) ); }
public void Should_Timeout_If_A_Request_Takes_To_Long(SettlerType settlerType) { var testScheduler = new TestScheduler(); var(settler, matcher) = CreateSettlers(testScheduler, TimeSpan.FromTicks(200), TimeSpan.FromTicks(500)); matcher.ScheduleAbsoluteStart(settlerType, 0); matcher.ScheduleAbsoluteEnd(settlerType, ReactiveTest.Disposed); var observer = testScheduler.Start(() => settler.Settle(), 100, 100, ReactiveTest.Disposed); observer.Messages.Should().ContainInOrder( ReactiveTest.OnNext(601, Unit.Default), ReactiveTest.OnCompleted(802, Unit.Default) ); }
public void Should_Complete_After_Final_Request_Timeout(SettlerType settlerTypeA, SettlerType settlerTypeB, SettlerType settlerTypeC) { var testScheduler = new TestScheduler(); var(settler, matcher) = CreateSettlers(testScheduler, TimeSpan.FromTicks(100), TimeSpan.FromTicks(800)); matcher.ScheduleAbsoluteStart(settlerTypeA, 0); matcher.ScheduleAbsoluteEnd(settlerTypeA, 200); matcher.ScheduleAbsoluteStart(settlerTypeB, 300); matcher.ScheduleAbsoluteEnd(settlerTypeB, 400); matcher.ScheduleAbsoluteStart(settlerTypeC, 500); matcher.ScheduleAbsoluteEnd(settlerTypeC, 550); var observer = testScheduler.Start(() => settler.Settle(), 100, 100, 2000); observer.Messages.Should().ContainInOrder( ReactiveTest.OnNext(301, Unit.Default), ReactiveTest.OnCompleted(1452, Unit.Default) ); }
public IDisposable ScheduleAbsoluteEnd(SettlerType settlerType, long dueTime) => settlerType switch {
public void Should_Wait_For_Overlapping_Requests_To_Finish_And_Then_Wait_On_Either_Side(SettlerType settlerTypeA, SettlerType settlerTypeB) { var testScheduler = new TestScheduler(); var(settler, matcher) = CreateSettlers(testScheduler, TimeSpan.FromTicks(100), TimeSpan.FromTicks(800)); matcher.ScheduleAbsoluteStart(settlerTypeA, 0); matcher.ScheduleAbsoluteStart(settlerTypeB, 200); matcher.ScheduleAbsoluteEnd(settlerTypeA, 250); matcher.ScheduleAbsoluteEnd(settlerTypeB, 350); var observer = testScheduler.Start(() => settler.Settle().Take(1), 100, 100, ReactiveTest.Disposed); observer.Messages.Should().ContainInOrder( ReactiveTest.OnNext(351, Unit.Default), ReactiveTest.OnCompleted(351, Unit.Default) ); }