Enable E2nodeConfigUpdateAck message 19/8219/3
authorsubhash kumar singh <subh.singh@samsung.com>
Mon, 9 May 2022 20:48:25 +0000 (20:48 +0000)
committersubhash kumar singh <subh.singh@samsung.com>
Tue, 10 May 2022 18:48:04 +0000 (18:48 +0000)
Prepared E2nodeConfigUpdateAck message on successful processing
of E2nodeConfigUpdate message. Finally we will respond to nodeb
by sending Ack message over RMR.

Signed-off-by: subhash kumar singh <subh.singh@samsung.com>
Change-Id: I7968ad7fc937aaf8035165175898b36dfde3d490

E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go
E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go

index 6bd9173..fa8efc5 100644 (file)
@@ -21,6 +21,7 @@ package rmrmsghandlers
 import (
        "e2mgr/logger"
        "e2mgr/models"
+       "e2mgr/rmrCgo"
        "e2mgr/services"
        "e2mgr/services/rmrsender"
        "e2mgr/utils"
@@ -69,6 +70,7 @@ func (e *E2nodeConfigUpdateNotificationHandler) Handle(request *models.Notificat
                return
        }
        e.updateE2nodeConfig(e2NodeConfig, nodebInfo)
+       e.handleSuccessfulResponse(e2NodeConfig, request, nodebInfo)
 }
 
 func (e *E2nodeConfigUpdateNotificationHandler) updateE2nodeConfig(e2nodeConfig *models.E2nodeConfigurationUpdateMessage, nodebInfo *entities.NodebInfo) {
@@ -200,3 +202,17 @@ func (e *E2nodeConfigUpdateNotificationHandler) parseE2NodeConfigurationUpdate(p
        e.logger.Debugf("#E2nodeConfigUpdateNotificationHandler.Handle - Unmarshalling is successful %v", e2nodeConfig.E2APPDU.InitiatingMessage.ProcedureCode)
        return &e2nodeConfig, nil
 }
+
+func (e *E2nodeConfigUpdateNotificationHandler) handleSuccessfulResponse(e2NodeConfigUpdate *models.E2nodeConfigurationUpdateMessage, request *models.NotificationRequest, nodebInfo *entities.NodebInfo) error {
+       e2nodeConfigUpdateResp := models.NewE2nodeConfigurationUpdateSuccessResponseMessage(e2NodeConfigUpdate)
+       payLoad, err := xml.Marshal(e2nodeConfigUpdateResp)
+       if err != nil {
+               e.logger.Errorf("#E2nodeConfigUpdateNotificationHandler.sendUpdateAck - Error marshalling RIC_SERVICE_UPDATE_ACK. Payload: %s", payLoad)
+       }
+
+       payLoad = utils.ReplaceEmptyTagsWithSelfClosing(payLoad, toReplaceTags)
+       e.logger.Infof("#E2nodeConfigUpdateNotificationHandler.sendUpdateAck - Sending RIC_SERVICE_UPDATE_ACK to RAN name: %s with payload %s", nodebInfo.RanName, payLoad)
+       msg := models.NewRmrMessage(rmrCgo.RIC_SERVICE_UPDATE_ACK, nodebInfo.RanName, payLoad, request.TransactionId, request.GetMsgSrc())
+       err = e.rmrSender.Send(msg)
+       return err
+}
index 3692fae..50999ea 100644 (file)
@@ -22,6 +22,7 @@ import (
        "e2mgr/configuration"
        "e2mgr/mocks"
        "e2mgr/models"
+       "e2mgr/rmrCgo"
        "e2mgr/services"
        "e2mgr/tests"
        "e2mgr/utils"
@@ -62,7 +63,7 @@ func initE2nodeConfigMocks(t *testing.T) (*E2nodeConfigUpdateNotificationHandler
 
 func TestE2nodeConfigUpdatetNotificationHandler(t *testing.T) {
        e2NodeConfigUpdateXml := utils.ReadXmlFile(t, E2nodeConfigUpdateOnlyAdditionXmlPath)
-       handler, readerMock, writerMock, _ := initE2nodeConfigMocks(t)
+       handler, readerMock, writerMock, rmrMessengerMock := initE2nodeConfigMocks(t)
        var nodebInfo = &entities.NodebInfo{
                RanName:                      gnbNodebRanName,
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
@@ -74,6 +75,8 @@ func TestE2nodeConfigUpdatetNotificationHandler(t *testing.T) {
        }
        readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)
        writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil)
+       var errEmpty error
+       rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(&rmrCgo.MBuf{}, errEmpty)
        notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2NodeConfigUpdateXml...)}
        handler.Handle(notificationRequest)
        readerMock.AssertExpectations(t)
@@ -93,7 +96,7 @@ func TestE2nodeConfigUpdatetParseFail(t *testing.T) {
 func TestHandleAddAndUpdateConfig(t *testing.T) {
        e2NodeConfigUpdateXml := utils.ReadXmlFile(t, E2nodeConfigUpdateOnlyAdditionAndUpdateXmlPath)
 
-       handler, readerMock, writerMock, _ := initE2nodeConfigMocks(t)
+       handler, readerMock, writerMock, rmrMessengerMock := initE2nodeConfigMocks(t)
        var nodebInfo = &entities.NodebInfo{
                RanName:                      gnbNodebRanName,
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
@@ -105,6 +108,8 @@ func TestHandleAddAndUpdateConfig(t *testing.T) {
        }
        readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)
        writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil)
+       var errEmpty error
+       rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(&rmrCgo.MBuf{}, errEmpty)
 
        notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2NodeConfigUpdateXml...)}
 
@@ -124,7 +129,7 @@ func TestHandleAddAndUpdateConfig(t *testing.T) {
 func TestHandleAddandDeleteConfig(t *testing.T) {
        e2NodeConfigUpdateXml := utils.ReadXmlFile(t, E2nodeConfigUpdateXmlPath)
 
-       handler, readerMock, writerMock, _ := initE2nodeConfigMocks(t)
+       handler, readerMock, writerMock, rmrMessengerMock := initE2nodeConfigMocks(t)
        var nodebInfo = &entities.NodebInfo{
                RanName:                      gnbNodebRanName,
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
@@ -136,6 +141,8 @@ func TestHandleAddandDeleteConfig(t *testing.T) {
        }
        readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)
        writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil)
+       var errEmpty error
+       rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(&rmrCgo.MBuf{}, errEmpty)
 
        notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2NodeConfigUpdateXml...)}