package alarm_test
import (
+ "encoding/json"
"github.com/stretchr/testify/assert"
+ "net"
+ "net/http"
+ "net/http/httptest"
+ "os"
"testing"
"time"
- "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
+ "gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm"
)
var alarmer *alarm.RICAlarm
+var managerSim *httptest.Server
// Test cases
func TestAlarmInitSuccess(t *testing.T) {
- a, err := alarm.InitAlarm("my-pod", "my-app")
+ os.Setenv("ALARM_MANAGER_URL", "http://localhost:8080")
+ managerSim = CreateAlarmManagerSim(t, "POST", "/ric/v1/alarms", http.StatusOK, nil)
+
+ a, err := alarm.InitAlarm("my-pod-lib", "my-app")
assert.Nil(t, err, "init failed")
assert.Equal(t, false, a == nil)
alarmer = a
+ time.Sleep(time.Duration(5 * time.Second))
}
func TestAlarmRaiseSuccess(t *testing.T) {
assert.Nil(t, err, "clear failed")
}
+func TestAlarmRaiseSuccessLong(t *testing.T) {
+ ainfo := ""
+ for i := 1; i <= 2024; i++ {
+ ainfo += "a"
+ }
+ a := alarmer.NewAlarm(1234, alarm.SeverityMajor, ainfo, "eth 0 1")
+ err := alarmer.Raise(a)
+ assert.Nil(t, err, "raise failed")
+}
+
+func TestAlarmClearSuccessLong(t *testing.T) {
+ ainfo := ""
+ for i := 1; i <= 2024; i++ {
+ ainfo += "a"
+ }
+ a := alarmer.NewAlarm(1234, alarm.SeverityMajor, ainfo, "eth 0 1")
+ err := alarmer.Clear(a)
+ assert.Nil(t, err, "clear failed")
+}
+
func TestAlarmReraiseSuccess(t *testing.T) {
a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
go alarmer.ReceiveMessage(consumer)
time.Sleep(time.Duration(1 * time.Second))
- m := alarmer.NewAlarmMessage(a, alarm.AlarmActionRaise)
- err := alarmer.SendMessage(m)
+ err := alarmer.Raise(a)
assert.Nil(t, err, "send failed")
}
+
+func TestSetManagedObjectIdSuccess(t *testing.T) {
+ alarmer.SetManagedObjectId("new-pod")
+
+ a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
+ assert.Equal(t, a.ManagedObjectId, "new-pod")
+}
+
+func TestSetApplicationIdSuccess(t *testing.T) {
+ alarmer.SetApplicationId("new-app")
+
+ a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
+ assert.Equal(t, a.ApplicationId, "new-app")
+}
+
+func TestTeardown(t *testing.T) {
+ managerSim.Close()
+}
+
+func CreateAlarmManagerSim(t *testing.T, method, url string, status int, respData interface{}) *httptest.Server {
+ l, err := net.Listen("tcp", "localhost:8080")
+ if err != nil {
+ t.Error("Failed to create listener: " + err.Error())
+ }
+ ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ assert.Equal(t, r.Method, method)
+ assert.Equal(t, r.URL.String(), url)
+
+ w.Header().Add("Content-Type", "application/json")
+ w.WriteHeader(status)
+ b, _ := json.Marshal(respData)
+ w.Write(b)
+ }))
+ ts.Listener.Close()
+ ts.Listener = l
+
+ ts.Start()
+
+ return ts
+}