mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-23 22:25:09 -04:00
Generalized RateLimit logic to all indexers based on indexer id
This commit is contained in:
@@ -1,30 +0,0 @@
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Http;
|
||||
|
||||
namespace NzbDrone.Common.Test.Http
|
||||
{
|
||||
[TestFixture]
|
||||
public class HttpRateLimitKeyFactoryFixture
|
||||
{
|
||||
[TestCase("http://127.0.0.2:9117/jackett/api/v2.0/indexers/viva/results/torznab/api?t=search&cat=5000,5070,100030,100041", "127.0.0.2:9117/jackett/api/v2.0/indexers/viva")]
|
||||
public void should_detect_jackett(string url, string expectedKey)
|
||||
{
|
||||
var request = new HttpRequest(url);
|
||||
|
||||
var key = HttpRateLimitKeyFactory.GetRateLimitKey(request);
|
||||
|
||||
key.Should().Be(expectedKey);
|
||||
}
|
||||
|
||||
[TestCase("http://127.0.0.2:9117/jackett", "127.0.0.2")]
|
||||
public void should_default_to_host(string url, string expectedKey)
|
||||
{
|
||||
var request = new HttpRequest(url);
|
||||
|
||||
var key = HttpRateLimitKeyFactory.GetRateLimitKey(request);
|
||||
|
||||
key.Should().Be(expectedKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,5 +89,38 @@ namespace NzbDrone.Common.Test.TPLTests
|
||||
|
||||
(GetRateLimitStore()["me"] - _epoch).Should().BeGreaterOrEqualTo(TimeSpan.FromMilliseconds(100));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_extend_subkey_delay()
|
||||
{
|
||||
GivenExisting("me", _epoch + TimeSpan.FromMilliseconds(200));
|
||||
GivenExisting("me-sub", _epoch + TimeSpan.FromMilliseconds(300));
|
||||
|
||||
Subject.WaitAndPulse("me", "sub", TimeSpan.FromMilliseconds(100));
|
||||
|
||||
(GetRateLimitStore()["me-sub"] - _epoch).Should().BeGreaterOrEqualTo(TimeSpan.FromMilliseconds(400));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_honor_basekey_delay()
|
||||
{
|
||||
GivenExisting("me", _epoch + TimeSpan.FromMilliseconds(200));
|
||||
GivenExisting("me-sub", _epoch + TimeSpan.FromMilliseconds(0));
|
||||
|
||||
Subject.WaitAndPulse("me", "sub", TimeSpan.FromMilliseconds(100));
|
||||
|
||||
(GetRateLimitStore()["me-sub"] - _epoch).Should().BeGreaterOrEqualTo(TimeSpan.FromMilliseconds(200));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_extend_basekey_delay()
|
||||
{
|
||||
GivenExisting("me", _epoch + TimeSpan.FromMilliseconds(200));
|
||||
GivenExisting("me-sub", _epoch + TimeSpan.FromMilliseconds(100));
|
||||
|
||||
Subject.WaitAndPulse("me", "sub", TimeSpan.FromMilliseconds(100));
|
||||
|
||||
(GetRateLimitStore()["me"] - _epoch).Should().BeCloseTo(TimeSpan.FromMilliseconds(200));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user