2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 package httpmsghandlers
21 "e2mgr/e2managererrors"
29 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
30 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
31 "github.com/stretchr/testify/assert"
32 "github.com/stretchr/testify/mock"
36 const E2TAddress = "10.0.2.15:8989"
37 const RanName = "test"
39 func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.E2TInstancesManagerMock, *mocks.RanSetupManagerMock) {
41 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
43 readerMock := &mocks.RnibReaderMock{}
44 writerMock := &mocks.RnibWriterMock{}
46 rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
48 ranSetupManagerMock := &mocks.RanSetupManagerMock{}
49 e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
50 handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManagerMock, protocol, e2tInstancesManagerMock)
52 return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock
55 func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock) {
57 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
59 readerMock := &mocks.RnibReaderMock{}
60 writerMock := &mocks.RnibWriterMock{}
62 rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
64 rmrMessengerMock := &mocks.RmrMessengerMock{}
65 rmrSender := getRmrSender(rmrMessengerMock, log)
66 ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService)
67 e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log)
68 handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManager)
70 return readerMock, writerMock, handler, rmrMessengerMock
73 func TestX2SetupHandleNoPortError(t *testing.T) {
74 readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
76 sr := models.SetupRequest{"127.0.0.1", 0, RanName,}
77 _, err := handler.Handle(sr)
78 assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
79 readerMock.AssertNotCalled(t, "GetNodeb")
82 func TestX2SetupHandleNoRanNameError(t *testing.T) {
83 readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
85 sr := models.SetupRequest{RanPort: 8080, RanIp: "127.0.0.1"}
86 _, err := handler.Handle(sr)
87 assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
88 readerMock.AssertNotCalled(t, "GetNodeb")
91 func TestX2SetupHandleNoIpError(t *testing.T) {
92 readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
94 sr := models.SetupRequest{RanPort: 8080, RanName: RanName}
95 _, err := handler.Handle(sr)
96 assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
97 readerMock.AssertNotCalled(t, "GetNodeb")
100 func TestX2SetupHandleInvalidIpError(t *testing.T) {
101 readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
103 sr := models.SetupRequest{RanPort: 8080, RanName: RanName, RanIp: "invalid ip"}
104 _, err := handler.Handle(sr)
105 assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
106 readerMock.AssertNotCalled(t, "GetNodeb")
109 func TestSetupGetNodebFailure(t *testing.T) {
110 readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
112 rnibErr := &common.ValidationError{}
113 nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
114 readerMock.On("GetNodeb", RanName).Return(nb, rnibErr)
116 sr := models.SetupRequest{"127.0.0.1", 8080, RanName,}
117 _, err := handler.Handle(sr)
118 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
121 func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) {
122 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
123 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
124 e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
125 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
126 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
127 e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
128 writerMock.AssertNotCalled(t, "SaveNodeb")
129 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
132 func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) {
133 readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
134 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
135 readerMock.On("GetE2TAddresses").Return([]string{}, nil)
136 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
137 assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
138 writerMock.AssertNotCalled(t, "SaveNodeb")
139 rmrMessengerMock.AssertNotCalled(t, "SendMsg")
142 func TestSetupNewRanAssociateRanFailure(t *testing.T) {
143 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
144 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
145 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
146 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
147 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
148 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
149 writerMock.AssertNotCalled(t, "SaveNodeb")
150 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
153 func TestSetupNewRanSaveNodebFailure(t *testing.T) {
154 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
155 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
156 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
157 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
158 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
159 nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
160 writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf("")))
161 _, err := handler.Handle(setupRequest)
162 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
163 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
166 func TestSetupNewRanSetupDbError(t *testing.T) {
167 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
168 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
169 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
170 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
171 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
172 nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
173 writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
174 ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
175 _, err := handler.Handle(setupRequest)
176 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
179 func TestSetupNewRanSetupRmrError(t *testing.T) {
180 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
181 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
182 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
183 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
184 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
185 nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
186 writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
187 ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError())
188 _, err := handler.Handle(setupRequest)
189 assert.IsType(t, &e2managererrors.RmrError{}, err)
192 func TestSetupNewRanSetupSuccess(t *testing.T) {
193 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
194 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
195 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
196 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
197 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
198 nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
199 writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
200 ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil)
201 _, err := handler.Handle(setupRequest)
205 func TestX2SetupExistingRanShuttingDown(t *testing.T) {
206 readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
207 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
208 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
209 _, err := handler.Handle(setupRequest)
210 assert.IsType(t, &e2managererrors.WrongStateError{}, err)
211 e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
212 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
215 func TestEndcSetupExistingRanShuttingDown(t *testing.T) {
216 readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
217 readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
218 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
219 _, err := handler.Handle(setupRequest)
220 assert.IsType(t, &e2managererrors.WrongStateError{}, err)
221 e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
222 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
225 func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) {
226 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
227 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
228 readerMock.On("GetNodeb", RanName).Return(nb, nil)
229 e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
231 updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
232 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
233 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
234 _, err := handler.Handle(setupRequest)
235 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
236 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
239 func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) {
240 readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
241 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
242 readerMock.On("GetNodeb", RanName).Return(nb, nil)
243 readerMock.On("GetE2TAddresses").Return([]string{}, nil)
245 updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
246 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
247 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
248 _, err := handler.Handle(setupRequest)
249 assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
250 rmrMessengerMock.AssertNotCalled(t, "SendMsg")
251 writerMock.AssertExpectations(t)
254 func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailure(t *testing.T) {
255 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
256 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
257 readerMock.On("GetNodeb", RanName).Return(nb, nil)
258 e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
260 updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
261 writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
262 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
263 _, err := handler.Handle(setupRequest)
264 assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
265 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
268 func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(t *testing.T) {
269 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
270 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}
271 readerMock.On("GetNodeb", RanName).Return(nb, nil)
272 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, e2managererrors.NewE2TInstanceAbsenceError())
273 setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
274 _, err := handler.Handle(setupRequest)
275 assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
276 writerMock.AssertNotCalled(t, "UpdateNodebInfo")
277 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
280 func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T) {
281 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
282 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
283 readerMock.On("GetNodeb", RanName).Return(nb, nil)
284 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
285 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
286 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
287 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
288 writerMock.AssertNotCalled(t, "UpdateNodebInfo")
289 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
292 func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebFails(t *testing.T) {
293 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
294 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
295 readerMock.On("GetNodeb", RanName).Return(nb, nil)
296 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
297 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
299 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
300 updatedNb.ConnectionAttempts = 0
301 writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
302 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
303 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
304 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
307 func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T) {
308 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
309 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
310 readerMock.On("GetNodeb", RanName).Return(nb, nil)
311 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
312 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
314 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
315 updatedNb.ConnectionAttempts = 0
316 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
317 ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
318 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
319 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
322 func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) {
323 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
324 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
325 readerMock.On("GetNodeb", RanName).Return(nb, nil)
326 e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
327 e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
329 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
330 updatedNb.ConnectionAttempts = 0
331 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
332 ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil)
333 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
337 func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) {
338 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
339 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
340 readerMock.On("GetNodeb", RanName).Return(nb, nil)
342 updatedNb.ConnectionAttempts = 0
343 writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
344 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
345 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
346 e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
347 e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
348 ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
351 func TestSetupExistingRanWithAssocE2TInstanceExecuteSetupRmrError(t *testing.T) {
352 readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
353 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
354 readerMock.On("GetNodeb", RanName).Return(nb, nil)
356 updatedNb.ConnectionAttempts = 0
357 updatedNb2 := updatedNb
358 updatedNb2.ConnectionAttempts++
359 updatedNb3 := updatedNb2
360 updatedNb3.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
361 updatedNb3.ConnectionAttempts--
362 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
363 writerMock.On("UpdateNodebInfo", &updatedNb2).Return(nil)
364 payload := e2pdus.PackedX2setupRequest
365 xaction := []byte(RanName)
366 msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), RanName, &payload, &xaction)
367 rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, e2managererrors.NewRmrError())
368 writerMock.On("UpdateNodebInfo", &updatedNb3).Return(nil)
369 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
370 assert.IsType(t, &e2managererrors.RmrError{}, err)
371 writerMock.AssertExpectations(t)
374 func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) {
375 readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
376 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED}
377 readerMock.On("GetNodeb", RanName).Return(nb, nil)
379 updatedNb.ConnectionAttempts = 0
380 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
381 ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(nil)
382 _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
384 e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
385 e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")