From 4a7716f0dffcd714e1ea9b280ea1a6e0965e191d Mon Sep 17 00:00:00 2001 From: Juha Hyttinen Date: Thu, 6 Oct 2022 09:49:08 +0300 Subject: [PATCH] fixed rmr msg allocation in case payload len in bigger than 1024 Issue-ID: RIC-943 Signed-off-by: Juha Hyttinen Change-Id: Ic6e53208b80968c425805d7c567f497f12dc1ef0 --- alarm/alarm.go | 2 +- alarm/alarm_test.go | 20 ++++++++++++++++++++ alarm/utils.c | 8 +++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/alarm/alarm.go b/alarm/alarm.go index 1cb26b4..36d4ea3 100755 --- a/alarm/alarm.go +++ b/alarm/alarm.go @@ -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 diff --git a/alarm/alarm_test.go b/alarm/alarm_test.go index fa9e5b1..9f399b1 100755 --- a/alarm/alarm_test.go +++ b/alarm/alarm_test.go @@ -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") diff --git a/alarm/utils.c b/alarm/utils.c index 0869282..dbb9343 100644 --- a/alarm/utils.c +++ b/alarm/utils.c @@ -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; -- 2.16.6