From 676599c520c8317fa8a05c21a29d010d37ac1bc0 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Wed, 29 May 2013 10:07:19 -0700 Subject: [PATCH] added concurrency test for fetch service --- .../FetchAndParseRssServiceFixture.cs | 70 +++++++++++++++++++ NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 1 + 2 files changed, 71 insertions(+) create mode 100644 NzbDrone.Core.Test/IndexerTests/FetchAndParseRssServiceFixture.cs diff --git a/NzbDrone.Core.Test/IndexerTests/FetchAndParseRssServiceFixture.cs b/NzbDrone.Core.Test/IndexerTests/FetchAndParseRssServiceFixture.cs new file mode 100644 index 000000000..0b9298d83 --- /dev/null +++ b/NzbDrone.Core.Test/IndexerTests/FetchAndParseRssServiceFixture.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Indexers; +using NzbDrone.Core.Indexers.Newznab; +using NzbDrone.Core.Parser.Model; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.IndexerTests +{ + public class FetchAndParseRssServiceFixture : CoreTest + { + private List _indexers; + + [SetUp] + public void Setup() + { + _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); + + } + + [Test] + [Explicit] + public void should_call_fetch_on_all_indexers_at_the_same_time() + { + var callsToFetch = new List(); + + Mocker.GetMock().Setup(c => c.FetchRss(It.IsAny())) + .Returns(new List()) + .Callback((() => + { + Thread.Sleep(2000); + Console.WriteLine(DateTime.Now); + callsToFetch.Add(DateTime.Now); + })); + + Mocker.GetMock().Setup(c => c.GetAvailableIndexers()).Returns(_indexers); + + Subject.Fetch(); + + + var first = callsToFetch.Min(); + var last = callsToFetch.Max(); + + (last - first).Should().BeLessThan(TimeSpan.FromSeconds(1)); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index d4a7c2088..421c85a12 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -135,6 +135,7 @@ +