From a5dd0cce299567a2a4b2056af5c8b6c7cdf9af6e Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 9 Dec 2014 20:48:25 -0800 Subject: [PATCH] Fixed: Delays use minutes not hours --- src/NzbDrone.Api/Indexers/ReleaseResource.cs | 1 + .../RssSync/DelaySpecificationFixture.cs | 10 +++++----- .../Specifications/RssSync/DelaySpecification.cs | 6 +++--- src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs | 12 ++++++++++++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/NzbDrone.Api/Indexers/ReleaseResource.cs b/src/NzbDrone.Api/Indexers/ReleaseResource.cs index ddf8003315..3086113c58 100644 --- a/src/NzbDrone.Api/Indexers/ReleaseResource.cs +++ b/src/NzbDrone.Api/Indexers/ReleaseResource.cs @@ -14,6 +14,7 @@ public class ReleaseResource : RestResource public Int32 QualityWeight { get; set; } public Int32 Age { get; set; } public Double AgeHours { get; set; } + public Double AgeMinutes { get; set; } public Int64 Size { get; set; } public String Indexer { get; set; } public String ReleaseGroup { get; set; } diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs index df8c9939fd..8129043fe1 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs @@ -114,7 +114,7 @@ public void should_be_true_when_release_is_older_than_delay() _remoteEpisode.ParsedEpisodeInfo.Quality = new QualityModel(Quality.HDTV720p); _remoteEpisode.Release.PublishDate = DateTime.UtcNow.AddHours(-10); - _delayProfile.UsenetDelay = 1; + _delayProfile.UsenetDelay = 60; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -125,7 +125,7 @@ public void should_be_false_when_release_is_younger_than_delay() _remoteEpisode.ParsedEpisodeInfo.Quality = new QualityModel(Quality.SDTV); _remoteEpisode.Release.PublishDate = DateTime.UtcNow; - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse(); } @@ -143,7 +143,7 @@ public void should_be_true_when_release_is_a_proper_for_existing_episode() .Setup(s => s.IsRevisionUpgrade(It.IsAny(), It.IsAny())) .Returns(true); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -161,7 +161,7 @@ public void should_be_true_when_release_is_a_real_for_existing_episode() .Setup(s => s.IsRevisionUpgrade(It.IsAny(), It.IsAny())) .Returns(true); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -174,7 +174,7 @@ public void should_be_false_when_release_is_proper_for_existing_episode_of_diffe GivenExistingFile(new QualityModel(Quality.SDTV)); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse(); } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs index 5b4e23608c..a824fa298e 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs @@ -85,14 +85,14 @@ public virtual Decision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase var oldest = _pendingReleaseService.OldestPendingRelease(subject.Series.Id, episodeIds); - if (oldest != null && oldest.Release.AgeHours > delay) + if (oldest != null && oldest.Release.AgeMinutes > delay) { return Decision.Accept(); } - if (subject.Release.AgeHours < delay) + if (subject.Release.AgeMinutes < delay) { - _logger.Debug("Waiting for better quality release, There is a {0} hour delay on {1}", delay, subject.Release.DownloadProtocol); + _logger.Debug("Waiting for better quality release, There is a {0} minute delay on {1}", delay, subject.Release.DownloadProtocol); return Decision.Reject("Waiting for better quality release"); } diff --git a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs index 91fb3acdb4..7f19c5ce4a 100644 --- a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs @@ -40,6 +40,18 @@ public Double AgeHours private set { } } + public Double AgeMinutes + { + get + { + return DateTime.UtcNow.Subtract(PublishDate).TotalMinutes; + } + + //This prevents manually downloading a release from blowing up in mono + //TODO: Is there a better way? + private set { } + } + public override string ToString() { return String.Format("[{0}] {1} [{2}]", PublishDate, Title, Size);