From: subhash kumar singh Date: Mon, 9 May 2022 20:48:25 +0000 (+0000) Subject: Enable E2nodeConfigUpdateAck message X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=c2a0f92c83f295c4d92277611fa17ac2b7638bc9;p=ric-plt%2Fe2mgr.git Enable E2nodeConfigUpdateAck message 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 Change-Id: I7968ad7fc937aaf8035165175898b36dfde3d490 --- diff --git a/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go b/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go index 6bd9173..fa8efc5 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go @@ -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 +} diff --git a/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go b/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go index 3692fae..50999ea 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go @@ -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...)}