mirror of
https://github.com/JKorf/CryptoExchange.Net.git
synced 2026-10-14 15:11:44 +00:00
Updated rate limiting margins
This commit is contained in:
@@ -3,6 +3,7 @@ using CryptoExchange.Net.RateLimiting;
|
||||
using CryptoExchange.Net.RateLimiting.Filters;
|
||||
using CryptoExchange.Net.RateLimiting.Guards;
|
||||
using CryptoExchange.Net.RateLimiting.Interfaces;
|
||||
using CryptoExchange.Net.RateLimiting.Trackers;
|
||||
using CryptoExchange.Net.UnitTests.Implementations;
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
@@ -364,5 +365,30 @@ namespace CryptoExchange.Net.UnitTests
|
||||
RateLimitingBehaviour.Fail, null, 1.0, default);
|
||||
Assert.That(overHardLimit.Error, Is.TypeOf<ClientRateLimitError>());
|
||||
}
|
||||
|
||||
[TestCase(0.1, 10)]
|
||||
[TestCase(1, 50)]
|
||||
[TestCase(5, 250)]
|
||||
[TestCase(60, 250)]
|
||||
public void RateLimitSafetyMargin_DefaultIsProportionalAndCapped(double periodSeconds, int expectedMarginMilliseconds)
|
||||
{
|
||||
var margin = WindowTrackerHelpers.GetDefaultSafetyMargin(TimeSpan.FromSeconds(periodSeconds));
|
||||
|
||||
Assert.That(margin, Is.EqualTo(TimeSpan.FromMilliseconds(expectedMarginMilliseconds)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RateLimitGuard_ExplicitSafetyMarginIsUsed()
|
||||
{
|
||||
var guard = new RateLimitGuard(
|
||||
RateLimitGuard.PerHost,
|
||||
new LimitItemTypeFilter(RateLimitItemType.Request),
|
||||
1,
|
||||
TimeSpan.FromSeconds(1),
|
||||
RateLimitWindowType.Sliding,
|
||||
safetyMargin: TimeSpan.Zero);
|
||||
|
||||
Assert.That(guard.SafetyMargin, Is.EqualTo(TimeSpan.Zero));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user