From 6311f9edc7615100a930773cff398ec7f849fdf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Sun, 25 Jun 2017 10:49:19 -0700 Subject: [PATCH] Update models package tests --- models/alert_test.go | 54 ++++++++++++++++ models/{models_test.go => alertgroup_test.go} | 62 +++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 models/alert_test.go rename models/{models_test.go => alertgroup_test.go} (51%) diff --git a/models/alert_test.go b/models/alert_test.go new file mode 100644 index 000000000..ce05bcb44 --- /dev/null +++ b/models/alert_test.go @@ -0,0 +1,54 @@ +package models_test + +import ( + "testing" + + "github.com/cloudflare/unsee/models" +) + +type alertStateTest struct { + alert models.Alert + isSilenced bool + isInhibited bool + isActive bool +} + +var alertStateTests = []alertStateTest{ + alertStateTest{ + alert: models.Alert{ + State: models.AlertStateActive, + }, + isActive: true, + }, + alertStateTest{ + alert: models.Alert{ + State: models.AlertStateSuppressed, + InhibitedBy: []string{"1234"}, + }, + isInhibited: true, + }, + alertStateTest{ + alert: models.Alert{ + State: models.AlertStateSuppressed, + SilencedBy: []string{"1234"}, + }, + isSilenced: true, + }, +} + +func TestAlertState(t *testing.T) { + for _, testCase := range alertStateTests { + if testCase.alert.IsActive() != testCase.isActive { + t.Errorf("alert.IsActive() returned %t while %t was expected for alert %v", + testCase.alert.IsActive(), testCase.isActive, testCase.alert) + } + if testCase.alert.IsInhibited() != testCase.isInhibited { + t.Errorf("alert.IsInhibited() returned %t while %t was expected for alert %v", + testCase.alert.IsInhibited(), testCase.isInhibited, testCase.alert) + } + if testCase.alert.IsSilenced() != testCase.isSilenced { + t.Errorf("alert.IsSilenced() returned %t while %t was expected for alert %v", + testCase.alert.IsSilenced(), testCase.isSilenced, testCase.alert) + } + } +} diff --git a/models/models_test.go b/models/alertgroup_test.go similarity index 51% rename from models/models_test.go rename to models/alertgroup_test.go index 07c350bb4..5db7d8dd7 100644 --- a/models/models_test.go +++ b/models/alertgroup_test.go @@ -76,3 +76,65 @@ func TestUnseeAlertListSort(t *testing.T) { t.Errorf("%d sort failures for %d checks", failures, iterations*len(al)) } } + +type agFPTest struct { + ag models.AlertGroup + fingerprint string +} + +var agFPTests = []agFPTest{ + // empty group fingerprint + agFPTest{ + ag: models.AlertGroup{}, + fingerprint: "da39a3ee5e6b4b0d3255bfef95601890afd80709", + }, + // different Receiver shouldn't change content fingerprint + agFPTest{ + ag: models.AlertGroup{ + Receiver: "default", + }, + fingerprint: "da39a3ee5e6b4b0d3255bfef95601890afd80709", + }, + // different StateCount shouldn't change content fingerprint + agFPTest{ + ag: models.AlertGroup{ + Receiver: "default", + StateCount: map[string]int{"default": 0}, + }, + fingerprint: "da39a3ee5e6b4b0d3255bfef95601890afd80709", + }, + // different Labels shouldn't change content fingerprint + agFPTest{ + ag: models.AlertGroup{ + Receiver: "default", + Labels: map[string]string{"foo": "bar"}, + StateCount: map[string]int{"default": 0}, + }, + fingerprint: "da39a3ee5e6b4b0d3255bfef95601890afd80709", + }, + // different set of alerts should change content fingerprint + agFPTest{ + ag: models.AlertGroup{ + Receiver: "default", + Labels: map[string]string{"foo": "bar"}, + Alerts: models.AlertList{ + models.Alert{ + Labels: map[string]string{"foo1": "bar"}, + State: models.AlertStateActive, + Fingerprint: "xxx", + }, + }, + StateCount: map[string]int{"default": 0}, + }, + fingerprint: "b60d121b438a380c343d5ec3c2037564b82ffef3", + }, +} + +func TestAlertGroupContentFingerprint(t *testing.T) { + for _, testCase := range agFPTests { + if testCase.ag.ContentFingerprint() != testCase.fingerprint { + t.Errorf("Invalid AlertGroup ContentFingerprint(), expected '%s', got '%s', AlertGroup: %v", + testCase.fingerprint, testCase.ag.ContentFingerprint(), testCase.ag) + } + } +}