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.
51 lines
1.3 KiB
51 lines
1.3 KiB
|
2 months ago
|
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)
|
||
|
|
}
|
||
|
|
}
|