RIC-194 Setup from RAN: On Routing Manager Failure, return Setup Failure
[ric-plt/e2mgr.git] / E2Manager / handlers / rmrmsghandlers / e2_setup_request_notification_handler_test.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
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
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16
17 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 //  platform project (RICP).
19
20 package rmrmsghandlers
21
22 import (
23         "e2mgr/configuration"
24         "e2mgr/managers"
25         "e2mgr/mocks"
26         "e2mgr/models"
27         "e2mgr/rmrCgo"
28         "e2mgr/services"
29         "e2mgr/tests"
30         "errors"
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"
35         "io/ioutil"
36         "path/filepath"
37         "testing"
38 )
39
40 const (
41         prefix = "10.0.2.15:9999|"
42         e2tInstanceFullAddress = "10.0.2.15:9999"
43         nodebRanName = "gnb:310-410-b5c67788"
44 )
45
46 func TestParseSetupRequest_Success(t *testing.T){
47         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
48         if err != nil {
49                 t.Fatal(err)
50         }
51         xmlGnb, err := ioutil.ReadFile(path)
52         if err != nil {
53                 t.Fatal(err)
54         }
55         handler, _, _, _, _, _ := initMocks(t)
56         prefBytes := []byte(prefix)
57         request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
58         assert.Equal(t, request.GetPlmnId(), "131014")
59         assert.Equal(t, request.GetNbId(), "10011001101010101011")
60 }
61
62 func TestParseSetupRequest_PipFailure(t *testing.T){
63         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
64         if err != nil {
65                 t.Fatal(err)
66         }
67         xmlGnb, err := ioutil.ReadFile(path)
68         if err != nil {
69                 t.Fatal(err)
70         }
71         handler, _, _, _, _, _ := initMocks(t)
72         prefBytes := []byte("10.0.2.15:9999")
73         request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
74         assert.Nil(t, request)
75         assert.NotNil(t, err)
76         assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error parsing E2 Setup Request failed extract Payload: no | separator found")
77 }
78
79 func TestParseSetupRequest_UnmarshalFailure(t *testing.T){
80         handler, _, _, _, _, _ := initMocks(t)
81         prefBytes := []byte(prefix)
82         request, _, err := handler.parseSetupRequest(append(prefBytes, 1,2,3))
83         assert.Nil(t, request)
84         assert.NotNil(t, err)
85         assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error unmarshalling E2 Setup Request payload: 31302e302e322e31353a393939397c010203")
86 }
87
88 func TestE2SetupRequestNotificationHandler_HandleNewGnbSuccess(t *testing.T) {
89         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
90         if err != nil {
91                 t.Fatal(err)
92         }
93         xmlGnb, err := ioutil.ReadFile(path)
94         if err != nil {
95                 t.Fatal(err)
96         }
97
98         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
99         var e2tInstance = &entities.E2TInstance{}
100         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
101         var gnb *entities.NodebInfo
102         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
103         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
104         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
105         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
106         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
107         var errEmpty error
108         rmrMessage := &rmrCgo.MBuf{}
109         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
110         prefBytes := []byte(prefix)
111         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
112         handler.Handle(notificationRequest)
113         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
114 }
115
116 func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) {
117         path, err :=filepath.Abs("../../tests/resources/setupRequest_en-gNB.xml")
118         if err != nil {
119                 t.Fatal(err)
120         }
121         xmlEnGnb, err := ioutil.ReadFile(path)
122         if err != nil {
123                 t.Fatal(err)
124         }
125
126         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
127         var e2tInstance = &entities.E2TInstance{}
128         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
129         var gnb *entities.NodebInfo
130         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
131         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
132         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
133         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
134         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
135         var errEmpty error
136         rmrMessage := &rmrCgo.MBuf{}
137         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
138         prefBytes := []byte(prefix)
139         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
140         handler.Handle(notificationRequest)
141         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
142 }
143
144 func TestE2SetupRequestNotificationHandler_HandleNewNgEnbSuccess(t *testing.T) {
145         path, err :=filepath.Abs("../../tests/resources/setupRequest_ng-eNB.xml")
146         if err != nil {
147                 t.Fatal(err)
148         }
149         xmlEnGnb, err := ioutil.ReadFile(path)
150         if err != nil {
151                 t.Fatal(err)
152         }
153
154         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
155         var e2tInstance = &entities.E2TInstance{}
156         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
157         var gnb *entities.NodebInfo
158         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
159         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
160         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
161         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
162         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
163         var errEmpty error
164         rmrMessage := &rmrCgo.MBuf{}
165         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
166         prefBytes := []byte(prefix)
167         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
168         handler.Handle(notificationRequest)
169         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
170 }
171
172 func TestE2SetupRequestNotificationHandler_HandleExistingGnbSuccess(t *testing.T) {
173         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
174         if err != nil {
175                 t.Fatal(err)
176         }
177         xmlGnb, err := ioutil.ReadFile(path)
178         if err != nil {
179                 t.Fatal(err)
180         }
181
182         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
183         var e2tInstance = &entities.E2TInstance{}
184         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
185         var gnb = &entities.NodebInfo{
186                 RanName: nodebRanName,
187                 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
188                 ConnectionStatus: entities.ConnectionStatus_CONNECTED,
189                 NodeType: entities.Node_GNB,
190                 Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}},
191         }
192         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
193         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
194         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
195         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
196         var errEmpty error
197         rmrMessage := &rmrCgo.MBuf{}
198         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
199         prefBytes := []byte(prefix)
200         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
201         handler.Handle(notificationRequest)
202         assertExistingNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
203 }
204
205 func TestE2SetupRequestNotificationHandler_HandleParseError(t *testing.T) {
206         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
207         if err != nil {
208                 t.Fatal(err)
209         }
210         xmlGnb, err := ioutil.ReadFile(path)
211         if err != nil {
212                 t.Fatal(err)
213         }
214
215         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
216         prefBytes := []byte("invalid_prefix")
217         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
218         handler.Handle(notificationRequest)
219         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
220         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
221         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
222         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
223         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
224         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
225 }
226
227 func TestE2SetupRequestNotificationHandler_HandleUnmarshalError(t *testing.T) {
228         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
229         prefBytes := []byte(prefix)
230         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, "xmlGnb"...)}
231         handler.Handle(notificationRequest)
232         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
233         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
234         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
235         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
236         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
237         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
238 }
239
240 func TestE2SetupRequestNotificationHandler_HandleGetE2TInstanceError(t *testing.T) {
241         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
242         if err != nil {
243                 t.Fatal(err)
244         }
245         xmlGnb, err := ioutil.ReadFile(path)
246         if err != nil {
247                 t.Fatal(err)
248         }
249
250         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
251         var e2tInstance * entities.E2TInstance
252         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, common.NewResourceNotFoundError("Not found"))
253         prefBytes := []byte(prefix)
254         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
255         handler.Handle(notificationRequest)
256         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
257         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
258         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
259         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
260         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
261         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
262         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
263 }
264
265 func TestE2SetupRequestNotificationHandler_HandleGetNodebError(t *testing.T) {
266         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
267         if err != nil {
268                 t.Fatal(err)
269         }
270         xmlGnb, err := ioutil.ReadFile(path)
271         if err != nil {
272                 t.Fatal(err)
273         }
274         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
275         var e2tInstance = &entities.E2TInstance{}
276         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
277         var gnb *entities.NodebInfo
278         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewInternalError(errors.New("some error")))
279         prefBytes := []byte(prefix)
280         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
281         handler.Handle(notificationRequest)
282         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
283         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
284         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
285         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
286         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
287         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
288         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
289 }
290
291 func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) {
292         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
293         if err != nil {
294                 t.Fatal(err)
295         }
296         xmlGnb, err := ioutil.ReadFile(path)
297         if err != nil {
298                 t.Fatal(err)
299         }
300
301         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
302         var e2tInstance = &entities.E2TInstance{}
303         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
304         var gnb *entities.NodebInfo
305         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
306         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
307         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
308         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
309         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error"))
310         var errEmpty error
311         rmrMessage := &rmrCgo.MBuf{}
312         rmrMessengerMock.On("WhSendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
313
314         prefBytes := []byte(prefix)
315         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
316         handler.Handle(notificationRequest)
317         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
318         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
319         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
320         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
321         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
322         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
323         rmrMessengerMock.AssertCalled(t, "WhSendMsg", mock.Anything, mock.Anything)
324 }
325
326
327 func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T){
328
329         path, err :=filepath.Abs("../../tests/resources/setupRequest_en-gNB.xml")
330         if err != nil {
331                 t.Fatal(err)
332         }
333         xmlEnGnb, err := ioutil.ReadFile(path)
334         if err != nil {
335                 t.Fatal(err)
336         }
337         logger := tests.InitLog(t)
338         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
339                 PlmnId      string
340                 RicNearRtId string
341         }{PlmnId : "131014", RicNearRtId: "10011001101010101011"}}
342         rmrMessengerMock := &mocks.RmrMessengerMock{}
343         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
344         readerMock := &mocks.RnibReaderMock{}
345         writerMock := &mocks.RnibWriterMock{}
346         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
347         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
348         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
349         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
350         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
351
352         var e2tInstance = &entities.E2TInstance{}
353         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
354         var gnb *entities.NodebInfo
355         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
356         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
357         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
358         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
359         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
360         var errEmpty error
361         rmrMessage := &rmrCgo.MBuf{}
362         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
363         prefBytes := []byte(prefix)
364         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
365         handler.Handle(notificationRequest)
366         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
367         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
368         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
369         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
370         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
371         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
372         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
373 }
374
375 func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) {
376         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
377         if err != nil {
378                 t.Fatal(err)
379         }
380         xmlGnb, err := ioutil.ReadFile(path)
381         if err != nil {
382                 t.Fatal(err)
383         }
384
385         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
386         var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN}
387         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
388         var e2tInstance = &entities.E2TInstance{}
389         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
390         prefBytes := []byte(prefix)
391         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
392         handler.Handle(notificationRequest)
393         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
394         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
395         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
396         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
397         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
398         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
399         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
400 }
401
402 func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) {
403         logger := tests.InitLog(t)
404         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
405                 PlmnId      string
406                 RicNearRtId string
407         }{PlmnId : "131014", RicNearRtId: "556670"}}
408         rmrMessengerMock := &mocks.RmrMessengerMock{}
409         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
410         readerMock := &mocks.RnibReaderMock{}
411         writerMock := &mocks.RnibWriterMock{}
412         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
413         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
414         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
415         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
416         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
417         return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock
418 }
419
420 func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
421         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
422         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
423         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
424         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
425         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
426         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
427         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
428 }
429
430 func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
431         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
432         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
433         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
434         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
435         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
436         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
437         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
438 }