Files
silo-server/internal/historyimport/upstream_limiter_test.go
T

50 lines
1.2 KiB
Go

package historyimport
import (
"context"
"net/url"
"testing"
"time"
"golang.org/x/time/rate"
)
func TestUpstreamRateLimiter_LimitsPerServer(t *testing.T) {
t.Parallel()
limiter := newUpstreamRateLimiter(rate.Every(200*time.Millisecond), 1)
serverA, err := url.Parse("https://plex.example/library/metadata/1")
if err != nil {
t.Fatalf("Parse(serverA): %v", err)
}
serverB, err := url.Parse("https://emby.example/Users/1/Items")
if err != nil {
t.Fatalf("Parse(serverB): %v", err)
}
if err := limiter.Wait(context.Background(), serverA); err != nil {
t.Fatalf("first wait: %v", err)
}
limitedCtx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
defer cancel()
err = limiter.Wait(limitedCtx, serverA)
if err == nil {
t.Fatal("second wait succeeded, want same-server request to be limited")
}
if err := limiter.Wait(context.Background(), serverB); err != nil {
t.Fatalf("different server wait: %v", err)
}
}
func TestHistoryImportClients_ShareServerLimiter(t *testing.T) {
t.Parallel()
plex := NewPlexClient()
emby := NewEmbyClient()
if plex.limiter != emby.limiter {
t.Fatal("expected Plex and Emby clients to share the same upstream limiter")
}
}