Persist dashboard backup metrics separately

This commit is contained in:
Mikei386
2026-07-13 20:39:31 +02:00
parent 2ecdcdf602
commit b1fba3ed16
15 changed files with 183 additions and 14 deletions
+30
View File
@@ -3,6 +3,7 @@ package store
import (
"os"
"testing"
"time"
"git.casaderoll.de/michael/urbm/internal/model"
)
@@ -28,3 +29,32 @@ func TestStoreInitializesAndPersists(t *testing.T) {
t.Fatalf("config mode = %o", info.Mode().Perm())
}
}
func TestBackupMetricsPersistSeparatelyFromRuns(t *testing.T) {
s := New(t.TempDir())
if err := s.Init(); err != nil {
t.Fatal(err)
}
finished := time.Date(2026, 7, 13, 1, 30, 0, 0, time.UTC)
metrics := []model.BackupMetric{{SchemaVersion: model.SchemaVersion, RunID: "run-1", JobID: "job-1", FinishedAt: finished, Status: "success", BytesProcessed: 42, FilesProcessed: 7}}
if err := s.SaveBackupMetrics(metrics); err != nil {
t.Fatal(err)
}
if err := s.SaveRuns(nil); err != nil {
t.Fatal(err)
}
loaded, err := s.LoadBackupMetrics()
if err != nil {
t.Fatal(err)
}
if len(loaded) != 1 || loaded[0].RunID != "run-1" || loaded[0].BytesProcessed != 42 {
t.Fatalf("backup metrics = %#v", loaded)
}
info, err := os.Stat(s.backupMetricsPath())
if err != nil {
t.Fatal(err)
}
if info.Mode().Perm() != 0600 {
t.Fatalf("backup metrics mode = %o", info.Mode().Perm())
}
}