Reduce metric writes and preserve scheduler history
This commit is contained in:
1 parent
ea97d7dbc9
commit
819055cbf0
12 files changed
+228
-27
No files matched your search
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user