public async Task Monitor_NoTimeout() { var connection = new TestConnection(); var task = new OperationTask(); var flow = new OperationTaskflow(task); List <OperationEvent> received = new List <OperationEvent>(); void callback(OperationEvent operationEvent) { received.Add(operationEvent); } var monitor = new OperationMonitor( flow, TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200), connection, callback); // Time to start monitoring await Task.Delay(100); monitor.Update(TaskProgress.Acknowledged); await Task.Delay(100); flow.Update(TaskProgress.Confirmed); await Task.Delay(300); Assert.AreEqual(0, received.Count); Assert.IsTrue(monitor.IsComplete); }
public void Monitor_AcknowledgeLost() { var connection = new TestConnection(); var task = new OperationTask(); var flow = new OperationTaskflow(task); AutoResetEvent signal = new AutoResetEvent(false); void callback(OperationEvent operationEvent) { signal.Set(); } connection.NextStatus = new OperationStatus { Events = new[] { new OperationEvent() }, RetryAfter = TimeSpan.FromMilliseconds(100) }; var monitor = new OperationMonitor( flow, TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(2000), connection, callback); Assert.IsTrue(signal.WaitOne(200)); Assert.IsTrue(signal.WaitOne(200)); Assert.IsTrue(signal.WaitOne(200)); monitor.Update(TaskProgress.Confirmed); Assert.IsFalse(signal.WaitOne(200)); Assert.IsTrue(monitor.IsComplete); }