package logstorage import ( "strings" "testing" "time" ) func TestAuditCapacityRotatesOldestActiveSegment(t *testing.T) { store := openTestStore(t, Options{AuditCapBytes: 1400}) for i := 0; i < 5; i++ { if _, err := store.Append(ClassAudit, time.Now().Add(time.Duration(i)*time.Second), map[string]string{"message": strings.Repeat(string(rune('a'+i)), 400)}); err != nil { t.Fatal(err) } } snapshot, err := store.Snapshot() if err != nil { t.Fatal(err) } if snapshot.UsageBytes["audit"] > 1400 { t.Fatalf("capacity exceeded: %+v", snapshot) } var messages []string store.mu.Lock() err = store.walkClassLocked(ClassAudit, false, func(event Envelope) error { messages = append(messages, string(event.Payload)); return nil }) store.mu.Unlock() if err != nil { t.Fatal(err) } if len(messages) == 0 || strings.Contains(strings.Join(messages, ""), strings.Repeat("a", 100)) || !strings.Contains(messages[len(messages)-1], strings.Repeat("e", 100)) { t.Fatalf("rotation retained wrong records: %v", messages) } }