Reduce metric writes and preserve scheduler history

This commit is contained in:
Mikei386 committed 2026-07-13 20:53:16 +02:00
1 parent ea97d7dbc9
commit 819055cbf0
12 files changed
+228 -27

No files matched your search

+33 -1
View File
@@ -43,10 +43,13 @@ func TestBackupMetricsPersistSeparatelyFromRuns(t *testing.T) {
if err := s.SaveRuns(nil); err != nil {
t.Fatal(err)
}
loaded, err := s.LoadBackupMetrics()
loaded, legacy, err := s.LoadBackupMetrics()
if err != nil {
t.Fatal(err)
}
if legacy {
t.Fatal("compacted metric file was detected as legacy JSON array")
}
if len(loaded) != 1 || loaded[0].RunID != "run-1" || loaded[0].BytesProcessed != 42 {
t.Fatalf("backup metrics = %#v", loaded)
}
@@ -58,3 +61,32 @@ func TestBackupMetricsPersistSeparatelyFromRuns(t *testing.T) {
t.Fatalf("backup metrics mode = %o", info.Mode().Perm())
}
}
func TestBackupMetricsMigrateFromJSONArrayAndAppend(t *testing.T) {
s := New(t.TempDir())
finished := time.Date(2026, 7, 13, 1, 30, 0, 0, time.UTC)
legacyJSON := `[{"schemaVersion":1,"runId":"old","jobId":"job-1","finishedAt":"2026-07-13T01:30:00Z","status":"success","bytesProcessed":42,"filesProcessed":7}]`
if err := os.WriteFile(s.legacyBackupMetricsPath(), []byte(legacyJSON), 0600); err != nil {
t.Fatal(err)
}
metrics, legacy, err := s.LoadBackupMetrics()
if err != nil {
t.Fatal(err)
}
if !legacy || len(metrics) != 1 || metrics[0].RunID != "old" {
t.Fatalf("legacy metrics = %#v, legacy = %v", metrics, legacy)
}
if err := s.SaveBackupMetrics(metrics); err != nil {
t.Fatal(err)
}
if err := s.AppendBackupMetric(model.BackupMetric{SchemaVersion: model.SchemaVersion, RunID: "new", JobID: "job-1", FinishedAt: finished.Add(time.Hour), Status: "success"}); err != nil {
t.Fatal(err)
}
metrics, legacy, err = s.LoadBackupMetrics()
if err != nil {
t.Fatal(err)
}
if legacy || len(metrics) != 2 || metrics[1].RunID != "new" {
t.Fatalf("appended metrics = %#v, legacy = %v", metrics, legacy)
}
}