22d8d45674969f2c91a3e0a63d36108d26081d29
[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         GnbSetupRequestXmlPath   = "../../tests/resources/setupRequest_gnb.xml"
45         EnGnbSetupRequestXmlPath = "../../tests/resources/setupRequest_en-gNB.xml"
46         NgEnbSetupRequestXmlPath = "../../tests/resources/setupRequest_ng-eNB.xml"
47         EnbSetupRequestXmlPath   = "../../tests/resources/setupRequest_enb.xml"
48 )
49
50 func readXmlFile(t *testing.T, xmlPath string) []byte {
51         path, err := filepath.Abs(xmlPath)
52         if err != nil {
53                 t.Fatal(err)
54         }
55         xmlAsBytes, err := ioutil.ReadFile(path)
56         if err != nil {
57                 t.Fatal(err)
58         }
59
60         return xmlAsBytes
61 }
62
63 func TestParseGnbSetupRequest_Success(t *testing.T) {
64         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
65         handler, _, _, _, _, _ := initMocks(t)
66         prefBytes := []byte(prefix)
67         request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
68         assert.Equal(t, "131014", request.GetPlmnId())
69         assert.Equal(t, "10011001101010101011", request.GetNbId())
70         assert.Nil(t, err)
71 }
72
73 func TestParseEnGnbSetupRequest_Success(t *testing.T) {
74         enGnbXml := readXmlFile(t, EnGnbSetupRequestXmlPath)
75         handler, _, _, _, _, _ := initMocks(t)
76         prefBytes := []byte(prefix)
77         request, _, err := handler.parseSetupRequest(append(prefBytes, enGnbXml...))
78         assert.Equal(t, "131014", request.GetPlmnId())
79         assert.Equal(t, "11000101110001101100011111111000", request.GetNbId())
80         assert.Nil(t, err)
81 }
82
83 func TestParseNgEnbSetupRequest_Success(t *testing.T) {
84         ngEnbXml := readXmlFile(t, NgEnbSetupRequestXmlPath)
85         handler, _, _, _, _, _ := initMocks(t)
86         prefBytes := []byte(prefix)
87         request, _, err := handler.parseSetupRequest(append(prefBytes, ngEnbXml...))
88         assert.Equal(t, "131014", request.GetPlmnId())
89         assert.Equal(t, "101010101010101010", request.GetNbId())
90         assert.Nil(t, err)
91 }
92
93 func TestParseEnbSetupRequest_Success(t *testing.T) {
94         enbXml := readXmlFile(t, EnbSetupRequestXmlPath)
95         handler, _, _, _, _, _ := initMocks(t)
96         prefBytes := []byte(prefix)
97         request, _, err := handler.parseSetupRequest(append(prefBytes, enbXml...))
98         assert.Equal(t, "6359AB", request.GetPlmnId())
99         assert.Equal(t, "101010101010101010", request.GetNbId())
100         assert.Nil(t, err)
101 }
102
103 func TestParseSetupRequest_PipFailure(t *testing.T) {
104         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
105         handler, _, _, _, _, _ := initMocks(t)
106         prefBytes := []byte("10.0.2.15:9999")
107         request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...))
108         assert.Nil(t, request)
109         assert.NotNil(t, err)
110         assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error parsing E2 Setup Request failed extract Payload: no | separator found")
111 }
112
113 func TestParseSetupRequest_UnmarshalFailure(t *testing.T) {
114         handler, _, _, _, _, _ := initMocks(t)
115         prefBytes := []byte(prefix)
116         request, _, err := handler.parseSetupRequest(append(prefBytes, 1, 2, 3))
117         assert.Nil(t, request)
118         assert.NotNil(t, err)
119         assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error unmarshalling E2 Setup Request payload: 31302e302e322e31353a393939397c010203")
120 }
121
122 func TestE2SetupRequestNotificationHandler_HandleNewGnbSuccess(t *testing.T) {
123         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
124         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
125         var e2tInstance = &entities.E2TInstance{}
126         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
127         var gnb *entities.NodebInfo
128         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
129         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
130         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
131         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
132         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
133         var errEmpty error
134         rmrMessage := &rmrCgo.MBuf{}
135         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
136         prefBytes := []byte(prefix)
137         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
138         handler.Handle(notificationRequest)
139         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
140 }
141
142 func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) {
143         xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
144         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
145         var e2tInstance = &entities.E2TInstance{}
146         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
147         var gnb *entities.NodebInfo
148         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
149         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
150         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
151         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
152         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
153         var errEmpty error
154         rmrMessage := &rmrCgo.MBuf{}
155         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
156         prefBytes := []byte(prefix)
157         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
158         handler.Handle(notificationRequest)
159         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
160 }
161
162 func TestE2SetupRequestNotificationHandler_HandleNewNgEnbSuccess(t *testing.T) {
163         xmlNgEnb := readXmlFile(t, NgEnbSetupRequestXmlPath)
164         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
165         var e2tInstance = &entities.E2TInstance{}
166         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
167         var gnb *entities.NodebInfo
168         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
169         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
170         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
171         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
172         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
173         var errEmpty error
174         rmrMessage := &rmrCgo.MBuf{}
175         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
176         prefBytes := []byte(prefix)
177         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlNgEnb...)}
178         handler.Handle(notificationRequest)
179         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
180 }
181
182 func TestE2SetupRequestNotificationHandler_HandleExistingGnbSuccess(t *testing.T) {
183         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
184
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                 RanName:                      nodebRanName,
190                 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
191                 ConnectionStatus:             entities.ConnectionStatus_CONNECTED,
192                 NodeType:                     entities.Node_GNB,
193                 Configuration:                &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}},
194         }
195         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
196         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
197         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
198         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
199         var errEmpty error
200         rmrMessage := &rmrCgo.MBuf{}
201         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
202         prefBytes := []byte(prefix)
203         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
204         handler.Handle(notificationRequest)
205         assertExistingNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
206 }
207
208 func TestE2SetupRequestNotificationHandler_HandleParseError(t *testing.T) {
209         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
210
211         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
212         prefBytes := []byte("invalid_prefix")
213         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
214         handler.Handle(notificationRequest)
215         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
216         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
217         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
218         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
219         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
220         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
221 }
222
223 func TestE2SetupRequestNotificationHandler_HandleUnmarshalError(t *testing.T) {
224         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
225         prefBytes := []byte(prefix)
226         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, "xmlGnb"...)}
227         handler.Handle(notificationRequest)
228         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
229         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
230         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
231         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
232         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
233         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
234 }
235
236 func TestE2SetupRequestNotificationHandler_HandleGetE2TInstanceError(t *testing.T) {
237         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
238         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
239         var e2tInstance *entities.E2TInstance
240         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, common.NewResourceNotFoundError("Not found"))
241         prefBytes := []byte(prefix)
242         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
243         handler.Handle(notificationRequest)
244         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
245         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
246         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
247         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
248         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
249         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
250         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
251 }
252
253 func TestE2SetupRequestNotificationHandler_HandleGetNodebError(t *testing.T) {
254         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
255
256         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
257         var e2tInstance = &entities.E2TInstance{}
258         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
259         var gnb *entities.NodebInfo
260         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewInternalError(errors.New("some error")))
261         prefBytes := []byte(prefix)
262         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
263         handler.Handle(notificationRequest)
264         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
265         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
266         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
267         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
268         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
269         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
270         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
271 }
272
273 func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) {
274         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
275
276         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
277         var e2tInstance = &entities.E2TInstance{}
278         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
279         var gnb *entities.NodebInfo
280         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
281         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
282         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
283         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
284         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error"))
285         var errEmpty error
286         rmrMessage := &rmrCgo.MBuf{}
287         rmrMessengerMock.On("WhSendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
288
289         prefBytes := []byte(prefix)
290         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
291         handler.Handle(notificationRequest)
292         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
293         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
294         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
295         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
296         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
297         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
298         rmrMessengerMock.AssertCalled(t, "WhSendMsg", mock.Anything, mock.Anything)
299 }
300
301 func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T) {
302         xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
303         logger := tests.InitLog(t)
304         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
305                 PlmnId      string
306                 RicNearRtId string
307         }{PlmnId: "131014", RicNearRtId: "10011001101010101011"}}
308         rmrMessengerMock := &mocks.RmrMessengerMock{}
309         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
310         readerMock := &mocks.RnibReaderMock{}
311         writerMock := &mocks.RnibWriterMock{}
312         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
313         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
314         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
315         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
316         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
317
318         var e2tInstance = &entities.E2TInstance{}
319         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
320         var gnb *entities.NodebInfo
321         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
322         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
323         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
324         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
325         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
326         var errEmpty error
327         rmrMessage := &rmrCgo.MBuf{}
328         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
329         prefBytes := []byte(prefix)
330         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
331         handler.Handle(notificationRequest)
332         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
333         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
334         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
335         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
336         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
337         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
338         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
339 }
340
341 func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) {
342         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
343         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
344         var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}
345         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
346         var e2tInstance = &entities.E2TInstance{}
347         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
348         prefBytes := []byte(prefix)
349         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
350         handler.Handle(notificationRequest)
351         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
352         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
353         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
354         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
355         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
356         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
357         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
358 }
359
360 func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) {
361         logger := tests.InitLog(t)
362         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
363                 PlmnId      string
364                 RicNearRtId string
365         }{PlmnId: "131014", RicNearRtId: "556670"}}
366         rmrMessengerMock := &mocks.RmrMessengerMock{}
367         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
368         readerMock := &mocks.RnibReaderMock{}
369         writerMock := &mocks.RnibWriterMock{}
370         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
371         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
372         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
373         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
374         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
375         return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock
376 }
377
378 func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
379         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
380         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
381         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
382         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
383         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
384         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
385         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
386 }
387
388 func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
389         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
390         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
391         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
392         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
393         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
394         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
395         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
396 }