From 090dd455412d39f769945ea57eb9e23e145ca492 Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Wed, 18 Oct 2017 23:15:59 +0200 Subject: [PATCH] Improved test timing for CommandExecutor. --- .../Commands/CommandExecutorFixture.cs | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/NzbDrone.Core.Test/Messaging/Commands/CommandExecutorFixture.cs b/src/NzbDrone.Core.Test/Messaging/Commands/CommandExecutorFixture.cs index 452212815..b11ffa2d7 100644 --- a/src/NzbDrone.Core.Test/Messaging/Commands/CommandExecutorFixture.cs +++ b/src/NzbDrone.Core.Test/Messaging/Commands/CommandExecutorFixture.cs @@ -35,6 +35,15 @@ namespace NzbDrone.Core.Test.Messaging.Commands .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() { _commandQueue = new BlockingCollection(new CommandQueue()); @@ -44,8 +53,10 @@ namespace NzbDrone.Core.Test.Messaging.Commands .Returns(_commandQueue.GetConsumingEnumerable); } - private void WaitForExecution(CommandModel commandModel) + private void QueueAndWaitForExecution(CommandModel commandModel) { + Thread.Sleep(10); + Mocker.GetMock() .Setup(s => s.Complete(It.Is(c => c == commandModel), It.IsAny())) .Callback(() => _commandExecuted = true); @@ -54,12 +65,14 @@ namespace NzbDrone.Core.Test.Messaging.Commands .Setup(s => s.Fail(It.Is(c => c == commandModel), It.IsAny(), It.IsAny())) .Callback(() => _commandExecuted = true); + _commandQueue.Add(commandModel); + while (!_commandExecuted) { Thread.Sleep(100); } - var t1 = 1; + Thread.Sleep(10); } [Test] @@ -82,9 +95,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands }; Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); _executorA.Verify(c => c.Execute(commandA), Times.Once()); } @@ -100,9 +112,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands }; Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); _executorA.Verify(c => c.Execute(commandA), Times.Once()); _executorB.Verify(c => c.Execute(It.IsAny()), Times.Never()); @@ -122,9 +133,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands .Throws(new NotImplementedException()); Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); VerifyEventPublished(); ExceptionVerification.ExpectedErrors(1); @@ -141,9 +151,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands }; Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); VerifyEventPublished(); } @@ -159,9 +168,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands }; Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); Mocker.GetMock() .Setup(s => s.Complete(It.Is(c => c == commandModel), commandA.CompletionMessage)) @@ -180,9 +188,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands }; Subject.Handle(new ApplicationStartedEvent()); - _commandQueue.Add(commandModel); - WaitForExecution(commandModel); + QueueAndWaitForExecution(commandModel); Mocker.GetMock() .Setup(s => s.Complete(It.Is(c => c == commandModel), commandModel.Message)) @@ -202,10 +209,10 @@ namespace NzbDrone.Core.Test.Messaging.Commands public CommandB() { - + } public override string CompletionMessage => null; } -} \ No newline at end of file +}