From 79043f2c6498649ca508f56bfc4e17be2549b1e0 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 27 Feb 2017 23:49:55 -0800 Subject: [PATCH] Improve indexer health check messages Fixed: Improve health check message when all enabled indexers are disabled due to failures Closes #1551 --- .../HealthCheck/Checks/IndexerCheckFixture.cs | 8 +++---- .../NzbSearchServiceFixture.cs | 2 +- .../HealthCheck/Checks/IndexerCheck.cs | 14 +++++++++-- src/NzbDrone.Core/Indexers/IndexerFactory.cs | 24 +++++++++++-------- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/NzbDrone.Core.Test/HealthCheck/Checks/IndexerCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/Checks/IndexerCheckFixture.cs index 513784d27..8bf06b14b 100644 --- a/src/NzbDrone.Core.Test/HealthCheck/Checks/IndexerCheckFixture.cs +++ b/src/NzbDrone.Core.Test/HealthCheck/Checks/IndexerCheckFixture.cs @@ -23,25 +23,25 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks .Returns(new List { _indexerMock.Object }); Mocker.GetMock() - .Setup(s => s.RssEnabled()) + .Setup(s => s.RssEnabled(true)) .Returns(new List()); Mocker.GetMock() - .Setup(s => s.SearchEnabled()) + .Setup(s => s.SearchEnabled(true)) .Returns(new List()); } private void GivenRssEnabled() { Mocker.GetMock() - .Setup(s => s.RssEnabled()) + .Setup(s => s.RssEnabled(true)) .Returns(new List { _indexerMock.Object }); } private void GivenSearchEnabled() { Mocker.GetMock() - .Setup(s => s.SearchEnabled()) + .Setup(s => s.SearchEnabled(true)) .Returns(new List { _indexerMock.Object }); } diff --git a/src/NzbDrone.Core.Test/IndexerSearchTests/NzbSearchServiceFixture.cs b/src/NzbDrone.Core.Test/IndexerSearchTests/NzbSearchServiceFixture.cs index 9b01ad829..f6089004e 100644 --- a/src/NzbDrone.Core.Test/IndexerSearchTests/NzbSearchServiceFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerSearchTests/NzbSearchServiceFixture.cs @@ -28,7 +28,7 @@ namespace NzbDrone.Core.Test.IndexerSearchTests _mockIndexer.SetupGet(s => s.SupportsSearch).Returns(true); Mocker.GetMock() - .Setup(s => s.SearchEnabled()) + .Setup(s => s.SearchEnabled(true)) .Returns(new List { _mockIndexer.Object }); Mocker.GetMock() diff --git a/src/NzbDrone.Core/HealthCheck/Checks/IndexerCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/IndexerCheck.cs index 88347b690..199b81da3 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/IndexerCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/IndexerCheck.cs @@ -36,12 +36,22 @@ namespace NzbDrone.Core.HealthCheck.Checks if (rssEnabled.Empty()) { - return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers do not have RSS sync enabled"); + if (_indexerFactory.RssEnabled(false).Empty()) + { + return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers do not have RSS sync enabled"); + } + + return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers with RSS sync enabled are disabled due to recent failures"); } if (searchEnabled.Empty()) { - return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers do not have searching enabled"); + if (_indexerFactory.SearchEnabled(false).Empty()) + { + return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers do not have searching enabled"); + } + + return new HealthCheck(GetType(), HealthCheckResult.Warning, "Enabled indexers with searching enabled are disabled due to recent failures"); } return new HealthCheck(GetType()); diff --git a/src/NzbDrone.Core/Indexers/IndexerFactory.cs b/src/NzbDrone.Core/Indexers/IndexerFactory.cs index 8e45a031c..c4903c9c7 100644 --- a/src/NzbDrone.Core/Indexers/IndexerFactory.cs +++ b/src/NzbDrone.Core/Indexers/IndexerFactory.cs @@ -9,14 +9,13 @@ namespace NzbDrone.Core.Indexers { public interface IIndexerFactory : IProviderFactory { - List RssEnabled(); - List SearchEnabled(); + List RssEnabled(bool filterBlockedIndexers = true); + List SearchEnabled(bool filterBlockedIndexers = true); } public class IndexerFactory : ProviderFactory, IIndexerFactory { private readonly IIndexerStatusService _indexerStatusService; - private readonly IIndexerRepository _providerRepository; private readonly Logger _logger; public IndexerFactory(IIndexerStatusService indexerStatusService, @@ -28,7 +27,6 @@ namespace NzbDrone.Core.Indexers : base(providerRepository, providers, container, eventAggregator, logger) { _indexerStatusService = indexerStatusService; - _providerRepository = providerRepository; _logger = logger; } @@ -46,22 +44,28 @@ namespace NzbDrone.Core.Indexers definition.SupportsSearch = provider.SupportsSearch; } - public List RssEnabled() + public List RssEnabled(bool filterBlockedIndexers = true) { var enabledIndexers = GetAvailableProviders().Where(n => ((IndexerDefinition)n.Definition).EnableRss); - var indexers = FilterBlockedIndexers(enabledIndexers); + if (filterBlockedIndexers) + { + return FilterBlockedIndexers(enabledIndexers).ToList(); + } - return indexers.ToList(); + return enabledIndexers.ToList(); } - public List SearchEnabled() + public List SearchEnabled(bool filterBlockedIndexers = true) { var enabledIndexers = GetAvailableProviders().Where(n => ((IndexerDefinition)n.Definition).EnableSearch); - var indexers = FilterBlockedIndexers(enabledIndexers); + if (filterBlockedIndexers) + { + return FilterBlockedIndexers(enabledIndexers).ToList(); + } - return indexers.ToList(); + return enabledIndexers.ToList(); } private IEnumerable FilterBlockedIndexers(IEnumerable indexers)