refactor(core): decouple gin from pkg/util and reduce code duplication

This commit is contained in:
ryan
2026-08-28 20:15:47 +08:00
parent c52b7c4abf
commit df351cbd33
32 changed files with 394 additions and 432 deletions
+4 -1
View File
@@ -5,6 +5,7 @@
package disk
import (
"Wavelet/pkg/util"
"container/list"
"encoding/binary"
"errors"
@@ -100,7 +101,9 @@ var (
func Default() *Cache {
defaultCacheOnce.Do(func() {
defaultCache = New("uploads/diskcache")
go defaultCache.StartCleanupWorker(defaultCleanupInterval)
util.Go(func() {
defaultCache.StartCleanupWorker(defaultCleanupInterval)
})
})
return defaultCache
}
+11 -24
View File
@@ -5,15 +5,12 @@ package disk
import (
"bytes"
"os"
"testing"
"time"
)
func TestDiskCacheBasic(t *testing.T) {
testDir := "uploads/test_diskcache_basic"
defer func() { _ = os.RemoveAll(testDir) }()
_ = os.RemoveAll(testDir)
testDir := t.TempDir()
c := New(testDir)
defer func() { _ = c.Clear() }()
@@ -55,9 +52,7 @@ func TestDiskCacheBasic(t *testing.T) {
}
func TestDiskCacheTTL(t *testing.T) {
testDir := "uploads/test_diskcache_ttl"
defer func() { _ = os.RemoveAll(testDir) }()
_ = os.RemoveAll(testDir)
testDir := t.TempDir()
c := New(testDir)
defer func() { _ = c.Clear() }()
@@ -91,9 +86,7 @@ func TestDiskCacheTTL(t *testing.T) {
}
func TestDiskCacheExpirationPolicies(t *testing.T) {
testDir := "uploads/test_diskcache_expiration_policies"
defer func() { _ = os.RemoveAll(testDir) }()
_ = os.RemoveAll(testDir)
testDir := t.TempDir()
c := New(testDir)
defer func() { _ = c.Clear() }()
@@ -102,14 +95,14 @@ func TestDiskCacheExpirationPolicies(t *testing.T) {
if err := c.Set("default", []byte("default"), DefaultExpiration); err != nil {
t.Fatalf("Set(default, DefaultExpiration) returned error: %v", err)
}
if err := c.Set("custom", []byte("custom"), 100*time.Millisecond); err != nil {
t.Fatalf("Set(custom, 100ms) returned error: %v", err)
if err := c.Set("custom", []byte("custom"), 150*time.Millisecond); err != nil {
t.Fatalf("Set(custom, 150ms) returned error: %v", err)
}
if err := c.Set("permanent", []byte("permanent"), NoExpiration); err != nil {
t.Fatalf("Set(permanent, NoExpiration) returned error: %v", err)
}
time.Sleep(75 * time.Millisecond)
time.Sleep(80 * time.Millisecond)
if _, err := c.Get("default"); err != ErrCacheMiss {
t.Errorf("Get(default) error = %v, want ErrCacheMiss", err)
@@ -121,7 +114,7 @@ func TestDiskCacheExpirationPolicies(t *testing.T) {
t.Errorf("Get(permanent) returned error: %v", err)
}
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
if _, err := c.Get("custom"); err != ErrCacheMiss {
t.Errorf("Get(custom) error = %v, want ErrCacheMiss", err)
@@ -132,9 +125,7 @@ func TestDiskCacheExpirationPolicies(t *testing.T) {
}
func TestDiskCacheNoExpirationSurvivesReload(t *testing.T) {
testDir := "uploads/test_diskcache_no_expiration_reload"
defer func() { _ = os.RemoveAll(testDir) }()
_ = os.RemoveAll(testDir)
testDir := t.TempDir()
c := New(testDir)
if err := c.Set("permanent", []byte("value"), NoExpiration); err != nil {
@@ -154,9 +145,7 @@ func TestDiskCacheNoExpirationSurvivesReload(t *testing.T) {
}
func TestDiskCacheLRUEviction(t *testing.T) {
testDir := "uploads/test_diskcache_lru"
defer func() { _ = os.RemoveAll(testDir) }()
_ = os.RemoveAll(testDir)
testDir := t.TempDir()
c := New(testDir)
defer func() { _ = c.Clear() }()
@@ -186,10 +175,8 @@ func TestDiskCacheLRUEviction(t *testing.T) {
t.Errorf("k2 should exist: %v", err)
}
// Write item 3: 8 + 2 = 10 bytes -> total size would be 30, exceeding 20.
// This should evict the oldest item. Since k1 was accessed, but then k2 was accessed,
// wait, let's access k1 again to make it the most recently used, so k2 becomes oldest!
_, _ = c.Get("k1") // k1 is now MRU, k2 is LRU
// Access k1 again to make it MRU, k2 becomes LRU
_, _ = c.Get("k1")
err = c.Set("k3", []byte("v3"), DefaultExpiration)
if err != nil {