diff --git a/src/NzbDrone.Core.Test/Messaging/Commands/CommandQueueManagerFixture.cs b/src/NzbDrone.Core.Test/Messaging/Commands/CommandQueueManagerFixture.cs new file mode 100644 index 000000000..16178a9cc --- /dev/null +++ b/src/NzbDrone.Core.Test/Messaging/Commands/CommandQueueManagerFixture.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using System.Linq; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Download; +using NzbDrone.Core.Messaging.Commands; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.Messaging.Commands +{ + [TestFixture] + public class CommandQueueManagerFixture : CoreTest + { + [SetUp] + public void Setup() + { + var id = 0; + var commands = new List(); + + Mocker.GetMock() + .Setup(s => s.Insert(It.IsAny())) + .Returns(c => + { + c.Id = id + 1; + commands.Add(c); + id++; + + return c; + }); + + Mocker.GetMock() + .Setup(s => s.Get(It.IsAny())) + .Returns(c => + { + return commands.SingleOrDefault(e => e.Id == c); + }); + } + + [Test] + public void should_not_remove_commands_for_five_minutes_after_they_end() + { + var command = Subject.Push(new CheckForFinishedDownloadCommand()); + + Subject.Start(command); + Subject.Complete(command, "All done"); + Subject.CleanCommands(); + + Subject.Get(command.Id).Should().NotBeNull(); + + Mocker.GetMock() + .Verify(v => v.Get(It.IsAny()), Times.Never()); + } + } +} diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index cff9fe01d..89a369972 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -251,6 +251,7 @@ + diff --git a/src/NzbDrone.Core/Messaging/Commands/CommandQueueManager.cs b/src/NzbDrone.Core/Messaging/Commands/CommandQueueManager.cs index 41ab6bf91..23b0cf53d 100644 --- a/src/NzbDrone.Core/Messaging/Commands/CommandQueueManager.cs +++ b/src/NzbDrone.Core/Messaging/Commands/CommandQueueManager.cs @@ -151,7 +151,7 @@ namespace NzbDrone.Core.Messaging.Commands { _logger.Trace("Cleaning up old commands"); - var old = _commandCache.Values.Where(c => c.EndedAt < DateTime.UtcNow.AddMinutes(5)); + var old = _commandCache.Values.Where(c => c.EndedAt < DateTime.UtcNow.AddMinutes(-5)); foreach (var command in old) {