2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
20 package rmrmsghandlers
31 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
32 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
33 "github.com/stretchr/testify/assert"
34 "github.com/stretchr/testify/mock"
41 prefix = "10.0.2.15:9999|"
42 e2tInstanceFullAddress = "10.0.2.15:9999"
43 nodebRanName = "gnb:310-410-b5c67788"
44 GnbSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb.xml"
45 GnbWithoutFunctionsSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb_without_functions.xml"
46 EnGnbSetupRequestXmlPath = "../../tests/resources/setupRequest_en-gNB.xml"
47 NgEnbSetupRequestXmlPath = "../../tests/resources/setupRequest_ng-eNB.xml"
48 EnbSetupRequestXmlPath = "../../tests/resources/setupRequest_enb.xml"
51 func readXmlFile(t *testing.T, xmlPath string) []byte {
52 path, err := filepath.Abs(xmlPath)
56 xmlAsBytes, err := ioutil.ReadFile(path)
64 func TestParseGnbSetupRequest_Success(t *testing.T) {
65 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
66 handler, _, _, _, _, _ := initMocks(t)
67 prefBytes := []byte(prefix)
68 request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
69 assert.Equal(t, "131014", request.GetPlmnId())
70 assert.Equal(t, "10011001101010101011", request.GetNbId())
74 func TestParseEnGnbSetupRequest_Success(t *testing.T) {
75 enGnbXml := readXmlFile(t, EnGnbSetupRequestXmlPath)
76 handler, _, _, _, _, _ := initMocks(t)
77 prefBytes := []byte(prefix)
78 request, _, err := handler.parseSetupRequest(append(prefBytes, enGnbXml...))
79 assert.Equal(t, "131014", request.GetPlmnId())
80 assert.Equal(t, "11000101110001101100011111111000", request.GetNbId())
84 func TestParseNgEnbSetupRequest_Success(t *testing.T) {
85 ngEnbXml := readXmlFile(t, NgEnbSetupRequestXmlPath)
86 handler, _, _, _, _, _ := initMocks(t)
87 prefBytes := []byte(prefix)
88 request, _, err := handler.parseSetupRequest(append(prefBytes, ngEnbXml...))
89 assert.Equal(t, "131014", request.GetPlmnId())
90 assert.Equal(t, "101010101010101010", request.GetNbId())
94 func TestParseEnbSetupRequest_Success(t *testing.T) {
95 enbXml := readXmlFile(t, EnbSetupRequestXmlPath)
96 handler, _, _, _, _, _ := initMocks(t)
97 prefBytes := []byte(prefix)
98 request, _, err := handler.parseSetupRequest(append(prefBytes, enbXml...))
99 assert.Equal(t, "6359AB", request.GetPlmnId())
100 assert.Equal(t, "101010101010101010", request.GetNbId())
104 func TestParseSetupRequest_PipFailure(t *testing.T) {
105 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
106 handler, _, _, _, _, _ := initMocks(t)
107 prefBytes := []byte("10.0.2.15:9999")
108 request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
109 assert.Nil(t, request)
110 assert.NotNil(t, err)
111 assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error parsing E2 Setup Request failed extract Payload: no | separator found")
114 func TestParseSetupRequest_UnmarshalFailure(t *testing.T) {
115 handler, _, _, _, _, _ := initMocks(t)
116 prefBytes := []byte(prefix)
117 request, _, err := handler.parseSetupRequest(append(prefBytes, 1, 2, 3))
118 assert.Nil(t, request)
119 assert.NotNil(t, err)
120 assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error unmarshalling E2 Setup Request payload: 31302e302e322e31353a393939397c010203")
123 func TestE2SetupRequestNotificationHandler_HandleNewGnbSuccess(t *testing.T) {
124 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
125 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
126 var e2tInstance = &entities.E2TInstance{}
127 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
128 var gnb *entities.NodebInfo
129 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
130 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
131 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
132 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
133 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
135 rmrMessage := &rmrCgo.MBuf{}
136 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
137 prefBytes := []byte(prefix)
138 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
139 handler.Handle(notificationRequest)
140 assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
143 func TestE2SetupRequestNotificationHandler_HandleNewGnbWithoutFunctionsSuccess(t *testing.T) {
144 xmlGnb := readXmlFile(t, GnbWithoutFunctionsSetupRequestXmlPath)
145 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
146 var e2tInstance = &entities.E2TInstance{}
147 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
148 var gnb *entities.NodebInfo
149 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
150 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
151 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
152 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
153 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
155 rmrMessage := &rmrCgo.MBuf{}
156 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
157 prefBytes := []byte(prefix)
158 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
159 handler.Handle(notificationRequest)
160 assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
163 func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) {
164 xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
165 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
166 var e2tInstance = &entities.E2TInstance{}
167 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
168 var gnb *entities.NodebInfo
169 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
170 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
171 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
172 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
173 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
175 rmrMessage := &rmrCgo.MBuf{}
176 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
177 prefBytes := []byte(prefix)
178 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
179 handler.Handle(notificationRequest)
180 assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
183 func TestE2SetupRequestNotificationHandler_HandleNewNgEnbSuccess(t *testing.T) {
184 xmlNgEnb := readXmlFile(t, NgEnbSetupRequestXmlPath)
185 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
186 var e2tInstance = &entities.E2TInstance{}
187 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
188 var gnb *entities.NodebInfo
189 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
190 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
191 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
192 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
193 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
195 rmrMessage := &rmrCgo.MBuf{}
196 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
197 prefBytes := []byte(prefix)
198 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlNgEnb...)}
199 handler.Handle(notificationRequest)
200 assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
203 func TestE2SetupRequestNotificationHandler_HandleExistingGnbSuccess(t *testing.T) {
204 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
206 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
207 var e2tInstance = &entities.E2TInstance{}
208 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
209 var gnb = &entities.NodebInfo{
210 RanName: nodebRanName,
211 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
212 ConnectionStatus: entities.ConnectionStatus_CONNECTED,
213 NodeType: entities.Node_GNB,
214 Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}},
216 readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
217 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
218 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
219 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
221 rmrMessage := &rmrCgo.MBuf{}
222 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
223 prefBytes := []byte(prefix)
224 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
225 handler.Handle(notificationRequest)
226 assertExistingNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
229 func TestE2SetupRequestNotificationHandler_HandleParseError(t *testing.T) {
230 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
232 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
233 prefBytes := []byte("invalid_prefix")
234 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
235 handler.Handle(notificationRequest)
236 readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
237 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
238 routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
239 writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
240 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
241 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
244 func TestE2SetupRequestNotificationHandler_HandleUnmarshalError(t *testing.T) {
245 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
246 prefBytes := []byte(prefix)
247 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, "xmlGnb"...)}
248 handler.Handle(notificationRequest)
249 readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
250 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
251 routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
252 writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
253 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
254 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
257 func TestE2SetupRequestNotificationHandler_HandleGetE2TInstanceError(t *testing.T) {
258 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
259 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
260 var e2tInstance *entities.E2TInstance
261 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, common.NewResourceNotFoundError("Not found"))
262 prefBytes := []byte(prefix)
263 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
264 handler.Handle(notificationRequest)
265 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
266 readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
267 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
268 routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
269 writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
270 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
271 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
274 func TestE2SetupRequestNotificationHandler_HandleGetNodebError(t *testing.T) {
275 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
277 handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
278 var e2tInstance = &entities.E2TInstance{}
279 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
280 var gnb *entities.NodebInfo
281 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewInternalError(errors.New("some error")))
282 prefBytes := []byte(prefix)
283 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
284 handler.Handle(notificationRequest)
285 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
286 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
287 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
288 routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
289 writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
290 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
291 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
294 func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) {
295 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
297 handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
298 var e2tInstance = &entities.E2TInstance{}
299 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
300 var gnb *entities.NodebInfo
301 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
302 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
303 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
304 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
305 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error"))
307 rmrMessage := &rmrCgo.MBuf{}
308 rmrMessengerMock.On("WhSendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
310 prefBytes := []byte(prefix)
311 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
312 handler.Handle(notificationRequest)
313 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
314 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
315 writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
316 routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
317 writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
318 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
319 rmrMessengerMock.AssertCalled(t, "WhSendMsg", mock.Anything, mock.Anything)
322 func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T) {
323 xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
324 logger := tests.InitLog(t)
325 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
328 }{PlmnId: "131014", RicNearRtId: "10011001101010101011"}}
329 rmrMessengerMock := &mocks.RmrMessengerMock{}
330 rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
331 readerMock := &mocks.RnibReaderMock{}
332 writerMock := &mocks.RnibWriterMock{}
333 routingManagerClientMock := &mocks.RoutingManagerClientMock{}
334 rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
335 e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
336 e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
337 handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
339 var e2tInstance = &entities.E2TInstance{}
340 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
341 var gnb *entities.NodebInfo
342 readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
343 writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
344 routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
345 writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
346 e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
348 rmrMessage := &rmrCgo.MBuf{}
349 rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
350 prefBytes := []byte(prefix)
351 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
352 handler.Handle(notificationRequest)
353 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
354 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
355 writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
356 routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
357 writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
358 e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
359 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
362 func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) {
363 xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
364 handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
365 var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}
366 readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
367 var e2tInstance = &entities.E2TInstance{}
368 e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
369 prefBytes := []byte(prefix)
370 notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
371 handler.Handle(notificationRequest)
372 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
373 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
374 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
375 routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
376 writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
377 e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
378 rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
381 func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) {
382 logger := tests.InitLog(t)
383 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
386 }{PlmnId: "131014", RicNearRtId: "556670"}}
387 rmrMessengerMock := &mocks.RmrMessengerMock{}
388 rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
389 readerMock := &mocks.RnibReaderMock{}
390 writerMock := &mocks.RnibWriterMock{}
391 routingManagerClientMock := &mocks.RoutingManagerClientMock{}
392 rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
393 e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
394 e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
395 handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
396 return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock
399 func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
400 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
401 writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
402 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
403 routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
404 writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
405 e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
406 rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
409 func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
410 readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
411 writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
412 e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
413 routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
414 writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
415 e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
416 rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)