func (e *E2nodeConfigUpdateNotificationHandler) updateE2nodeConfig(e2nodeConfig *models.E2nodeConfigurationUpdateMessage, nodebInfo *entities.NodebInfo) {
e.handleAddConfig(e2nodeConfig, nodebInfo)
+ e.handleUpdateConfig(e2nodeConfig, nodebInfo)
e.rNibDataService.UpdateNodebInfoAndPublish(nodebInfo)
}
}
}
+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))
"e2mgr/configuration"
"e2mgr/mocks"
"e2mgr/models"
- "e2mgr/rmrCgo"
"e2mgr/services"
"e2mgr/tests"
"e2mgr/utils"
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,
}
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...)}
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)
}
</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>