public void Resume_ServiceIsPaused_StatusIsChangedToRunning() { // Arrange var systemInformationSender = new Mock<ISystemInformationSender>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); workQueue.Setup(w => w.Dequeue()).Returns(new SystemInformationQueueItem(new SystemInformation())); var errorQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueWorker = new SystemInformationMessageQueueWorker(systemInformationSender.Object, workQueue.Object, errorQueue.Object)) { var workerTaks = new Task(messageQueueWorker.Start); workerTaks.Start(); Thread.Sleep(500); messageQueueWorker.Pause(); // Act Thread.Sleep(500); messageQueueWorker.Resume(); // Assert Assert.AreEqual(ServiceStatus.Running, messageQueueWorker.GetStatus()); } }
public void Pause_RunFor6Intervals_PauseIsCalledAfter3Intervals_SendIsCalledAtMostThreeTimes() { // Arrange int durationInMilliseconds = SystemInformationMessageQueueWorker.WorkIntervalInMilliseconds * 6; var systemInformationSender = new Mock<ISystemInformationSender>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); workQueue.Setup(w => w.Dequeue()).Returns(new SystemInformationQueueItem(new SystemInformation())); var errorQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueWorker = new SystemInformationMessageQueueWorker(systemInformationSender.Object, workQueue.Object, errorQueue.Object)) { // Act var workerTaks = new Task(messageQueueWorker.Start); workerTaks.Start(); Thread.Sleep(durationInMilliseconds / 2); messageQueueWorker.Pause(); // Assert systemInformationSender.Verify(s => s.Send(It.IsAny<SystemInformation>()), Times.AtMost(3)); } }