Background Prefetching for Kavita+ (#2707)

This commit is contained in:
Joe Milazzo 2024-02-10 09:43:17 -06:00 committed by GitHub
parent f616b99585
commit 5dc5029a75
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 3300 additions and 100 deletions

View file

@ -0,0 +1,79 @@
using System;
using API.Helpers;
using Xunit;
namespace API.Tests.Helpers;
public class RateLimiterTests
{
[Fact]
public void AcquireTokens_Successful()
{
// Arrange
var limiter = new RateLimiter(3, TimeSpan.FromSeconds(1));
// Act & Assert
Assert.True(limiter.TryAcquire("test_key"));
Assert.True(limiter.TryAcquire("test_key"));
Assert.True(limiter.TryAcquire("test_key"));
}
[Fact]
public void AcquireTokens_ExceedLimit()
{
// Arrange
var limiter = new RateLimiter(2, TimeSpan.FromSeconds(10), false);
// Act
limiter.TryAcquire("test_key");
limiter.TryAcquire("test_key");
// Assert
Assert.False(limiter.TryAcquire("test_key"));
}
[Fact]
public void AcquireTokens_Refill()
{
// Arrange
var limiter = new RateLimiter(2, TimeSpan.FromSeconds(1));
// Act
limiter.TryAcquire("test_key");
limiter.TryAcquire("test_key");
// Wait for refill
System.Threading.Thread.Sleep(1100);
// Assert
Assert.True(limiter.TryAcquire("test_key"));
}
[Fact]
public void AcquireTokens_Refill_WithOff()
{
// Arrange
var limiter = new RateLimiter(2, TimeSpan.FromSeconds(10), false);
// Act
limiter.TryAcquire("test_key");
limiter.TryAcquire("test_key");
// Wait for refill
System.Threading.Thread.Sleep(2100);
// Assert
Assert.False(limiter.TryAcquire("test_key"));
}
[Fact]
public void AcquireTokens_MultipleKeys()
{
// Arrange
var limiter = new RateLimiter(2, TimeSpan.FromSeconds(1));
// Act & Assert
Assert.True(limiter.TryAcquire("key1"));
Assert.True(limiter.TryAcquire("key2"));
}
}