X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=manager%2Fcmd%2Fmanager_test.go;h=0457c58fdb4a940086b9636d871973a035e4ee03;hb=43fe17ef30078c8ceb624a4aa5167d509466e086;hp=b75cae549a05374227e7909f96392a32b698a341;hpb=18fd03c7dd490347eeec3ed60e176fb3a8ccc3c7;p=ric-plt%2Falarm-go.git diff --git a/manager/cmd/manager_test.go b/manager/cmd/manager_test.go index b75cae5..0457c58 100755 --- a/manager/cmd/manager_test.go +++ b/manager/cmd/manager_test.go @@ -50,7 +50,7 @@ var eventChan chan string func TestMain(M *testing.M) { alarmManager = NewAlarmManager("localhost:9093", 500, false) alarmManager.alertInterval = 20000 - go alarmManager.Run(false) + go alarmManager.Run(false, 5) time.Sleep(time.Duration(10) * time.Second) // Wait until RMR is up-and-running @@ -353,7 +353,7 @@ func TestGetPrometheusAlerts(t *testing.T) { commandReady := make(chan bool, 1) command := "cli/alarm-cli" - args := []string{"gapam", "--active", "true", "--inhibited", "true", "--silenced", "--unprocessed", "true", "true", "--host", "localhost", "--port", "9093", "flushall"} + args := []string{"alerts", "--active", "true", "--inhibited", "true", "--silenced", "--unprocessed", "true", "true", "--host", "localhost", "--port", "9093", "flushall"} ExecCLICommand(commandReady, command, args...) <-commandReady @@ -392,17 +392,17 @@ func TestDelayedAlarmRaiseAndClear(t *testing.T) { ts := CreatePromAlertSimulator(t, "POST", "/api/v2/alerts", http.StatusOK, models.LabelSet{}) defer ts.Close() - // Raise alarm. Posting alert and updating alarm history should be delayed + // Raise alarm. Posting alert and updating alarm history should be delayed a := alarmer.NewAlarm(9999, alarm.SeverityCritical, "Some App data", "eth 0 1") assert.Nil(t, alarmer.Raise(a), "raise failed") - VerifyAlarm(t, a, activeAlarmsBeforeTest + 1) + VerifyAlarm(t, a, activeAlarmsBeforeTest+1) // Clear the alarm and check the alarm is removed. Posting alert clear and updating alarm history should be delayed assert.Nil(t, alarmer.Clear(a), "clear failed") time.Sleep(time.Duration(2) * time.Second) assert.Equal(t, len(alarmManager.activeAlarms), activeAlarmsBeforeTest) - assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest + 2) + assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest+2) } func TestDelayedAlarmRaiseAndClear2(t *testing.T) { @@ -417,11 +417,11 @@ func TestDelayedAlarmRaiseAndClear2(t *testing.T) { // Raise two alarms. The first should be delayed a := alarmer.NewAlarm(9999, alarm.SeverityCritical, "Some App data", "eth 0 1") assert.Nil(t, alarmer.Raise(a), "raise failed") - VerifyAlarm(t, a, activeAlarmsBeforeTest + 1) + VerifyAlarm(t, a, activeAlarmsBeforeTest+1) b := alarmer.NewAlarm(alarm.RIC_RT_DISTRIBUTION_FAILED, alarm.SeverityMajor, "Some App data", "eth 0 1") assert.Nil(t, alarmer.Raise(b), "raise failed") - VerifyAlarm(t, b, activeAlarmsBeforeTest + 2) + VerifyAlarm(t, b, activeAlarmsBeforeTest+2) // Clear two alarms. The first should be delayed. Check the alarms are removed assert.Nil(t, alarmer.Clear(a), "clear failed") @@ -429,7 +429,7 @@ func TestDelayedAlarmRaiseAndClear2(t *testing.T) { time.Sleep(time.Duration(2) * time.Second) assert.Equal(t, len(alarmManager.activeAlarms), activeAlarmsBeforeTest) - assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest + 4) + assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest+4) } func TestDelayedAlarmRaiseAndClear3(t *testing.T) { @@ -475,11 +475,11 @@ func TestDelayedAlarmRaiseAndClear3(t *testing.T) { // Raise two alarms. The first should be delayed a := alarmer.NewAlarm(9999, alarm.SeverityCritical, "Some App data", "eth 0 1") assert.Nil(t, alarmer.Raise(a), "raise failed") - VerifyAlarm(t, a, activeAlarmsBeforeTest + 1) + VerifyAlarm(t, a, activeAlarmsBeforeTest+1) b := alarmer.NewAlarm(alarm.RIC_RT_DISTRIBUTION_FAILED, alarm.SeverityMajor, "Some App data", "eth 0 1") assert.Nil(t, alarmer.Raise(b), "raise failed") - VerifyAlarm(t, b, activeAlarmsBeforeTest + 2) + VerifyAlarm(t, b, activeAlarmsBeforeTest+2) // Clear two alarms. The first should be delayed. Check the alarms are removed assert.Nil(t, alarmer.Clear(a), "clear failed") @@ -487,7 +487,40 @@ func TestDelayedAlarmRaiseAndClear3(t *testing.T) { time.Sleep(time.Duration(2) * time.Second) assert.Equal(t, len(alarmManager.activeAlarms), activeAlarmsBeforeTest) - assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest + 4) + assert.Equal(t, len(alarmManager.alarmHistory), alarmHistoryBeforeTest+4) +} + +func TestClearExpiredAlarms(t *testing.T) { + xapp.Logger.Info("TestClearExpiredAlarms") + + a := alarm.AlarmMessage{ + Alarm: alarmer.NewAlarm(8007, alarm.SeverityWarning, "threshold", ""), + AlarmAction: alarm.AlarmActionRaise, + AlarmTime: time.Now().UnixNano(), + } + d := alarm.RICAlarmDefinitions[8007] + n := AlarmNotification{a, *d} + alarmManager.activeAlarms = make([]AlarmNotification, 0) + alarmManager.UpdateActiveAlarmList(&n) + + // Unknown SP + a.Alarm.SpecificProblem = 1234 + assert.False(t, alarmManager.ClearExpiredAlarms(n, 0, false), "ClearExpiredAlarms failed") + + // TTL is 0 + d.TimeToLive = 0 + assert.False(t, alarmManager.ClearExpiredAlarms(n, 0, false), "ClearExpiredAlarms failed") + + // TTL not expired + a.Alarm.SpecificProblem = 8007 + d.TimeToLive = 2 + assert.False(t, alarmManager.ClearExpiredAlarms(n, 0, false), "ClearExpiredAlarms failed") + + // TTL expired, alarm should be cleared + time.Sleep(time.Duration(3) * time.Second) + assert.Equal(t, len(alarmManager.activeAlarms), 1) + assert.True(t, alarmManager.ClearExpiredAlarms(n, 0, false), "ClearExpiredAlarms failed") + assert.Equal(t, len(alarmManager.activeAlarms), 0) } func VerifyAlarm(t *testing.T, a alarm.Alarm, expectedCount int) string {