Reduce metric writes and preserve scheduler history
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.casaderoll.de/michael/urbm/internal/model"
|
||||
"git.casaderoll.de/michael/urbm/internal/queue"
|
||||
"git.casaderoll.de/michael/urbm/internal/store"
|
||||
)
|
||||
|
||||
@@ -39,7 +40,8 @@ func TestRepositoryLockHonorsContextCancellation(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestBackupMetricsSurviveClearedRunSnapshot(t *testing.T) {
|
||||
st := store.New(t.TempDir())
|
||||
dir := t.TempDir()
|
||||
st := store.New(dir)
|
||||
if err := st.Init(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -47,13 +49,36 @@ func TestBackupMetricsSurviveClearedRunSnapshot(t *testing.T) {
|
||||
finished := time.Date(2026, 7, 13, 1, 30, 0, 0, time.UTC)
|
||||
run := model.Run{ID: "run-1", JobID: "job-1", TaskType: "backup", Status: "success", FinishedAt: &finished, BytesProcessed: 1024, FilesProcessed: 12}
|
||||
s.queuePersistence([]model.Run{run})
|
||||
before, err := os.ReadFile(filepath.Join(dir, "backup-metrics.jsonl"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s.queuePersistence(nil)
|
||||
after, err := os.ReadFile(filepath.Join(dir, "backup-metrics.jsonl"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if string(after) != string(before) {
|
||||
t.Fatal("clearing activities rewrote the backup metric file")
|
||||
}
|
||||
metrics := s.BackupMetrics()
|
||||
if len(metrics) != 1 || metrics[0].RunID != run.ID || metrics[0].FilesProcessed != 12 {
|
||||
t.Fatalf("backup metrics after clear = %#v", metrics)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLastRunUsesDurableMetricAfterActivityClear(t *testing.T) {
|
||||
created := time.Date(2026, 7, 13, 1, 0, 0, 0, time.UTC)
|
||||
finished := created.Add(3 * time.Hour)
|
||||
q := queue.New(nil, nil)
|
||||
q.RestoreHistory([]model.Run{{ID: "run-1", JobID: "job-1", Status: "success", CreatedAt: created}})
|
||||
s := &Service{queue: q, backupMetrics: []model.BackupMetric{{RunID: "run-1", JobID: "job-1", Status: "success", FinishedAt: finished}}}
|
||||
q.ClearHistory()
|
||||
if got := s.LastRun("job-1"); !got.Equal(finished) {
|
||||
t.Fatalf("last run after activity clear = %v, want %v", got, finished)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBackupMetricsOnlyCaptureCompletedSuccessfulBackupsOnce(t *testing.T) {
|
||||
st := store.New(t.TempDir())
|
||||
s := &Service{store: st}
|
||||
|
||||
Reference in New Issue
Block a user