Improved test timing for CommandExecutor.

pull/2250/head
Taloth Saldono 7 years ago
parent e01e822394
commit 090dd45541

@ -35,6 +35,15 @@ namespace NzbDrone.Core.Test.Messaging.Commands
.Returns(_executorB.Object); .Returns(_executorB.Object);
} }
[TearDown]
public void TearDown()
{
Subject.Handle(new ApplicationShutdownRequested());
// Give the threads a bit of time to shut down.
Thread.Sleep(10);
}
private void GivenCommandQueue() private void GivenCommandQueue()
{ {
_commandQueue = new BlockingCollection<CommandModel>(new CommandQueue()); _commandQueue = new BlockingCollection<CommandModel>(new CommandQueue());
@ -44,8 +53,10 @@ namespace NzbDrone.Core.Test.Messaging.Commands
.Returns(_commandQueue.GetConsumingEnumerable); .Returns(_commandQueue.GetConsumingEnumerable);
} }
private void WaitForExecution(CommandModel commandModel) private void QueueAndWaitForExecution(CommandModel commandModel)
{ {
Thread.Sleep(10);
Mocker.GetMock<IManageCommandQueue>() Mocker.GetMock<IManageCommandQueue>()
.Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), It.IsAny<string>())) .Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), It.IsAny<string>()))
.Callback(() => _commandExecuted = true); .Callback(() => _commandExecuted = true);
@ -54,12 +65,14 @@ namespace NzbDrone.Core.Test.Messaging.Commands
.Setup(s => s.Fail(It.Is<CommandModel>(c => c == commandModel), It.IsAny<string>(), It.IsAny<Exception>())) .Setup(s => s.Fail(It.Is<CommandModel>(c => c == commandModel), It.IsAny<string>(), It.IsAny<Exception>()))
.Callback(() => _commandExecuted = true); .Callback(() => _commandExecuted = true);
_commandQueue.Add(commandModel);
while (!_commandExecuted) while (!_commandExecuted)
{ {
Thread.Sleep(100); Thread.Sleep(100);
} }
var t1 = 1; Thread.Sleep(10);
} }
[Test] [Test]
@ -82,9 +95,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
}; };
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
_executorA.Verify(c => c.Execute(commandA), Times.Once()); _executorA.Verify(c => c.Execute(commandA), Times.Once());
} }
@ -100,9 +112,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
}; };
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
_executorA.Verify(c => c.Execute(commandA), Times.Once()); _executorA.Verify(c => c.Execute(commandA), Times.Once());
_executorB.Verify(c => c.Execute(It.IsAny<CommandB>()), Times.Never()); _executorB.Verify(c => c.Execute(It.IsAny<CommandB>()), Times.Never());
@ -122,9 +133,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
.Throws(new NotImplementedException()); .Throws(new NotImplementedException());
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
VerifyEventPublished<CommandExecutedEvent>(); VerifyEventPublished<CommandExecutedEvent>();
ExceptionVerification.ExpectedErrors(1); ExceptionVerification.ExpectedErrors(1);
@ -141,9 +151,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
}; };
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
VerifyEventPublished<CommandExecutedEvent>(); VerifyEventPublished<CommandExecutedEvent>();
} }
@ -159,9 +168,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
}; };
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
Mocker.GetMock<IManageCommandQueue>() Mocker.GetMock<IManageCommandQueue>()
.Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), commandA.CompletionMessage)) .Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), commandA.CompletionMessage))
@ -180,9 +188,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
}; };
Subject.Handle(new ApplicationStartedEvent()); Subject.Handle(new ApplicationStartedEvent());
_commandQueue.Add(commandModel);
WaitForExecution(commandModel); QueueAndWaitForExecution(commandModel);
Mocker.GetMock<IManageCommandQueue>() Mocker.GetMock<IManageCommandQueue>()
.Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), commandModel.Message)) .Setup(s => s.Complete(It.Is<CommandModel>(c => c == commandModel), commandModel.Message))

Loading…
Cancel
Save