Persist dashboard backup metrics separately
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.casaderoll.de/michael/urbm/internal/model"
|
||||
"git.casaderoll.de/michael/urbm/internal/store"
|
||||
)
|
||||
|
||||
func TestRepositoryLockHonorsContextCancellation(t *testing.T) {
|
||||
@@ -25,6 +26,40 @@ func TestRepositoryLockHonorsContextCancellation(t *testing.T) {
|
||||
unlock()
|
||||
}
|
||||
|
||||
func TestBackupMetricsSurviveClearedRunSnapshot(t *testing.T) {
|
||||
st := store.New(t.TempDir())
|
||||
if err := st.Init(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s := &Service{store: st, persistRuns: make(chan []model.Run, 1)}
|
||||
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})
|
||||
s.queuePersistence(nil)
|
||||
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 TestBackupMetricsOnlyCaptureCompletedSuccessfulBackupsOnce(t *testing.T) {
|
||||
st := store.New(t.TempDir())
|
||||
s := &Service{store: st}
|
||||
finished := time.Now().UTC()
|
||||
valid := model.Run{ID: "valid", JobID: "job-1", TaskType: "backup", Status: "warning", FinishedAt: &finished}
|
||||
s.captureBackupMetrics([]model.Run{
|
||||
valid,
|
||||
valid,
|
||||
{ID: "failed", TaskType: "backup", Status: "failed", FinishedAt: &finished},
|
||||
{ID: "active", TaskType: "backup", Status: "running"},
|
||||
{ID: "rsync", TaskType: "rsync", Status: "success", FinishedAt: &finished},
|
||||
})
|
||||
metrics := s.BackupMetrics()
|
||||
if len(metrics) != 1 || metrics[0].RunID != valid.ID {
|
||||
t.Fatalf("captured backup metrics = %#v", metrics)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPersistentRunLogsAreWrittenAndPruned(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
config := model.DefaultConfig()
|
||||
|
||||
Reference in New Issue
Block a user