e2tInstanceFullAddress = "10.0.2.15:9999"
nodebRanName = "gnb:310-410-b5c67788"
GnbSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb.xml"
+ GnbWithoutFunctionsSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb_without_functions.xml"
EnGnbSetupRequestXmlPath = "../../tests/resources/setupRequest_en-gNB.xml"
NgEnbSetupRequestXmlPath = "../../tests/resources/setupRequest_ng-eNB.xml"
EnbSetupRequestXmlPath = "../../tests/resources/setupRequest_enb.xml"
assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
}
+func TestE2SetupRequestNotificationHandler_HandleNewGnbWithoutFunctionsSuccess(t *testing.T) {
+ xmlGnb := readXmlFile(t, GnbWithoutFunctionsSetupRequestXmlPath)
+ handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
+ var e2tInstance = &entities.E2TInstance{}
+ e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
+ var gnb *entities.NodebInfo
+ readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
+ writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
+ routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
+ writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
+ e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
+ var errEmpty error
+ rmrMessage := &rmrCgo.MBuf{}
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
+ prefBytes := []byte(prefix)
+ notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
+ handler.Handle(notificationRequest)
+ assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
+}
+
func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) {
xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
}
func (m *E2SetupRequestMessage) ExtractRanFunctionsList() ([]*entities.RanFunction, error) {
- list := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList.ProtocolIESingleContainer
+
+ setupRequestIes := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs
+
+ if len(setupRequestIes) < 2 {
+ return nil, nil
+ }
+
+ list := setupRequestIes[1].Value.RANfunctionsList.ProtocolIESingleContainer
funcs := make([]*entities.RanFunction, len(list))
for i := 0; i < len(funcs); i++ {
funcs[i] = &entities.RanFunction{}
PLMNIdentity string `xml:"pLMN-Identity"`
RicID string `xml:"ric-ID"`
}{PLMNIdentity: plmnId, RicID: ricId}}
- outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].ID = "9"
- outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].Value = RANfunctionsIDList{RANfunctionsIDList: struct {
- Text string `xml:",chardata"`
- ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"`
- }{ProtocolIESingleContainer: extractRanFunctionsIDList(request)}}
+
+ functionsIdList := extractRanFunctionsIDList(request)
+
+ if functionsIdList != nil {
+ outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].ID = "9"
+ outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].Value = RANfunctionsIDList{RANfunctionsIDList: struct {
+ Text string `xml:",chardata"`
+ ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"`
+ }{ProtocolIESingleContainer: functionsIdList}}
+ }
+
return E2SetupResponseMessage{E2APPDU: E2APPDU{Outcome: outcome}}
}
}
func extractRanFunctionsIDList(request *E2SetupRequestMessage) []ProtocolIESingleContainer {
- list := &request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList
+
+ setupRequestIes := request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs
+
+ if len(setupRequestIes) < 2 {
+ return nil
+ }
+
+ list := &setupRequestIes[1].Value.RANfunctionsList
ids := make([]ProtocolIESingleContainer, len(list.ProtocolIESingleContainer))
for i := 0; i < len(ids); i++ {
ids[i] = convertToRANfunctionID(list, i)