feat: add lru+ttl subtitle cache
This commit is contained in:
46
internal/playback/handler/subtitle_cache_test.go
Normal file
46
internal/playback/handler/subtitle_cache_test.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestSubtitleCache_TTLExpiry(t *testing.T) {
|
||||
c := newSubtitleCache(50*time.Millisecond, 10)
|
||||
now := time.Unix(100, 0)
|
||||
|
||||
c.Set("k", []byte("v"), "text/plain", now)
|
||||
|
||||
if _, _, ok := c.Get("k", now.Add(49*time.Millisecond)); !ok {
|
||||
t.Fatalf("expected cache hit before expiry")
|
||||
}
|
||||
if _, _, ok := c.Get("k", now.Add(51*time.Millisecond)); ok {
|
||||
t.Fatalf("expected cache miss after expiry")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSubtitleCache_LRUEviction(t *testing.T) {
|
||||
c := newSubtitleCache(time.Minute, 2)
|
||||
now := time.Unix(200, 0)
|
||||
|
||||
c.Set("a", []byte("a"), "text/plain", now)
|
||||
c.Set("b", []byte("b"), "text/plain", now)
|
||||
|
||||
// Make "a" most recently used; "b" should be evicted next.
|
||||
if _, _, ok := c.Get("a", now); !ok {
|
||||
t.Fatalf("expected hit for a")
|
||||
}
|
||||
|
||||
c.Set("c", []byte("c"), "text/plain", now)
|
||||
|
||||
if _, _, ok := c.Get("b", now); ok {
|
||||
t.Fatalf("expected b to be evicted")
|
||||
}
|
||||
if _, _, ok := c.Get("a", now); !ok {
|
||||
t.Fatalf("expected a to remain")
|
||||
}
|
||||
if _, _, ok := c.Get("c", now); !ok {
|
||||
t.Fatalf("expected c to exist")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user