MCPcopy
hub / github.com/henrygd/beszel / TestDiskAlertExtraFsMultiMinute

Function TestDiskAlertExtraFsMultiMinute

internal/alerts/alerts_disk_test.go:21–155  ·  view source on GitHub ↗

TestDiskAlertExtraFsMultiMinute tests that multi-minute disk alerts correctly use historical per-minute values for extra (non-root) filesystems, not the current live snapshot.

(t *testing.T)

Source from the content-addressed store, hash-verified

19// TestDiskAlertExtraFsMultiMinute tests that multi-minute disk alerts correctly use
20// historical per-minute values for extra (non-root) filesystems, not the current live snapshot.
21func TestDiskAlertExtraFsMultiMinute(t *testing.T) {
22 hub, user := beszelTests.GetHubWithUser(t)
23 defer hub.Cleanup()
24
25 systems, err := beszelTests.CreateSystems(hub, 1, user.Id, "up")
26 require.NoError(t, err)
27 systemRecord := systems[0]
28
29 // Disk alert: threshold 80%, min=2 (requires historical averaging)
30 diskAlert, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
31 "name": "Disk",
32 "system": systemRecord.Id,
33 "user": user.Id,
34 "value": 80, // threshold: 80%
35 "min": 2, // 2 minutes - requires historical averaging
36 })
37 require.NoError(t, err)
38 assert.False(t, diskAlert.GetBool("triggered"), "Alert should not be triggered initially")
39
40 am := hub.GetAlertManager()
41 now := time.Now().UTC()
42
43 extraFsHigh := map[string]*system.FsStats{
44 "/mnt/data": {DiskTotal: 1000, DiskUsed: 920}, // 92% - above threshold
45 }
46
47 // Insert 4 historical records spread over 3 minutes (same pattern as battery tests).
48 // The oldest record must predate (now - 2min) so the alert time window is valid.
49 recordTimes := []time.Duration{
50 -180 * time.Second, // 3 min ago - anchors oldest record before alert.time
51 -90 * time.Second,
52 -60 * time.Second,
53 -30 * time.Second,
54 }
55
56 for _, offset := range recordTimes {
57 stats := system.Stats{
58 DiskPct: 30, // root disk at 30% - below threshold
59 ExtraFs: extraFsHigh,
60 }
61 statsJSON, _ := json.Marshal(stats)
62
63 recordTime := now.Add(offset)
64 record, err := beszelTests.CreateRecord(hub, "system_stats", map[string]any{
65 "system": systemRecord.Id,
66 "type": "1m",
67 "stats": string(statsJSON),
68 })
69 require.NoError(t, err)
70 record.SetRaw("created", recordTime.Format(types.DefaultDateLayout))
71 err = hub.SaveNoValidate(record)
72 require.NoError(t, err)
73 }
74
75 combinedDataHigh := &system.CombinedData{
76 Stats: system.Stats{
77 DiskPct: 30,
78 ExtraFs: extraFsHigh,

Callers

nothing calls this directly

Calls 4

CleanupMethod · 0.80
GetAlertManagerMethod · 0.80
HandleSystemAlertsMethod · 0.65
SetMethod · 0.45

Tested by

no test coverage detected