public void Stop_ServiceIsStopped_StatusIsNotChanged() { // Arrange var systemInformationProvider = new Mock<ISystemInformationProvider>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object); var messageQueueFeederTask = new Task(messageQueueFeeder.Start); messageQueueFeederTask.Start(); messageQueueFeeder.Stop(); var statusBeforeStop = messageQueueFeeder.GetStatus(); // Act messageQueueFeeder.Stop(); var statusAfterStop = messageQueueFeeder.GetStatus(); // Assert Assert.AreEqual(statusBeforeStop, statusAfterStop); }
public void Stop_EndsARunningService() { // Arrange int durationInMilliseconds = SystemInformationMessageQueueFeeder.SendIntervalInMilliseconds * 3; var systemInformationProvider = new Mock<ISystemInformationProvider>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object); var messageQueueFeederTask = new Task(messageQueueFeeder.Start); messageQueueFeederTask.Start(); // Act Thread.Sleep(durationInMilliseconds); messageQueueFeeder.Stop(); // Assert Assert.AreEqual(ServiceStatus.Stopped, messageQueueFeeder.GetStatus()); }
public void Start_SystemInformationProviderReturnsSystemInformation_SystemInformationIsAddedToQueue() { // Arrange int durationInMilliseconds = SystemInformationMessageQueueFeeder.SendIntervalInMilliseconds * 2; var systemInformationProvider = new Mock<ISystemInformationProvider>(); systemInformationProvider.Setup(s => s.GetSystemInfo()).Returns(() => new SystemInformation { MachineName = Environment.MachineName, Timestamp = DateTime.UtcNow }); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object)) { // Act var feederTask = new Task(messageQueueFeeder.Start); feederTask.Start(); Task.WaitAll(new[] { feederTask }, durationInMilliseconds); messageQueueFeeder.Stop(); // Assert workQueue.Verify(s => s.Enqueue(It.IsAny<SystemInformationQueueItem>()), Times.AtLeastOnce()); } }
public void Start_SystemInformationProviderReturnsNull_InfoIsNotQueued() { // Arrange int durationInMilliseconds = SystemInformationMessageQueueFeeder.SendIntervalInMilliseconds * 2; var systemInformationProvider = new Mock<ISystemInformationProvider>(); SystemInformation systemInformation = null; systemInformationProvider.Setup(s => s.GetSystemInfo()).Returns(systemInformation); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object)) { // Act var feederTaks = new Task(messageQueueFeeder.Start); feederTaks.Start(); Task.WaitAll(new[] { feederTaks }, durationInMilliseconds); messageQueueFeeder.Stop(); // Assert workQueue.Verify(s => s.Enqueue(It.IsAny<SystemInformationQueueItem>()), Times.Never()); } }
public void Start_RunFor3Intervals_SystemInfoIsPulledAtMostThreeTimes() { // Arrange int durationInMilliseconds = SystemInformationMessageQueueFeeder.SendIntervalInMilliseconds * 3; var systemInformationProvider = new Mock<ISystemInformationProvider>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object)) { // Act var feederTask = new Task(messageQueueFeeder.Start); feederTask.Start(); Task.WaitAll(new[] { feederTask }, durationInMilliseconds); messageQueueFeeder.Stop(); // Assert systemInformationProvider.Verify(s => s.GetSystemInfo(), Times.AtMost(3)); } }
public void Resume_ServiceIsStopped_StatusIsStillStopped() { // Arrange var systemInformationProvider = new Mock<ISystemInformationProvider>(); var workQueue = new Mock<IMessageQueue<SystemInformation>>(); using (var messageQueueFeeder = new SystemInformationMessageQueueFeeder(systemInformationProvider.Object, workQueue.Object)) { var messageQueueFeederTask = new Task(messageQueueFeeder.Start); messageQueueFeederTask.Start(); messageQueueFeeder.Stop(); // Act messageQueueFeeder.Resume(); // Assert Assert.AreEqual(ServiceStatus.Stopped, messageQueueFeeder.GetStatus()); } }