You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

50 lines
1.3 KiB

package logstorage
import (
"bytes"
"os"
"path/filepath"
"testing"
"time"
)
func TestFactoryResetErasesEveryClassOnDiskAndAfterReopen(t *testing.T) {
root := t.TempDir()
s := openTestStore(t, Options{Root: root})
for _, class := range []string{ClassAudit, ClassSystem, ClassPort, ClassLink} {
if _, err := s.Append(class, time.Now(), map[string]string{"message": "customer-marker"}); err != nil {
t.Fatal(err)
}
}
if err := s.FactoryReset(); err != nil {
t.Fatal(err)
}
reopened := openTestStore(t, Options{Root: root})
for _, class := range []string{ClassAudit, ClassSystem, ClassPort, ClassLink} {
records, err := reopened.Read(class)
if err != nil || len(records) != 0 {
t.Fatalf("%s survived reset: %d %v", class, len(records), err)
}
}
if err := filepath.WalkDir(root, func(path string, entry os.DirEntry, err error) error {
if err != nil {
return err
}
if entry.IsDir() {
return nil
}
content, err := os.ReadFile(path)
if err != nil {
return err
}
if bytes.Contains(content, []byte("customer-marker")) {
t.Fatalf("old payload remains on disk: %s", path)
}
return nil
}); err != nil {
t.Fatal(err)
}
if _, err := reopened.Append(ClassAudit, time.Now(), map[string]string{"message": "new-boot"}); err != nil {
t.Fatal(err)
}
}