Handle received update List NodeConfig 16/8216/2
authorsubhash kumar singh <subh.singh@samsung.com>
Mon, 9 May 2022 19:18:49 +0000 (19:18 +0000)
committersubhash kumar singh <subh.singh@samsung.com>
Tue, 10 May 2022 16:35:11 +0000 (16:35 +0000)
Implemented handling of e2nodebconfig for receieved IEs in
update list. Each IEs is converted to respective entities
updated to store inside NodebInfo.

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

E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler.go
E2Manager/handlers/rmrmsghandlers/e2_node_config_update_notification_handler_test.go
E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml

index 21428b0..b9f25df 100644 (file)
@@ -73,6 +73,7 @@ func (e *E2nodeConfigUpdateNotificationHandler) Handle(request *models.Notificat
 
 func (e *E2nodeConfigUpdateNotificationHandler) updateE2nodeConfig(e2nodeConfig *models.E2nodeConfigurationUpdateMessage, nodebInfo *entities.NodebInfo) {
        e.handleAddConfig(e2nodeConfig, nodebInfo)
+       e.handleUpdateConfig(e2nodeConfig, nodebInfo)
        e.rNibDataService.UpdateNodebInfoAndPublish(nodebInfo)
 }
 
@@ -121,6 +122,41 @@ func (e *E2nodeConfigUpdateNotificationHandler) handleAddConfig(e2nodeConfig *mo
        }
 }
 
+func (e *E2nodeConfigUpdateNotificationHandler) handleUpdateConfig(e2nodeConfig *models.E2nodeConfigurationUpdateMessage, nodebInfo *entities.NodebInfo) {
+       updateList := e2nodeConfig.ExtractConfigUpdateList()
+       if nodebInfo.GetNodeType() == entities.Node_GNB {
+               for i := 0; i < len(updateList); i++ {
+                       u := updateList[i]
+                       if nodebInfo.GetNodeType() == entities.Node_GNB {
+                               for j := 0; j < len(nodebInfo.GetGnb().NodeConfigs); j++ {
+                                       if e.compareConfigIDs(u, *nodebInfo.GetGnb().NodeConfigs[j]) {
+                                               e.logger.Debugf("#E2nodeConfigUpdateNotificationHandler.Handle - item at position [%d] should be updated", i)
+                                               nodebInfo.GetGnb().NodeConfigs[i] = &u
+                                               break
+                                       } else {
+                                               e.logger.Debugf("#E2nodeConfigUpdateNotificationHandler.Handle - dint match")
+                                       }
+                               }
+                       }
+               }
+       } else {
+               for i := 0; i < len(updateList); i++ {
+                       u := updateList[i]
+                       if nodebInfo.GetNodeType() == entities.Node_ENB {
+                               for j := 0; j < len(nodebInfo.GetEnb().NodeConfigs); j++ {
+                                       v := nodebInfo.GetEnb().NodeConfigs[j]
+                                       if e.compareConfigIDs(u, *v) {
+                                               e.logger.Debugf("#E2nodeConfigUpdateNotificationHandler.Handle - item at position [%d] should be updated", i)
+                                               nodebInfo.GetEnb().NodeConfigs[i] = &u
+                                               break
+                                       }
+                               }
+                       }
+
+               }
+       }
+}
+
 func (e *E2nodeConfigUpdateNotificationHandler) parseE2NodeConfigurationUpdate(payload []byte) (*models.E2nodeConfigurationUpdateMessage, error) {
        e2nodeConfig := models.E2nodeConfigurationUpdateMessage{}
        err := xml.Unmarshal(utils.NormalizeXml(payload), &(e2nodeConfig.E2APPDU))
index 870bec5..2eeb546 100644 (file)
@@ -22,7 +22,6 @@ import (
        "e2mgr/configuration"
        "e2mgr/mocks"
        "e2mgr/models"
-       "e2mgr/rmrCgo"
        "e2mgr/services"
        "e2mgr/tests"
        "e2mgr/utils"
@@ -93,7 +92,7 @@ func TestE2nodeConfigUpdatetParseFail(t *testing.T) {
 func TestHandleAddConfig(t *testing.T) {
        e2NodeConfigUpdateXml := utils.ReadXmlFile(t, E2nodeConfigUpdateXmlPath)
 
-       handler, readerMock, writerMock, rmrMessengerMock := initE2nodeConfigMocks(t)
+       handler, readerMock, writerMock, _ := initE2nodeConfigMocks(t)
        var nodebInfo = &entities.NodebInfo{
                RanName:                      gnbNodebRanName,
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
@@ -105,8 +104,6 @@ func TestHandleAddConfig(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...)}
 
@@ -115,6 +112,10 @@ func TestHandleAddConfig(t *testing.T) {
        t.Logf("len of addtionList : %d", len(nodebInfo.GetGnb().NodeConfigs))
 
        assert.Equal(t, 5, len(nodebInfo.GetGnb().NodeConfigs))
+       assert.Equal(t, "nginterf", nodebInfo.GetGnb().NodeConfigs[0].GetE2NodeComponentInterfaceTypeNG().AmfName)
+       assert.Equal(t, "72 65 71 70 61 72 73", string(nodebInfo.GetGnb().NodeConfigs[0].E2NodeComponentRequestPart))
+       assert.Equal(t, "72 65 73 70 61 72 73", string(nodebInfo.GetGnb().NodeConfigs[0].E2NodeComponentResponsePart))
+
        writerMock.AssertExpectations(t)
        readerMock.AssertExpectations(t)
 }
index 77844e3..2dc0276 100644 (file)
                                                 </e2nodeComponentInterfaceTypeNG>
                                             </e2nodeComponentID>
                                             <e2nodeComponentConfiguration>
-                                                <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
-                                                <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+                                                <e2nodeComponentRequestPart>72 65 71 70 61 72 73</e2nodeComponentRequestPart>
+                                                <e2nodeComponentResponsePart>72 65 73 70 61 72 73</e2nodeComponentResponsePart>
                                             </e2nodeComponentConfiguration>
                                         </E2nodeComponentConfigUpdate-Item>
                                     </value>