Initial alarm library implementation
[ric-plt/alarm-go.git] / alarm / alarm_test.go
diff --git a/alarm/alarm_test.go b/alarm/alarm_test.go
new file mode 100755 (executable)
index 0000000..ea56b00
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ *  Copyright (c) 2020 AT&T Intellectual Property.
+ *  Copyright (c) 2020 Nokia.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ * This source code is part of the near-RT RIC (RAN Intelligent Controller)
+ * platform project (RICP).
+ */
+
+package alarm_test
+
+import (
+       "github.com/stretchr/testify/assert"
+       "testing"
+       "time"
+
+       "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
+)
+
+var alarmer *alarm.RICAlarm
+
+// Test cases
+func TestAlarmInitSuccess(t *testing.T) {
+       a, err := alarm.InitAlarm("my-pod", "my-app")
+       assert.Nil(t, err, "init failed")
+       assert.Equal(t, false, a == nil)
+
+       alarmer = a
+}
+
+func TestAlarmRaiseSuccess(t *testing.T) {
+       a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
+
+       err := alarmer.Raise(a)
+       assert.Nil(t, err, "raise failed")
+}
+
+func TestAlarmClearSuccess(t *testing.T) {
+       a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "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")
+
+       err := alarmer.Reraise(a)
+       assert.Nil(t, err, "re-raise failed")
+}
+
+func TestAlarmClearAllSuccess(t *testing.T) {
+       err := alarmer.ClearAll()
+       assert.Nil(t, err, "clearAll failed")
+}
+
+func TestAlarmSendSuccess(t *testing.T) {
+       a := alarmer.NewAlarm(1234, alarm.SeverityMajor, "Some App data", "eth 0 1")
+
+       consumer := func(m alarm.AlarmMessage) {
+               assert.Equal(t, m.ManagedObjectId, a.ManagedObjectId)
+               assert.Equal(t, m.ApplicationId, a.ApplicationId)
+               assert.Equal(t, m.SpecificProblem, a.SpecificProblem)
+               assert.Equal(t, m.PerceivedSeverity, a.PerceivedSeverity)
+               assert.Equal(t, m.AdditionalInfo, a.AdditionalInfo)
+               assert.Equal(t, m.IdentifyingInfo, a.IdentifyingInfo)
+               assert.Equal(t, m.AlarmAction, alarm.AlarmActionRaise)
+       }
+
+       go alarmer.ReceiveMessage(consumer)
+       time.Sleep(time.Duration(1 * time.Second))
+
+       m := alarmer.NewAlarmMessage(a, alarm.AlarmActionRaise)
+       err := alarmer.SendMessage(m)
+       assert.Nil(t, err, "send failed")
+}