Improved test timing for CommandExecutor.
This commit is contained in:
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))
|
||||||
|
@ -202,10 +209,10 @@ namespace NzbDrone.Core.Test.Messaging.Commands
|
||||||
|
|
||||||
public CommandB()
|
public CommandB()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string CompletionMessage => null;
|
public override string CompletionMessage => null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue