[RICPLT-2523] Update setup flow | Add UTs..........
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / setup_request_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 package httpmsghandlers
18
19 import (
20         "e2mgr/configuration"
21         "e2mgr/e2managererrors"
22         "e2mgr/mocks"
23         "e2mgr/models"
24         "e2mgr/services"
25         "fmt"
26         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
27         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
28         "github.com/stretchr/testify/assert"
29         "testing"
30 )
31
32 const E2TAddress = "10.0.2.15:8989"
33 const RanName = "test"
34
35 func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.E2TInstancesManagerMock, *mocks.RanSetupManagerMock) {
36         log := initLog(t)
37         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
38
39         readerMock := &mocks.RnibReaderMock{}
40         writerMock := &mocks.RnibWriterMock{}
41
42         rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
43
44         ranSetupManagerMock := &mocks.RanSetupManagerMock{}
45         e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
46         handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManagerMock, protocol, e2tInstancesManagerMock)
47
48         return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock
49 }
50
51 func TestX2SetupHandleNoPortError(t *testing.T) {
52         readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
53
54         sr := models.SetupRequest{"127.0.0.1", 0, RanName,}
55         _, err := handler.Handle(sr)
56         assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
57         readerMock.AssertNotCalled(t, "GetNodeb")
58 }
59
60 func TestX2SetupHandleNoRanNameError(t *testing.T) {
61         readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
62
63         sr := models.SetupRequest{RanPort: 8080, RanIp: "127.0.0.1"}
64         _, err := handler.Handle(sr)
65         assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
66         readerMock.AssertNotCalled(t, "GetNodeb")
67 }
68
69 func TestX2SetupHandleNoIpError(t *testing.T) {
70         readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
71
72         sr := models.SetupRequest{RanPort: 8080, RanName: RanName}
73         _, err := handler.Handle(sr)
74         assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
75         readerMock.AssertNotCalled(t, "GetNodeb")
76 }
77
78 func TestX2SetupHandleInvalidIpError(t *testing.T) {
79         readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
80
81         sr := models.SetupRequest{RanPort: 8080, RanName: RanName, RanIp: "invalid ip"}
82         _, err := handler.Handle(sr)
83         assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
84         readerMock.AssertNotCalled(t, "GetNodeb")
85 }
86
87 func TestX2SetupHandleGetNodebFailure(t *testing.T) {
88         readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
89
90         rnibErr := &common.ValidationError{}
91         nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
92         readerMock.On("GetNodeb", RanName).Return(nb, rnibErr)
93
94         sr := models.SetupRequest{"127.0.0.1", 8080, RanName,}
95         _, err := handler.Handle(sr)
96         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
97 }
98
99 func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) {
100         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
101         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
102         e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
103         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
104         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
105         e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
106         writerMock.AssertNotCalled(t, "SaveNodeb")
107         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
108 }
109
110 func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) {
111         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
112         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
113         e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
114         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
115         assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
116         e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
117         writerMock.AssertNotCalled(t, "SaveNodeb")
118         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
119 }
120
121 func TestSetupNewRanAssociateRanFailure(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(E2TAddress, nil)
125         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
126         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
127         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
128         writerMock.AssertNotCalled(t, "SaveNodeb")
129         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
130 }
131
132 func TestSetupNewRanSaveNodebFailure(t *testing.T) {
133         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
134         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
135         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
136         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
137         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
138         nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
139         writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf("")))
140         _, err := handler.Handle(setupRequest)
141         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
142         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
143 }
144
145 func TestSetupNewRanSetupDbError(t *testing.T) {
146         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
147         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
148         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
149         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
150         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
151         nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
152         writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
153         ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
154         _, err := handler.Handle(setupRequest)
155         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
156 }
157
158 func TestSetupNewRanSetupRmrError(t *testing.T) {
159         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
160         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
161         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
162         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
163         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
164         nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
165         writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
166         ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError())
167         _, err := handler.Handle(setupRequest)
168         assert.IsType(t, &e2managererrors.RmrError{}, err)
169 }
170
171 func TestSetupNewRanSetupSuccess(t *testing.T) {
172         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
173         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
174         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
175         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
176         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
177         nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
178         writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
179         ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil)
180         _, err := handler.Handle(setupRequest)
181         assert.Nil(t, err)
182 }
183
184 func TestX2SetupExistingRanShuttingDown(t *testing.T) {
185         readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
186         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
187         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
188         _, err := handler.Handle(setupRequest)
189         assert.IsType(t, &e2managererrors.WrongStateError{}, err)
190         e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
191         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
192 }
193
194 func TestEndcSetupExistingRanShuttingDown(t *testing.T) {
195         readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
196         readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
197         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
198         _, err := handler.Handle(setupRequest)
199         assert.IsType(t, &e2managererrors.WrongStateError{}, err)
200         e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
201         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
202 }
203
204 func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) {
205         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
206         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
207         readerMock.On("GetNodeb", RanName).Return(nb , nil)
208         e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
209         updatedNb := *nb
210         updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
211         writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
212         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
213         _, err := handler.Handle(setupRequest)
214         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
215         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
216 }
217
218 func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) {
219         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
220         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
221         readerMock.On("GetNodeb", RanName).Return(nb , nil)
222         e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
223         updatedNb := *nb
224         updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
225         writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
226         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
227         _, err := handler.Handle(setupRequest)
228         assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
229         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
230 }
231
232 func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailure(t *testing.T) {
233         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
234         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
235         readerMock.On("GetNodeb", RanName).Return(nb , nil)
236         e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
237         updatedNb := *nb
238         updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
239         writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
240         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
241         _, err := handler.Handle(setupRequest)
242         assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
243         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
244 }
245
246 func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorDisconnected(t *testing.T) {
247         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
248         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:"", ConnectionStatus:entities.ConnectionStatus_DISCONNECTED}
249         readerMock.On("GetNodeb", RanName).Return(nb , nil)
250         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, e2managererrors.NewE2TInstanceAbsenceError())
251         setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
252         _, err := handler.Handle(setupRequest)
253         assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
254         writerMock.AssertNotCalled(t, "UpdateNodebInfo")
255         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
256 }
257
258 func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T) {
259         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
260         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
261         readerMock.On("GetNodeb", RanName).Return(nb , nil)
262         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
263         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
264         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
265         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
266         writerMock.AssertNotCalled(t, "UpdateNodebInfo")
267         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
268 }
269
270 func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebFails(t *testing.T) {
271         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
272         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
273         readerMock.On("GetNodeb", RanName).Return(nb , nil)
274         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
275         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
276         updatedNb := *nb
277         updatedNb.AssociatedE2TInstanceAddress = E2TAddress
278         updatedNb.ConnectionAttempts = 0
279         writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
280         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
281         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
282         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
283 }
284
285 func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T) {
286         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
287         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
288         readerMock.On("GetNodeb", RanName).Return(nb , nil)
289         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
290         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
291         updatedNb := *nb
292         updatedNb.AssociatedE2TInstanceAddress = E2TAddress
293         updatedNb.ConnectionAttempts = 0
294         writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
295         ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
296         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
297         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
298 }
299
300 func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) {
301         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
302         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
303         readerMock.On("GetNodeb", RanName).Return(nb , nil)
304         e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
305         e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
306         updatedNb := *nb
307         updatedNb.AssociatedE2TInstanceAddress = E2TAddress
308         updatedNb.ConnectionAttempts = 0
309         writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
310         ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil)
311         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
312         assert.Nil(t, err)
313 }
314
315 func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) {
316         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
317         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress}
318         readerMock.On("GetNodeb", RanName).Return(nb , nil)
319         updatedNb := *nb
320         updatedNb.ConnectionAttempts = 0
321         writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
322         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
323         assert.IsType(t, &e2managererrors.RnibDbError{}, err)
324         e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
325         e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
326         ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
327 }
328
329 func TestSetupExistingConnectedRanWithAssocE2TInstanceSuccess(t *testing.T) {
330         readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
331         nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED}
332         readerMock.On("GetNodeb", RanName).Return(nb , nil)
333         updatedNb := *nb
334         updatedNb.ConnectionAttempts = 0
335         writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
336         ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(nil)
337         _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
338         assert.Nil(t, err)
339         e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
340         e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
341 }