mirror of
https://github.com/garethgeorge/backrest.git
synced 2025-12-13 17:25:38 +00:00
99 lines
2.2 KiB
Go
99 lines
2.2 KiB
Go
package rotatinglog
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRotatingLog(t *testing.T) {
|
|
log := NewRotatingLog(t.TempDir()+"/rotatinglog", 10)
|
|
name, err := log.Write([]byte("test"))
|
|
if err != nil {
|
|
t.Fatalf("Write failed: %v", err)
|
|
}
|
|
data, err := log.Read(name)
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if string(data) != "test" {
|
|
t.Fatalf("Read failed: expected test, got %s", string(data))
|
|
}
|
|
}
|
|
|
|
func TestRotatingLogMultipleEntries(t *testing.T) {
|
|
log := NewRotatingLog(t.TempDir()+"/rotatinglog", 10)
|
|
refs := make([]string, 10)
|
|
for i := 0; i < 10; i++ {
|
|
name, err := log.Write([]byte(fmt.Sprintf("%d", i)))
|
|
if err != nil {
|
|
t.Fatalf("Write failed: %v", err)
|
|
}
|
|
data, err := log.Read(name)
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if fmt.Sprintf("%d", i) != string(data) {
|
|
t.Fatalf("Read failed: expected %d, got %s", i, string(data))
|
|
}
|
|
refs[i] = name
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
data, err := log.Read(refs[i])
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if fmt.Sprintf("%d", i) != string(data) {
|
|
t.Fatalf("Read failed: expected %d, got %s", i, string(data))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestBigEntries(t *testing.T) {
|
|
log := NewRotatingLog(t.TempDir()+"/rotatinglog", 10)
|
|
for size := range []int{10, 100, 1234, 5938, 1023, 1025} {
|
|
data := genstr(size)
|
|
name, err := log.Write([]byte(data))
|
|
if err != nil {
|
|
t.Fatalf("Write failed: %v", err)
|
|
}
|
|
read, err := log.Read(name)
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if string(read) != data {
|
|
t.Fatalf("Read failed: expected %s, got %s", data, string(read))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestLogRotate(t *testing.T) {
|
|
curTime := time.Unix(0, 0)
|
|
curTime = curTime.Add(time.Hour * 24)
|
|
|
|
log := NewRotatingLog(t.TempDir()+"/rotatinglog", 3)
|
|
log.now = func() time.Time { return curTime }
|
|
|
|
for i := 0; i < 10; i++ {
|
|
_, err := log.Write([]byte(fmt.Sprintf("%d", i)))
|
|
if err != nil {
|
|
t.Fatalf("Write failed: %v", err)
|
|
}
|
|
curTime = curTime.Add(time.Hour * 24)
|
|
}
|
|
|
|
files, err := log.files()
|
|
if err != nil {
|
|
t.Fatalf("files failed: %v", err)
|
|
}
|
|
if len(files) != 3 {
|
|
t.Fatalf("files failed: expected 3, got %d", len(files))
|
|
}
|
|
}
|
|
|
|
func genstr(size int) string {
|
|
return strings.Repeat("a", size)
|
|
}
|