mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-06 16:16:26 +00:00
191 lines
4.5 KiB
Go
191 lines
4.5 KiB
Go
package alerts
|
|
|
|
import "testing"
|
|
|
|
func TestNormalizeSnapshotDefaults(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
in SnapshotAlertConfig
|
|
want SnapshotAlertConfig
|
|
}{
|
|
{
|
|
name: "negative values clamp to zero",
|
|
in: SnapshotAlertConfig{
|
|
WarningDays: -1,
|
|
CriticalDays: -2,
|
|
WarningSizeGiB: -3,
|
|
CriticalSizeGiB: -4,
|
|
},
|
|
want: SnapshotAlertConfig{},
|
|
},
|
|
{
|
|
name: "warning values clamp down to critical",
|
|
in: SnapshotAlertConfig{
|
|
WarningDays: 10,
|
|
CriticalDays: 3,
|
|
WarningSizeGiB: 40,
|
|
CriticalSizeGiB: 8,
|
|
},
|
|
want: SnapshotAlertConfig{
|
|
WarningDays: 3,
|
|
CriticalDays: 3,
|
|
WarningSizeGiB: 8,
|
|
CriticalSizeGiB: 8,
|
|
},
|
|
},
|
|
{
|
|
name: "critical inherits warning when critical unset",
|
|
in: SnapshotAlertConfig{
|
|
WarningDays: 7,
|
|
CriticalDays: 0,
|
|
WarningSizeGiB: 12,
|
|
CriticalSizeGiB: 0,
|
|
},
|
|
want: SnapshotAlertConfig{
|
|
WarningDays: 7,
|
|
CriticalDays: 7,
|
|
WarningSizeGiB: 12,
|
|
CriticalSizeGiB: 12,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
cfg := &AlertConfig{SnapshotDefaults: tc.in}
|
|
normalizeSnapshotDefaults(cfg)
|
|
got := cfg.SnapshotDefaults
|
|
if got != tc.want {
|
|
t.Fatalf("normalizeSnapshotDefaults() = %+v, want %+v", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNormalizeBackupDefaults(t *testing.T) {
|
|
falseValue := false
|
|
cfg := &AlertConfig{
|
|
BackupDefaults: BackupAlertConfig{
|
|
WarningDays: 10,
|
|
CriticalDays: 3,
|
|
AlertOrphaned: &falseValue,
|
|
IgnoreVMIDs: []string{
|
|
" 101 ",
|
|
"",
|
|
"101",
|
|
" 10* ",
|
|
" ",
|
|
"10*",
|
|
},
|
|
},
|
|
}
|
|
|
|
normalizeBackupDefaults(cfg)
|
|
|
|
if cfg.BackupDefaults.WarningDays != 3 {
|
|
t.Fatalf("WarningDays = %d, want 3", cfg.BackupDefaults.WarningDays)
|
|
}
|
|
if cfg.BackupDefaults.CriticalDays != 3 {
|
|
t.Fatalf("CriticalDays = %d, want 3", cfg.BackupDefaults.CriticalDays)
|
|
}
|
|
if cfg.BackupDefaults.AlertOrphaned == nil {
|
|
t.Fatal("AlertOrphaned should not be nil")
|
|
}
|
|
if *cfg.BackupDefaults.AlertOrphaned != false {
|
|
t.Fatalf("AlertOrphaned = %v, want false", *cfg.BackupDefaults.AlertOrphaned)
|
|
}
|
|
|
|
wantIgnore := []string{"101", "10*"}
|
|
if len(cfg.BackupDefaults.IgnoreVMIDs) != len(wantIgnore) {
|
|
t.Fatalf("IgnoreVMIDs length = %d, want %d (%v)", len(cfg.BackupDefaults.IgnoreVMIDs), len(wantIgnore), cfg.BackupDefaults.IgnoreVMIDs)
|
|
}
|
|
for i := range wantIgnore {
|
|
if cfg.BackupDefaults.IgnoreVMIDs[i] != wantIgnore[i] {
|
|
t.Fatalf("IgnoreVMIDs[%d] = %q, want %q", i, cfg.BackupDefaults.IgnoreVMIDs[i], wantIgnore[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNormalizeBackupDefaultsSetsAlertOrphanedDefaultAndClampsNegativeDays(t *testing.T) {
|
|
cfg := &AlertConfig{
|
|
BackupDefaults: BackupAlertConfig{
|
|
WarningDays: -2,
|
|
CriticalDays: -1,
|
|
},
|
|
}
|
|
|
|
normalizeBackupDefaults(cfg)
|
|
|
|
if cfg.BackupDefaults.WarningDays != 0 {
|
|
t.Fatalf("WarningDays = %d, want 0", cfg.BackupDefaults.WarningDays)
|
|
}
|
|
if cfg.BackupDefaults.CriticalDays != 0 {
|
|
t.Fatalf("CriticalDays = %d, want 0", cfg.BackupDefaults.CriticalDays)
|
|
}
|
|
if cfg.BackupDefaults.AlertOrphaned == nil {
|
|
t.Fatal("AlertOrphaned should be defaulted to true")
|
|
}
|
|
if !*cfg.BackupDefaults.AlertOrphaned {
|
|
t.Fatalf("AlertOrphaned = %v, want true", *cfg.BackupDefaults.AlertOrphaned)
|
|
}
|
|
}
|
|
|
|
func TestBackupIgnoreVMID(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
vmID string
|
|
ignoreList []string
|
|
want bool
|
|
}{
|
|
{
|
|
name: "empty vmid returns false",
|
|
vmID: "",
|
|
ignoreList: []string{"101"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "exact match",
|
|
vmID: "101",
|
|
ignoreList: []string{"101"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "prefix wildcard match",
|
|
vmID: "10123",
|
|
ignoreList: []string{"101*"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "trim spaces before matching",
|
|
vmID: "200",
|
|
ignoreList: []string{" 200 "},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "star only pattern does not match everything",
|
|
vmID: "101",
|
|
ignoreList: []string{"*"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "blank entries ignored",
|
|
vmID: "101",
|
|
ignoreList: []string{" ", ""},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "no match",
|
|
vmID: "999",
|
|
ignoreList: []string{"101", "10*"},
|
|
want: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
if got := backupIgnoreVMID(tc.vmID, tc.ignoreList); got != tc.want {
|
|
t.Fatalf("backupIgnoreVMID(%q, %v) = %v, want %v", tc.vmID, tc.ignoreList, got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|