RIC-193 - Setup from RAN: set connection status to CONNECTED in case RM 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         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error"))
309
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.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
320 }
321
322
323 func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T){
324
325         path, err :=filepath.Abs("../../tests/resources/setupRequest_en-gNB.xml")
326         if err != nil {
327                 t.Fatal(err)
328         }
329         xmlEnGnb, err := ioutil.ReadFile(path)
330         if err != nil {
331                 t.Fatal(err)
332         }
333         logger := tests.InitLog(t)
334         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
335                 PlmnId      string
336                 RicNearRtId string
337         }{PlmnId : "131014", RicNearRtId: "10011001101010101011"}}
338         rmrMessengerMock := &mocks.RmrMessengerMock{}
339         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
340         readerMock := &mocks.RnibReaderMock{}
341         writerMock := &mocks.RnibWriterMock{}
342         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
343         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
344         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
345         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
346         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
347
348         var e2tInstance = &entities.E2TInstance{}
349         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
350         var gnb *entities.NodebInfo
351         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
352         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
353         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
354         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
355         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
356         var errEmpty error
357         rmrMessage := &rmrCgo.MBuf{}
358         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
359         prefBytes := []byte(prefix)
360         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
361         handler.Handle(notificationRequest)
362         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
363         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
364         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
365         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
366         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
367         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
368         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
369 }
370
371 func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) {
372         path, err :=filepath.Abs("../../tests/resources/setupRequest_gnb.xml")
373         if err != nil {
374                 t.Fatal(err)
375         }
376         xmlGnb, err := ioutil.ReadFile(path)
377         if err != nil {
378                 t.Fatal(err)
379         }
380
381         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
382         var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN}
383         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
384         var e2tInstance = &entities.E2TInstance{}
385         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
386         prefBytes := []byte(prefix)
387         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
388         handler.Handle(notificationRequest)
389         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
390         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
391         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
392         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
393         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
394         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
395         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
396 }
397
398 func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) {
399         logger := tests.InitLog(t)
400         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
401                 PlmnId      string
402                 RicNearRtId string
403         }{PlmnId : "131014", RicNearRtId: "556670"}}
404         rmrMessengerMock := &mocks.RmrMessengerMock{}
405         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
406         readerMock := &mocks.RnibReaderMock{}
407         writerMock := &mocks.RnibWriterMock{}
408         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
409         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
410         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
411         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
412         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
413         return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock
414 }
415
416 func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
417         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
418         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
419         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
420         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
421         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
422         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
423         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
424 }
425
426 func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
427         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
428         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
429         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
430         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
431         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
432         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
433         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
434 }