fixed rmr msg allocation in case payload len in bigger than 1024 86/9186/2 alarm/v0.5.14 v0.5.14
authorJuha Hyttinen <juha.hyttinen@nokia.com>
Thu, 6 Oct 2022 06:49:08 +0000 (09:49 +0300)
committerJuha Hyttinen <juha.hyttinen@nokia.com>
Thu, 6 Oct 2022 07:29:40 +0000 (10:29 +0300)
Issue-ID: RIC-943

Signed-off-by: Juha Hyttinen <juha.hyttinen@nokia.com>
Change-Id: Ic6e53208b80968c425805d7c567f497f12dc1ef0

alarm/alarm.go
alarm/alarm_test.go
alarm/utils.c

index 1cb26b4..36d4ea3 100755 (executable)
@@ -169,7 +169,7 @@ func (r *RICAlarm) sendAlarmUpdateReqWithRmr(payload []byte) error {
        defer C.free(unsafe.Pointer(meid))
 
        if state := C.rmrSend(r.rmrCtx, RIC_ALARM_UPDATE, datap, C.int(len(payload)), meid); state != C.RMR_OK {
-               return errors.New(fmt.Sprintf("RmrError=rmrSend failed with error: %d", state))
+               return errors.New(fmt.Sprintf("RmrError=rmrSend via %s failed with error: %d", r.rmrEndpoint, state))
        }
        log.Printf("Alarm sent via rmr to %s", r.rmrEndpoint)
        return nil
index fa9e5b1..9f399b1 100755 (executable)
@@ -63,6 +63,26 @@ func TestAlarmClearSuccess(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")
 
index 0869282..dbb9343 100644 (file)
@@ -40,7 +40,13 @@ void * rmrInit(void) {
 
 int rmrSend(void *mrc, int mtype, void *payload, int payload_len, char *meid) {
     int retry_count = 0;
-    rmr_mbuf_t *sbuf = rmr_alloc_msg(mrc, 1024);
+    rmr_mbuf_t *sbuf = 0;
+
+    if (payload_len > 1024) {
+        sbuf = rmr_alloc_msg(mrc, payload_len);
+    } else {
+        sbuf = rmr_alloc_msg(mrc, 1024);
+    }
 
     sbuf->mtype = mtype;
     sbuf->sub_id = RMR_VOID_SUBID;