hn-readcard-go/logger_test.go

76 lines
1.7 KiB
Go
Raw Normal View History

2026-08-06 11:23:33 +08:00
package main
import (
"os"
"path/filepath"
"strings"
"testing"
"time"
)
func TestDailyWriterRotatesBySize(t *testing.T) {
dir := t.TempDir()
w, err := newDailyWriter(dir, "service-test", 30, 64, 1024)
if err != nil {
t.Fatal(err)
}
defer w.Close()
if _, err = w.Write([]byte(strings.Repeat("a", 48))); err != nil {
t.Fatal(err)
}
if _, err = w.Write([]byte(strings.Repeat("b", 48))); err != nil {
t.Fatal(err)
}
files, err := filepath.Glob(filepath.Join(dir, "service-test-*.log"))
if err != nil {
t.Fatal(err)
}
if len(files) != 2 {
t.Fatalf("expected 2 log parts, got %d: %v", len(files), files)
}
}
func TestDailyWriterEnforcesTotalSize(t *testing.T) {
dir := t.TempDir()
oldPath := filepath.Join(dir, "service-old-2020-01-01.log")
if err := os.WriteFile(oldPath, []byte(strings.Repeat("x", 90)), 0o644); err != nil {
t.Fatal(err)
}
oldTime := time.Now().AddDate(0, 0, -2)
if err := os.Chtimes(oldPath, oldTime, oldTime); err != nil {
t.Fatal(err)
}
w, err := newDailyWriter(dir, "service-test", 30, 64, 100)
if err != nil {
t.Fatal(err)
}
defer w.Close()
if _, err = w.Write([]byte(strings.Repeat("a", 64))); err != nil {
t.Fatal(err)
}
if _, err = w.Write([]byte(strings.Repeat("b", 64))); err != nil {
t.Fatal(err)
}
if _, err = os.Stat(oldPath); !os.IsNotExist(err) {
t.Fatalf("oldest log should be removed, stat error: %v", err)
}
entries, err := os.ReadDir(dir)
if err != nil {
t.Fatal(err)
}
var total int64
for _, entry := range entries {
info, infoErr := entry.Info()
if infoErr != nil {
t.Fatal(infoErr)
}
total += info.Size()
}
if total > 128 { // 当前打开分卷允许最多超出一个 64 字节分卷。
t.Fatalf("log directory grew unexpectedly: %d bytes", total)
}
}