Merge "- FM performance test tool first version for review - Process synchronization...
[ric-plt/alarm-go.git] / manager / cmd / manager_test.go
index 7398969..34b3902 100755 (executable)
 package main
 
 import (
+       "bytes"
        "encoding/json"
        "fmt"
+       "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+       "github.com/gorilla/mux"
+       "github.com/prometheus/alertmanager/api/v2/models"
        "github.com/stretchr/testify/assert"
        "io"
        "io/ioutil"
@@ -30,15 +35,10 @@ import (
        "net/http"
        "net/http/httptest"
        "os"
+       "strconv"
        "strings"
        "testing"
        "time"
-        "github.com/gorilla/mux"
-        "strconv"
-       "bytes"
-       "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
-       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
-       "github.com/prometheus/alertmanager/api/v2/models"
 )
 
 var alarmManager *AlarmManager
@@ -47,10 +47,10 @@ var eventChan chan string
 
 // Test cases
 func TestMain(M *testing.M) {
-       os.Setenv("ALARM_IF_RMR", "true")
        alarmManager = NewAlarmManager("localhost:9093", 500)
+       alarmManager.alertInterval = 20000
        go alarmManager.Run(false)
-       time.Sleep(time.Duration(2) * time.Second)
+       time.Sleep(time.Duration(10) * time.Second)
 
        // Wait until RMR is up-and-running
        for !xapp.Rmr.IsReady() {
@@ -65,6 +65,22 @@ func TestMain(M *testing.M) {
        os.Exit(M.Run())
 }
 
+func TestGetPreDefinedAlarmDefinitions(t *testing.T) {
+       xapp.Logger.Info("TestGetPreDefinedAlarmDefinitions")
+       var alarmDefinition alarm.AlarmDefinition
+       req, _ := http.NewRequest("GET", "/ric/v1/alarms/define", nil)
+       vars := map[string]string{"alarmId": strconv.FormatUint(8004, 10)}
+       req = mux.SetURLVars(req, vars)
+       handleFunc := http.HandlerFunc(alarmManager.GetAlarmDefinition)
+       response := executeRequest(req, handleFunc)
+       checkResponseCode(t, http.StatusOK, response.Code)
+       json.NewDecoder(response.Body).Decode(&alarmDefinition)
+       xapp.Logger.Info("alarm definition = %v", alarmDefinition)
+       if alarmDefinition.AlarmId != alarm.RIC_RT_DISTRIBUTION_FAILED || alarmDefinition.AlarmText != "RIC ROUTING TABLE DISTRIBUTION FAILED" {
+               t.Errorf("Incorrect alarm definition")
+       }
+}
+
 func TestSetAlarmDefinitions(t *testing.T) {
        xapp.Logger.Info("TestSetAlarmDefinitions")
        var alarm8004Definition alarm.AlarmDefinition
@@ -95,13 +111,13 @@ func TestSetAlarmDefinitions(t *testing.T) {
        alarm8008Definition.AlarmId = alarm.ACTIVE_ALARM_EXCEED_MAX_THRESHOLD
        alarm8008Definition.AlarmText = "ACTIVE ALARM EXCEED MAX THRESHOLD"
        alarm8008Definition.EventType = "storage warning"
-       alarm8008Definition.OperationInstructions = "clear alarms or raise threshold"
+       alarm8008Definition.OperationInstructions = "Clear alarms or raise threshold"
 
        var alarm8009Definition alarm.AlarmDefinition
        alarm8009Definition.AlarmId = alarm.ALARM_HISTORY_EXCEED_MAX_THRESHOLD
        alarm8009Definition.AlarmText = "ALARM HISTORY EXCEED MAX THRESHOLD"
        alarm8009Definition.EventType = "storage warning"
-       alarm8009Definition.OperationInstructions = "clear alarms or raise threshold"
+       alarm8009Definition.OperationInstructions = "Clear alarms or raise threshold"
 
        pbodyParams := RicAlarmDefinitions{AlarmDefinitions: []*alarm.AlarmDefinition{&alarm8004Definition, &alarm8005Definition, &alarm8006Definition, &alarm8007Definition, &alarm8008Definition, &alarm8009Definition}}
        pbodyEn, _ := json.Marshal(pbodyParams)
@@ -145,11 +161,11 @@ func TestDeleteAlarmDefinitions(t *testing.T) {
 
        //Delete 8004
        req, _ = http.NewRequest("DELETE", "/ric/v1/alarms/define", nil)
-        vars := map[string]string{"alarmId": strconv.FormatUint(8004, 10)}
-        req = mux.SetURLVars(req, vars)
-        handleFunc = http.HandlerFunc(alarmManager.DeleteAlarmDefinition)
-        response = executeRequest(req, handleFunc)
-        checkResponseCode(t, http.StatusOK, response.Code)
+       vars := map[string]string{"alarmId": strconv.FormatUint(8004, 10)}
+       req = mux.SetURLVars(req, vars)
+       handleFunc = http.HandlerFunc(alarmManager.DeleteAlarmDefinition)
+       response = executeRequest(req, handleFunc)
+       checkResponseCode(t, http.StatusOK, response.Code)
 
        //Get 8004 fail
        req, _ = http.NewRequest("GET", "/ric/v1/alarms/define", nil)
@@ -223,6 +239,7 @@ func TestMultipleAlarmsRaisedSucess(t *testing.T) {
        b := alarmer.NewAlarm(alarm.TCP_CONNECTIVITY_LOST_TO_DBAAS, alarm.SeverityMinor, "Hello", "abcd 11")
        assert.Nil(t, alarmer.Raise(b), "raise failed")
 
+       time.Sleep(time.Duration(2) * time.Second)
        VerifyAlarm(t, a, 2)
        VerifyAlarm(t, b, 2)
 }
@@ -257,7 +274,6 @@ func TestAlarmsSuppresedSucess(t *testing.T) {
        assert.Nil(t, alarmer.Clear(a), "clear failed")
 }
 
-
 func TestInvalidAlarms(t *testing.T) {
        xapp.Logger.Info("TestInvalidAlarms")
        a := alarmer.NewAlarm(1111, alarm.SeverityMajor, "Some App data", "eth 0 1")
@@ -318,7 +334,7 @@ func TestActiveAlarmMaxThresholds(t *testing.T) {
 func VerifyAlarm(t *testing.T, a alarm.Alarm, expectedCount int) string {
        receivedAlert := waitForEvent()
 
-       assert.Equal(t, len(alarmManager.activeAlarms), expectedCount)
+       assert.Equal(t, expectedCount, len(alarmManager.activeAlarms))
        _, ok := alarmManager.IsMatchFound(a)
        assert.True(t, ok)