9d45c16c1c6555cd138f10f4e997f5289691e0cd
[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, "02F829", request.GetPlmnId())
69         assert.Equal(t, "001100000011000000110000", 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         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append([]byte(prefix), xmlGnb...)}
130         setupRequest, e2tIpAddress, _ := handler.parseSetupRequest(notificationRequest.Payload)
131         nodebInfo, _ := handler.buildNodebInfo(nodebRanName, e2tIpAddress, setupRequest)
132         writerMock.On("SaveNodeb", mock.Anything, nodebInfo).Return(nil)
133         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
134         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
135         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
136         var errEmpty error
137         rmrMessage := &rmrCgo.MBuf{}
138         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
139         handler.Handle(notificationRequest)
140         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
141         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
142 }
143
144 func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) {
145         xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
146         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
147         var e2tInstance = &entities.E2TInstance{}
148         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
149         var gnb *entities.NodebInfo
150         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
151         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
152         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
153         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
154         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
155         var errEmpty error
156         rmrMessage := &rmrCgo.MBuf{}
157         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
158         prefBytes := []byte(prefix)
159         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
160         handler.Handle(notificationRequest)
161         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
162 }
163
164 func TestE2SetupRequestNotificationHandler_HandleNewNgEnbSuccess(t *testing.T) {
165         xmlNgEnb := readXmlFile(t, NgEnbSetupRequestXmlPath)
166         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
167         var e2tInstance = &entities.E2TInstance{}
168         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
169         var gnb *entities.NodebInfo
170         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
171         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
172         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
173         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
174         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
175         var errEmpty error
176         rmrMessage := &rmrCgo.MBuf{}
177         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
178         prefBytes := []byte(prefix)
179         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlNgEnb...)}
180         handler.Handle(notificationRequest)
181         assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
182 }
183
184 func TestE2SetupRequestNotificationHandler_HandleExistingGnbSuccess(t *testing.T) {
185         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
186
187         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
188         var e2tInstance = &entities.E2TInstance{}
189         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
190         var gnb = &entities.NodebInfo{
191                 RanName:                      nodebRanName,
192                 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,
193                 ConnectionStatus:             entities.ConnectionStatus_CONNECTED,
194                 NodeType:                     entities.Node_GNB,
195                 Configuration:                &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}},
196         }
197         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
198         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
199
200         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append([]byte(prefix), xmlGnb...)}
201         setupRequest, _, _ := handler.parseSetupRequest(notificationRequest.Payload)
202         _ = handler.setGnbFunctions(gnb, setupRequest)
203
204         writerMock.On("UpdateNodebInfo", gnb).Return(nil)
205         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
206         var errEmpty error
207         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(&rmrCgo.MBuf{}, errEmpty)
208         handler.Handle(notificationRequest)
209         writerMock.AssertCalled(t, "UpdateNodebInfo", gnb)
210         assertExistingNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock)
211 }
212
213 func TestE2SetupRequestNotificationHandler_HandleParseError(t *testing.T) {
214         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
215
216         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
217         prefBytes := []byte("invalid_prefix")
218         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
219         handler.Handle(notificationRequest)
220         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
221         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
222         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
223         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
224         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
225         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
226 }
227
228 func TestE2SetupRequestNotificationHandler_HandleUnmarshalError(t *testing.T) {
229         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
230         prefBytes := []byte(prefix)
231         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, "xmlGnb"...)}
232         handler.Handle(notificationRequest)
233         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
234         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
235         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
236         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
237         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
238         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
239 }
240
241 func TestE2SetupRequestNotificationHandler_HandleGetE2TInstanceError(t *testing.T) {
242         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
243         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
244         var e2tInstance *entities.E2TInstance
245         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, common.NewResourceNotFoundError("Not found"))
246         prefBytes := []byte(prefix)
247         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
248         handler.Handle(notificationRequest)
249         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
250         readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything)
251         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
252         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
253         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
254         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
255         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
256 }
257
258 func TestE2SetupRequestNotificationHandler_HandleGetNodebError(t *testing.T) {
259         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
260
261         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
262         var e2tInstance = &entities.E2TInstance{}
263         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
264         var gnb *entities.NodebInfo
265         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewInternalError(errors.New("some error")))
266         prefBytes := []byte(prefix)
267         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
268         handler.Handle(notificationRequest)
269         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
270         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
271         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
272         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
273         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
274         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
275         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
276 }
277
278 func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) {
279         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
280
281         handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
282         var e2tInstance = &entities.E2TInstance{}
283         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
284         var gnb *entities.NodebInfo
285         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
286         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
287         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
288         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
289         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error"))
290         var errEmpty error
291         rmrMessage := &rmrCgo.MBuf{}
292         rmrMessengerMock.On("WhSendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
293
294         prefBytes := []byte(prefix)
295         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
296         handler.Handle(notificationRequest)
297         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
298         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
299         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
300         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
301         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
302         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
303         rmrMessengerMock.AssertCalled(t, "WhSendMsg", mock.Anything, mock.Anything)
304 }
305
306 func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T) {
307         xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath)
308         logger := tests.InitLog(t)
309         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
310                 PlmnId      string
311                 RicNearRtId string
312         }{PlmnId: "131014", RicNearRtId: "10011001101010101011"}}
313         rmrMessengerMock := &mocks.RmrMessengerMock{}
314         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
315         readerMock := &mocks.RnibReaderMock{}
316         writerMock := &mocks.RnibWriterMock{}
317         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
318         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
319         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
320         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
321         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
322
323         var e2tInstance = &entities.E2TInstance{}
324         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
325         var gnb *entities.NodebInfo
326         readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found"))
327         writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
328         routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil)
329         writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil)
330         e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil)
331         var errEmpty error
332         rmrMessage := &rmrCgo.MBuf{}
333         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)
334         prefBytes := []byte(prefix)
335         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)}
336         handler.Handle(notificationRequest)
337         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
338         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
339         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
340         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
341         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
342         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
343         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
344 }
345
346 func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) {
347         xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
348         handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t)
349         var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}
350         readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil)
351         var e2tInstance = &entities.E2TInstance{}
352         e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil)
353         prefBytes := []byte(prefix)
354         notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)}
355         handler.Handle(notificationRequest)
356         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
357         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
358         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
359         routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
360         writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything)
361         e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
362         rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything)
363 }
364
365 func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) {
366         logger := tests.InitLog(t)
367         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct {
368                 PlmnId      string
369                 RicNearRtId string
370         }{PlmnId: "131014", RicNearRtId: "556670"}}
371         rmrMessengerMock := &mocks.RmrMessengerMock{}
372         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)
373         readerMock := &mocks.RnibReaderMock{}
374         writerMock := &mocks.RnibWriterMock{}
375         routingManagerClientMock := &mocks.RoutingManagerClientMock{}
376         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
377         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
378         e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock)
379         handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager)
380         return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock
381 }
382
383 func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
384         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
385         writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
386         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
387         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
388         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
389         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
390         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
391 }
392
393 func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) {
394         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)
395         writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything)
396         e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress)
397         routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything)
398         writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything)
399         e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything)
400         rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything)
401 }