moved jobcontroller to a blocking collection
This commit is contained in:
parent
35cb7e55c7
commit
8ebcf0eb8b
|
@ -6,7 +6,6 @@ using FluentAssertions;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NCrunch.Framework;
|
using NCrunch.Framework;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common;
|
|
||||||
using NzbDrone.Core.Jobs;
|
using NzbDrone.Core.Jobs;
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
@ -21,6 +20,7 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
|
|
||||||
FakeJob _fakeJob;
|
FakeJob _fakeJob;
|
||||||
SlowJob _slowJob;
|
SlowJob _slowJob;
|
||||||
|
SlowJob2 _slowJob2;
|
||||||
BrokenJob _brokenJob;
|
BrokenJob _brokenJob;
|
||||||
DisabledJob _disabledJob;
|
DisabledJob _disabledJob;
|
||||||
|
|
||||||
|
@ -32,11 +32,12 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
{
|
{
|
||||||
_fakeJob = new FakeJob();
|
_fakeJob = new FakeJob();
|
||||||
_slowJob = new SlowJob();
|
_slowJob = new SlowJob();
|
||||||
|
_slowJob2 = new SlowJob2();
|
||||||
_brokenJob = new BrokenJob();
|
_brokenJob = new BrokenJob();
|
||||||
_disabledJob = new DisabledJob();
|
_disabledJob = new DisabledJob();
|
||||||
_updatedJob = null;
|
_updatedJob = null;
|
||||||
|
|
||||||
IEnumerable<IJob> jobs = new List<IJob> { _fakeJob, _slowJob, _brokenJob, _disabledJob };
|
IEnumerable<IJob> jobs = new List<IJob> { _fakeJob, _slowJob, _slowJob2, _brokenJob, _disabledJob };
|
||||||
|
|
||||||
Mocker.SetConstant(jobs);
|
Mocker.SetConstant(jobs);
|
||||||
|
|
||||||
|
@ -65,11 +66,11 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
private void WaitForQueue()
|
private void WaitForQueue()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Waiting for queue to clear.");
|
Console.WriteLine("Waiting for queue to clear.");
|
||||||
var stopWatch = Mocker.Resolve<JobController>().StopWatch;
|
var queue = Mocker.Resolve<JobController>().Queue;
|
||||||
|
|
||||||
while (stopWatch.IsRunning)
|
while (Subject.IsProcessing)
|
||||||
{
|
{
|
||||||
Thread.Sleep(10);
|
Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,16 +114,16 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void no_concurent_jobs()
|
public void should_ignore_job_with_same_arg()
|
||||||
{
|
{
|
||||||
Subject.QueueJob(typeof(SlowJob), 1);
|
Subject.QueueJob(typeof(SlowJob2), 1);
|
||||||
Subject.QueueJob(typeof(SlowJob), 2);
|
Subject.QueueJob(typeof(FakeJob), 1);
|
||||||
Subject.QueueJob(typeof(SlowJob), 3);
|
Subject.QueueJob(typeof(FakeJob), 1);
|
||||||
|
|
||||||
WaitForQueue();
|
WaitForQueue();
|
||||||
|
|
||||||
Subject.Queue.Should().BeEmpty();
|
Subject.Queue.Should().BeEmpty();
|
||||||
_slowJob.ExecutionCount.Should().Be(3);
|
_fakeJob.ExecutionCount.Should().Be(1);
|
||||||
ExceptionVerification.AssertNoUnexcpectedLogs();
|
ExceptionVerification.AssertNoUnexcpectedLogs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +183,7 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
|
|
||||||
WaitForQueue();
|
WaitForQueue();
|
||||||
|
|
||||||
Mocker.GetMock<IJobRepository>().Verify(c=>c.Update(It.IsAny<JobDefinition>()),Times.Never());
|
Mocker.GetMock<IJobRepository>().Verify(c => c.Update(It.IsAny<JobDefinition>()), Times.Never());
|
||||||
_updatedJob.Should().BeNull();
|
_updatedJob.Should().BeNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +218,7 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
[Test]
|
[Test]
|
||||||
public void scheduled_job_should_have_scheduler_as_source()
|
public void scheduled_job_should_have_scheduler_as_source()
|
||||||
{
|
{
|
||||||
GivenPendingJob(new List<JobDefinition> { new JobDefinition { TypeName = _slowJob.GetType().FullName }, new JobDefinition { TypeName = _slowJob.GetType().FullName } });
|
GivenPendingJob(new List<JobDefinition> { new JobDefinition { TypeName = _slowJob.GetType().FullName }, new JobDefinition { TypeName = _slowJob2.GetType().FullName } });
|
||||||
Subject.QueueScheduled();
|
Subject.QueueScheduled();
|
||||||
|
|
||||||
Subject.Queue.Should().OnlyContain(c => c.Source == JobQueueItem.JobSourceType.Scheduler);
|
Subject.Queue.Should().OnlyContain(c => c.Source == JobQueueItem.JobSourceType.Scheduler);
|
||||||
|
|
|
@ -57,4 +57,12 @@ namespace NzbDrone.Core.Test.JobTests
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class SlowJob2 : FakeJob
|
||||||
|
{
|
||||||
|
protected override void Start()
|
||||||
|
{
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,498 @@
|
||||||
<RegexTestSelector>
|
<RegexTestSelector>
|
||||||
<RegularExpression>NzbDrone\.Core\.Test\.ParserTests\.ParserFixture\..*</RegularExpression>
|
<RegularExpression>NzbDrone\.Core\.Test\.ParserTests\.ParserFixture\..*</RegularExpression>
|
||||||
</RegexTestSelector>
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.InstrumentationTests\.DatabaseTargetFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.InstrumentationTests.DatabaseTargetFixture.exception_log_with_no_message_should_use_exceptions_message</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.InstrumentationTests.DatabaseTargetFixture.write_log</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.InstrumentationTests.DatabaseTargetFixture.write_log_exception</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.InstrumentationTests.DatabaseTargetFixture.write_long_log</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.MediaFileTests\.MediaFileProvider_GetNewFilenameTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Episode_Quality_1x05_Dash</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Episode_Quality_1x05_Period</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_1x05_Repeat_Dash_Period</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_Episode_Quality_01x05_Repeat_Space</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_Episode_Quality_1x05_Repeat_Dash</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_Series_Episode_Quality_S01E05_Scene_Dash</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_Series_Episode_s01e05_Duplicate_Period</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_multi_Series_S01E05_Extend_Dash_Period</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_S01E05_Dash</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_Episode_Quality_S01E05_Dash</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_Episode_Quality_S01E05_Period</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_Episode_s01e05_Dash_Periods_Quality</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_Episode_s01e05_Periods</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_Quality_01x05_Space</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_Series_s01e05_Space</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_should_append_proper_when_proper_and_append_quality_is_true</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_should_not_append_proper_when_not_proper_and_append_quality_is_true</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_should_not_append_proper_when_proper_and_append_quality_is_false</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_should_order_multiple_episode_files_in_numerical_order</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_UseSceneName_when_sceneName_isNotNull</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.GetNewFilename_UseSceneName_when_sceneName_isNull</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_have_two_episodeTitles_when_distinct_count_is_two</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_have_two_episodeTitles_when_episode_titles_are_not_the_same</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_only_have_one_episodeTitle_when_episode_titles_are_the_same</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_set_airdate_to_unknown_if_not_available</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_use_airDate_if_series_isDaily</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.MediaFileTests.MediaFileProvider_GetNewFilenameTest.should_use_airDate_if_series_isDaily_no_episode_title</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SceneMappingProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSceneName_exists</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSceneName_multiple_clean_names</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSceneName_null</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSceneName_should_be_null_when_seasonNumber_does_not_match</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSeriesId_exists</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.GetSeriesId_null</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.UpdateMappings_should_add_all_mappings_to_database</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.UpdateMappings_should_not_delete_if_csv_download_fails</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SceneMappingProviderTest.UpdateMappings_should_overwrite_existing_mappings</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.GetSearchTitleFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_replace_ampersand_with_and</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_replace_some_special_characters("Betty White\'s Off Their Rockers","Betty Whites Off Their Rockers")</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_replace_some_special_characters("Hawaii Five-0","Hawaii Five-0")</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_replace_some_special_characters("Star Wars: The Clone Wars","Star Wars The Clone Wars")</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_return_scene_mapping_when_one_exists</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_return_season_scene_name_when_one_exists</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_return_series_scene_name_when_one_for_season_does_not_exist</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.GetSearchTitleFixture.should_return_series_title_when_there_is_no_scene_mapping</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.ProcessResultsFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_check_other_reports_when_quality_is_not_wanted</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_process_higher_quality_results_first</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_process_newer_reports_first</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_return_valid_successes_when_one_or_more_downloaded</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_should_skip_if_series_is_not_watched</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_skip_if_episode_was_already_downloaded</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_skip_if_series_does_not_match_searched_series</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.ProviderTests.SearchTests.ProcessResultsFixture.should_try_next_report_if_download_fails</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.TvTests\.EpisodeProviderTests\.GetEpisodeBySceneNumberFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.EpisodeProviderTests.GetEpisodeBySceneNumberFixture.should_return_episode_if_matching_episode_is_found</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.EpisodeProviderTests.GetEpisodeBySceneNumberFixture.should_return_null_if_no_episodes_in_db</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.EpisodeProviderTests.GetEpisodeBySceneNumberFixture.should_return_null_if_no_matching_episode_is_found</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.TvTests\.SeasonProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.All_should_return_all_seasons_with_episodes</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.All_should_return_seasons_with_episodes</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.GetSeason_should_return_seasons_for_specified_series_only</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.IsIgnored_should_return_ignored_status_of_season(False)</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.IsIgnored_should_return_ignored_status_of_season(True)</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<NamedTestSelector>
|
||||||
|
<TestName>NzbDrone.Core.Test.TvTests.SeasonProviderTest.IsIgnored_should_throw_an_exception_if_not_in_db</TestName>
|
||||||
|
</NamedTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Datastore\.ObjectDatabaseFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Datastore\.BasicRepositoryFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.AcceptableSizeSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.AllowedDownloadSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.AllowedReleaseGroupSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.CustomStartDateSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.LanguageSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.MonitoredEpisodeSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.QualityAllowedByProfileSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.QualityUpgradeSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.RetentionSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.UpgradeDiskSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.UpgradeHistorySpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.DecisionEngineTests\.UpgradePossibleSpecificationFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.EpisodeParseResultTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.EpisodeStatusTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.FluentTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.HelperTests\.SortHelperTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.HelperTests\.XElementHelperTests\.ParseDayOfWeekFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.HelperTests\.XElementHelperTests\.XElementHelperTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Indexers\.IndexerServiceTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.IndexerTests\.IndexerFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.IndexerTests\.NzbxFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.AppUpdateJobFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.BacklogSearchJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.DiskScanJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.ImportNewSeriesJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.JobRepositoryFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.PostDownloadScanJobFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.RecentBacklogSearchJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.RenameSeasonJobFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.RssSyncJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.SeasonSearchJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.JobTests\.SeriesSearchJobTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskProviderTests\.ExtractArchiveFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskProviderTests\.FreeDiskSpaceTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.CleanUpDropFolderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.CleanUpFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.GetVideoFilesFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.ImportFileFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.MoveEpisodeFileFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DiskScanProviderTests\.ScanFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.BlackholeProviderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.NzbgetProviderTests\.DownloadNzbFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.NzbgetProviderTests\.QueueFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.PneumaticProviderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.SabProviderTests\.QueueFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadClientTests\.SabProviderTests\.SabProviderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadProviderTests\.ContainsRecentEpisode\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.DownloadProviderTests\.DownloadProviderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.MediaFileTests\.MediaFileServiceTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.EventClientProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.MisnamedProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.NotificationProviderTests\.NotificationProviderFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.PlexProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.PostDownloadProviderTests\.GetFolderNameWithStatusFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.PostDownloadProviderTests\.ProcessDownloadFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.PostDownloadProviderTests\.ProcessDropDirectoryFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.PostDownloadProviderTests\.ProcessVideoFileFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.RecycleBinProviderTests\.CleanupFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.RecycleBinProviderTests\.DeleteDirectoryFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.RecycleBinProviderTests\.DeleteFileFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.RecycleBinProviderTests\.EmptyFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.DailyEpisodeSearchTests\.CheckReportFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.DailyEpisodeSearchTests\.PerformSearchFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.EpisodeSearchTests\.CheckReportFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.EpisodeSearchTests\.PerformSearchFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.PartialSeasonSearchTests\.CheckReportFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.SearchTests\.PartialSeasonSearchTests\.PerformSearchFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.TvRageMappingProviderTests\.FindMatchingTvRageSeriesFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.TvRageMappingProviderTests\.ProcessResultsFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.TvRageProviderTests\.GetSeriesFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.TvRageProviderTests\.GetUtcOffsetFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.TvRageProviderTests\.SearchSeriesFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.UpdateProviderTests\.GetAvilableUpdateFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.UpdateProviderTests\.GetUpdateLogFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.XbmcProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.XemCommunicationProviderTests\.GetSceneTvdbMappingsFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.ProviderTests\.XemCommunicationProviderTests\.GetXemSeriesIdsFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.RootFolderTests\.FreeSpaceOnDrivesFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.RootFolderTests\.RootFolderServiceFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Indexers\.NewznabProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.HistoryTests\.HistoryServiceTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Configuration\.ConfigServiceFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Configuration\.ConfigCachingFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.TvTests\.SeriesProviderTest\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.XbmcVersionTests\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.MediaFileTests\.MediaFileRepositoryFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Qualities\.QualityFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Qualities\.QualityProfileFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.Qualities\.QualitySizeServiceFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
|
<RegexTestSelector>
|
||||||
|
<RegularExpression>NzbDrone\.Core\.Test\.TvTests\.QualityModelFixture\..*</RegularExpression>
|
||||||
|
</RegexTestSelector>
|
||||||
</IgnoredTests>
|
</IgnoredTests>
|
||||||
<HiddenWarnings>PostBuildEventDisabled;PreBuildEventDisabled</HiddenWarnings>
|
<HiddenWarnings>PostBuildEventDisabled;PreBuildEventDisabled</HiddenWarnings>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Lifecycle;
|
|
||||||
using NzbDrone.Core.Model;
|
using NzbDrone.Core.Model;
|
||||||
using NzbDrone.Core.Model.Notification;
|
using NzbDrone.Core.Model.Notification;
|
||||||
using NzbDrone.Core.Providers;
|
using NzbDrone.Core.Providers;
|
||||||
|
@ -13,32 +13,31 @@ namespace NzbDrone.Core.Jobs
|
||||||
{
|
{
|
||||||
public interface IJobController
|
public interface IJobController
|
||||||
{
|
{
|
||||||
Stopwatch StopWatch { get; }
|
bool IsProcessing { get; }
|
||||||
List<JobQueueItem> Queue { get; }
|
IEnumerable<JobQueueItem> Queue { get; }
|
||||||
void QueueScheduled();
|
void QueueScheduled();
|
||||||
void QueueJob(Type jobType, dynamic options = null, JobQueueItem.JobSourceType source = JobQueueItem.JobSourceType.User);
|
void QueueJob(Type jobType, dynamic options = null, JobQueueItem.JobSourceType source = JobQueueItem.JobSourceType.User);
|
||||||
bool QueueJob(string jobTypeString);
|
bool QueueJob(string jobTypeString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class JobController : IJobController, IInitializable
|
public class JobController : IJobController
|
||||||
{
|
{
|
||||||
private readonly NotificationProvider _notificationProvider;
|
private readonly NotificationProvider _notificationProvider;
|
||||||
private readonly IEnumerable<IJob> _jobs;
|
private readonly IEnumerable<IJob> _jobs;
|
||||||
private readonly IJobRepository _jobRepository;
|
private readonly IJobRepository _jobRepository;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
private Timer _timer;
|
|
||||||
|
|
||||||
private Thread _jobThread;
|
private Thread _jobThread;
|
||||||
public Stopwatch StopWatch { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
private readonly object _executionLock = new object();
|
private readonly object _executionLock = new object();
|
||||||
private readonly List<JobQueueItem> _queue = new List<JobQueueItem>();
|
private readonly BlockingCollection<JobQueueItem> _queue = new BlockingCollection<JobQueueItem>();
|
||||||
|
|
||||||
private ProgressNotification _notification;
|
private ProgressNotification _notification;
|
||||||
|
|
||||||
public JobController(NotificationProvider notificationProvider, IEnumerable<IJob> jobs, IJobRepository jobRepository, Logger logger)
|
public JobController(NotificationProvider notificationProvider, IEnumerable<IJob> jobs, IJobRepository jobRepository, Logger logger)
|
||||||
{
|
{
|
||||||
StopWatch = new Stopwatch();
|
|
||||||
_notificationProvider = notificationProvider;
|
_notificationProvider = notificationProvider;
|
||||||
_jobs = jobs;
|
_jobs = jobs;
|
||||||
_jobRepository = jobRepository;
|
_jobRepository = jobRepository;
|
||||||
|
@ -46,13 +45,10 @@ namespace NzbDrone.Core.Jobs
|
||||||
ResetThread();
|
ResetThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init()
|
|
||||||
{
|
|
||||||
_timer = new Timer(c => QueueScheduled());
|
|
||||||
_timer.Change(0, 60 * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<JobQueueItem> Queue
|
public bool IsProcessing { get; private set; }
|
||||||
|
|
||||||
|
public IEnumerable<JobQueueItem> Queue
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -64,8 +60,6 @@ namespace NzbDrone.Core.Jobs
|
||||||
{
|
{
|
||||||
lock (_executionLock)
|
lock (_executionLock)
|
||||||
{
|
{
|
||||||
VerifyThreadTime();
|
|
||||||
|
|
||||||
if (_jobThread.IsAlive)
|
if (_jobThread.IsAlive)
|
||||||
{
|
{
|
||||||
_logger.Trace("Queue is already running. Ignoring scheduler's request.");
|
_logger.Trace("Queue is already running. Ignoring scheduler's request.");
|
||||||
|
@ -84,6 +78,8 @@ namespace NzbDrone.Core.Jobs
|
||||||
|
|
||||||
public virtual void QueueJob(Type jobType, dynamic options = null, JobQueueItem.JobSourceType source = JobQueueItem.JobSourceType.User)
|
public virtual void QueueJob(Type jobType, dynamic options = null, JobQueueItem.JobSourceType source = JobQueueItem.JobSourceType.User)
|
||||||
{
|
{
|
||||||
|
IsProcessing = true;
|
||||||
|
|
||||||
var queueItem = new JobQueueItem
|
var queueItem = new JobQueueItem
|
||||||
{
|
{
|
||||||
JobType = jobType,
|
JobType = jobType,
|
||||||
|
@ -95,18 +91,16 @@ namespace NzbDrone.Core.Jobs
|
||||||
|
|
||||||
lock (_executionLock)
|
lock (_executionLock)
|
||||||
{
|
{
|
||||||
VerifyThreadTime();
|
lock (_queue)
|
||||||
|
|
||||||
lock (Queue)
|
|
||||||
{
|
{
|
||||||
if (!Queue.Contains(queueItem))
|
if (!_queue.Contains(queueItem))
|
||||||
{
|
{
|
||||||
Queue.Add(queueItem);
|
_queue.Add(queueItem);
|
||||||
_logger.Trace("Job {0} added to the queue. current items in queue: {1}", queueItem, Queue.Count);
|
_logger.Trace("Job {0} added to the queue. current items in queue: {1}", queueItem, _queue.Count);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.Info("{0} already exists in the queue. Skipping. current items in queue: {1}", queueItem, Queue.Count);
|
_logger.Info("{0} already exists in the queue. Skipping. current items in queue: {1}", queueItem, _queue.Count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +111,6 @@ namespace NzbDrone.Core.Jobs
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetThread();
|
ResetThread();
|
||||||
StopWatch = Stopwatch.StartNew();
|
|
||||||
_jobThread.Start();
|
_jobThread.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,28 +131,15 @@ namespace NzbDrone.Core.Jobs
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
do
|
while (true)
|
||||||
{
|
|
||||||
using (NestedDiagnosticsContext.Push(Guid.NewGuid().ToString()))
|
|
||||||
{
|
{
|
||||||
|
IsProcessing = false;
|
||||||
|
var item = _queue.Take();
|
||||||
|
IsProcessing = true;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
JobQueueItem job = null;
|
Execute(item);
|
||||||
|
|
||||||
lock (Queue)
|
|
||||||
{
|
|
||||||
if (Queue.Count != 0)
|
|
||||||
{
|
|
||||||
job = Queue.OrderBy(c => c.Source).First();
|
|
||||||
_logger.Trace("Popping {0} from the queue.", job);
|
|
||||||
Queue.Remove(job);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (job != null)
|
|
||||||
{
|
|
||||||
Execute(job);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (ThreadAbortException)
|
catch (ThreadAbortException)
|
||||||
{
|
{
|
||||||
|
@ -170,8 +150,6 @@ namespace NzbDrone.Core.Jobs
|
||||||
_logger.FatalException("An error has occurred while executing job.", e);
|
_logger.FatalException("An error has occurred while executing job.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (Queue.Count != 0);
|
|
||||||
}
|
}
|
||||||
catch (ThreadAbortException e)
|
catch (ThreadAbortException e)
|
||||||
{
|
{
|
||||||
|
@ -183,7 +161,6 @@ namespace NzbDrone.Core.Jobs
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
StopWatch.Stop();
|
|
||||||
_logger.Trace("Finished processing jobs in the queue.");
|
_logger.Trace("Finished processing jobs in the queue.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -239,14 +216,6 @@ namespace NzbDrone.Core.Jobs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VerifyThreadTime()
|
|
||||||
{
|
|
||||||
if (StopWatch.Elapsed.TotalHours > 1)
|
|
||||||
{
|
|
||||||
_logger.Warn("Thread job has been running for more than an hour. fuck it!");
|
|
||||||
ResetThread();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResetThread()
|
private void ResetThread()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue