1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-04-17 21:26:22 -04:00

Fixed: Don't attempt to fetch a release if the download client is disabled

This commit is contained in:
Mark McDowall
2017-09-01 22:33:10 -07:00
parent 6626397350
commit 5372ed5d40
3 changed files with 30 additions and 3 deletions

View File

@@ -22,6 +22,7 @@ namespace NzbDrone.Core.Test.Download
{
private RemoteEpisode _parseResult;
private List<IDownloadClient> _downloadClients;
[SetUp]
public void Setup()
{
@@ -180,7 +181,7 @@ namespace NzbDrone.Core.Test.Download
}
[Test]
public void should_not_attempt_download_if_client_isnt_configure()
public void should_not_attempt_download_if_client_isnt_configured()
{
Assert.Throws<DownloadClientUnavailableException>(() => Subject.DownloadReport(_parseResult));
@@ -188,6 +189,21 @@ namespace NzbDrone.Core.Test.Download
VerifyEventNotPublished<EpisodeGrabbedEvent>();
}
[Test]
public void should_not_attempt_download_if_client_is_disabled()
{
WithUsenetClient();
Mocker.GetMock<IDownloadClientStatusService>()
.Setup(v => v.IsDisabled(It.IsAny<int>()))
.Returns(true);
Assert.Throws<DownloadClientUnavailableException>(() => Subject.DownloadReport(_parseResult));
Mocker.GetMock<IDownloadClient>().Verify(c => c.Download(It.IsAny<RemoteEpisode>()), Times.Never());
VerifyEventNotPublished<EpisodeGrabbedEvent>();
}
[Test]
public void should_send_download_to_correct_usenet_client()
{

View File

@@ -1,4 +1,4 @@
using System;
using System;
using NLog;
using NzbDrone.Common.EnsureThat;
using NzbDrone.Common.Extensions;
@@ -56,6 +56,11 @@ namespace NzbDrone.Core.Download
throw new DownloadClientUnavailableException($"{remoteEpisode.Release.DownloadProtocol} Download client isn't configured yet");
}
if (_downloadClientStatusService.IsDisabled(downloadClient.Definition.Id))
{
throw new DownloadClientUnavailableException($"{downloadClient.Name} is disabled due to recent failues");
}
// Limit grabs to 2 per second.
if (remoteEpisode.Release.DownloadUrl.IsNotNullOrWhiteSpace() && !remoteEpisode.Release.DownloadUrl.StartsWith("magnet:"))
{

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using NLog;
@@ -10,6 +10,7 @@ namespace NzbDrone.Core.ThingiProvider.Status
public interface IProviderStatusServiceBase<TModel>
where TModel : ProviderStatusBase, new()
{
bool IsDisabled(int providerId);
List<TModel> GetBlockedProviders();
void RecordSuccess(int providerId);
void RecordFailure(int providerId, TimeSpan minimumBackOff = default(TimeSpan));
@@ -36,6 +37,11 @@ namespace NzbDrone.Core.ThingiProvider.Status
_logger = logger;
}
public bool IsDisabled(int providerId)
{
return GetProviderStatus(providerId).IsDisabled();
}
public virtual List<TModel> GetBlockedProviders()
{
return _providerStatusRepository.All().Where(v => v.IsDisabled()).ToList();