2 * Copyright (c) 2020 AT&T Intellectual Property.
3 * Copyright (c) 2020 Nokia.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 * platform project (RICP).
25 "github.com/stretchr/testify/assert"
33 "gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm"
36 var alarmer *alarm.RICAlarm
37 var managerSim *httptest.Server
40 func TestAlarmInitSuccess(t *testing.T) {
41 os.Setenv("ALARM_MANAGER_URL", "http://localhost:8080")
42 managerSim = CreateAlarmManagerSim(t, "POST", "/ric/v1/alarms", http.StatusOK, nil)
44 a, err := alarm.InitAlarm("my-pod-lib", "my-app")
45 assert.Nil(t, err, "init failed")
46 assert.Equal(t, false, a == nil)
49 time.Sleep(time.Duration(5 * time.Second))
52 func TestAlarmRaiseSuccess(t *testing.T) {
53 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
55 err := alarmer.Raise(a)
56 assert.Nil(t, err, "raise failed")
59 func TestAlarmClearSuccess(t *testing.T) {
60 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
62 err := alarmer.Clear(a)
63 assert.Nil(t, err, "clear failed")
66 func TestAlarmRaiseSuccessLong(t *testing.T) {
68 for i := 1; i <= 2024; i++ {
71 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, ainfo, "eth 0 1")
72 err := alarmer.Raise(a)
73 assert.Nil(t, err, "raise failed")
76 func TestAlarmClearSuccessLong(t *testing.T) {
78 for i := 1; i <= 2024; i++ {
81 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, ainfo, "eth 0 1")
82 err := alarmer.Clear(a)
83 assert.Nil(t, err, "clear failed")
86 func TestAlarmReraiseSuccess(t *testing.T) {
87 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
89 err := alarmer.Reraise(a)
90 assert.Nil(t, err, "re-raise failed")
93 func TestAlarmClearAllSuccess(t *testing.T) {
94 err := alarmer.ClearAll()
95 assert.Nil(t, err, "clearAll failed")
98 func TestAlarmSendSuccess(t *testing.T) {
99 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
101 consumer := func(m alarm.AlarmMessage) {
102 assert.Equal(t, m.ManagedObjectId, a.ManagedObjectId)
103 assert.Equal(t, m.ApplicationId, a.ApplicationId)
104 assert.Equal(t, m.SpecificProblem, a.SpecificProblem)
105 assert.Equal(t, m.PerceivedSeverity, a.PerceivedSeverity)
106 assert.Equal(t, m.AdditionalInfo, a.AdditionalInfo)
107 assert.Equal(t, m.IdentifyingInfo, a.IdentifyingInfo)
108 assert.Equal(t, m.AlarmAction, alarm.AlarmActionRaise)
111 go alarmer.ReceiveMessage(consumer)
112 time.Sleep(time.Duration(1 * time.Second))
114 err := alarmer.Raise(a)
115 assert.Nil(t, err, "send failed")
118 func TestSetManagedObjectIdSuccess(t *testing.T) {
119 alarmer.SetManagedObjectId("new-pod")
121 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
122 assert.Equal(t, a.ManagedObjectId, "new-pod")
125 func TestSetApplicationIdSuccess(t *testing.T) {
126 alarmer.SetApplicationId("new-app")
128 a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
129 assert.Equal(t, a.ApplicationId, "new-app")
132 func TestTeardown(t *testing.T) {
136 func CreateAlarmManagerSim(t *testing.T, method, url string, status int, respData interface{}) *httptest.Server {
137 l, err := net.Listen("tcp", "localhost:8080")
139 t.Error("Failed to create listener: " + err.Error())
141 ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
142 assert.Equal(t, r.Method, method)
143 assert.Equal(t, r.URL.String(), url)
145 w.Header().Add("Content-Type", "application/json")
146 w.WriteHeader(status)
147 b, _ := json.Marshal(respData)