using System.Collections.Generic; using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.IndexerSearch; using NzbDrone.Core.IndexerSearch.Definitions; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.IndexerSearchTests { public class NzbSearchServiceFixture : CoreTest { private List _indexers; private Series _searchTargetSeries; [SetUp] public void Setup() { _searchTargetSeries = Builder.CreateNew().BuildNew(); _indexers = new List(); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); Mocker.SetConstant>(_indexers); Mocker.GetMock().Setup(c => c.GetSeries(It.IsAny())) .Returns(_searchTargetSeries); } [Test] public void should_call_fetch_on_all_indexers_at_the_same_time() { var counter = new ConcurrencyCounter(_indexers.Count); Mocker.GetMock().Setup(c => c.Fetch(It.IsAny(), It.IsAny())) .Returns(new List()) .Callback((() => counter.SimulateWork(500))); Mocker.GetMock().Setup(c => c.GetAvailableIndexers()).Returns(_indexers); Mocker.GetMock() .Setup(c => c.GetSearchDecision(It.IsAny>(), It.IsAny())) .Returns(new List()); Subject.SearchSingle(0, 0, 0); counter.WaitForAllItems(); counter.MaxThreads.Should().Be(_indexers.Count); } } }