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 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
24 "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/pkg/errors"
32 "github.com/stretchr/testify/assert"
33 "github.com/stretchr/testify/mock"
37 const E2TAddress = "10.10.2.15:9800"
38 const E2TAddress2 = "10.10.2.16:9800"
39 const PodName = "som_ pod_name"
41 func initE2TInstancesManagerTest(t *testing.T) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *E2TInstancesManager) {
42 logger, err := logger.InitLogger(logger.DebugLevel)
44 t.Errorf("#... - failed to initialize logger, error: %s", err)
46 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
48 readerMock := &mocks.RnibReaderMock{}
49 writerMock := &mocks.RnibWriterMock{}
50 rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
51 e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger)
52 return readerMock, writerMock, e2tInstancesManager
55 func TestAddNewE2TInstanceSaveE2TInstanceFailure(t *testing.T) {
56 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
57 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
58 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
60 rnibReaderMock.AssertNotCalled(t, "GetE2TAddresses")
63 func TestAddNewE2TInstanceGetE2TAddressesInternalFailure(t *testing.T) {
64 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
65 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
66 e2tAddresses := []string{}
67 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewInternalError(errors.New("Error")))
68 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
70 rnibReaderMock.AssertNotCalled(t, "SaveE2TAddresses")
73 func TestAddNewE2TInstanceSaveE2TAddressesFailure(t *testing.T) {
74 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
75 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
76 E2TAddresses := []string{}
77 rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
78 E2TAddresses = append(E2TAddresses, E2TAddress)
79 rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(common.NewResourceNotFoundError(""))
80 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
84 func TestAddNewE2TInstanceNoE2TAddressesSuccess(t *testing.T) {
85 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
86 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
87 e2tAddresses := []string{}
88 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewResourceNotFoundError(""))
89 e2tAddresses = append(e2tAddresses, E2TAddress)
90 rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil)
91 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
93 rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses)
96 func TestAddNewE2TInstanceEmptyE2TAddressesSuccess(t *testing.T) {
97 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
98 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
99 e2tAddresses := []string{}
100 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
101 e2tAddresses = append(e2tAddresses, E2TAddress)
102 rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil)
103 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
105 rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses)
108 func TestAddNewE2TInstanceExistingE2TAddressesSuccess(t *testing.T) {
109 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
110 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
111 E2TAddresses := []string{"10.0.1.15:3030"}
112 rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
113 E2TAddresses = append(E2TAddresses, E2TAddress)
114 rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(nil)
115 err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
119 func TestGetE2TInstanceFailure(t *testing.T) {
120 rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
121 var e2tInstance *entities.E2TInstance
122 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("for test")))
123 res, err := e2tInstancesManager.GetE2TInstance(E2TAddress)
124 assert.NotNil(t, err)
128 func TestGetE2TInstanceSuccess(t *testing.T) {
129 rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
130 address := "10.10.2.15:9800"
131 e2tInstance := entities.NewE2TInstance(address, PodName)
132 rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
133 res, err := e2tInstancesManager.GetE2TInstance(address)
135 assert.Equal(t, e2tInstance, res)
138 func TestAddRanToInstanceGetInstanceFailure(t *testing.T) {
139 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
141 var e2tInstance1 *entities.E2TInstance
142 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
144 err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
145 assert.NotNil(t, err)
146 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
149 func TestAddRanToInstanceSaveInstanceFailure(t *testing.T) {
150 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
151 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
152 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
153 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
155 err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
156 assert.NotNil(t, err)
157 rnibReaderMock.AssertExpectations(t)
158 rnibWriterMock.AssertExpectations(t)
161 func TestAddRanToInstanceSuccess(t *testing.T) {
162 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
163 e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
164 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
166 updateE2TInstance := *e2tInstance
167 updateE2TInstance.AssociatedRanList = append(updateE2TInstance.AssociatedRanList, "test1")
169 rnibWriterMock.On("SaveE2TInstance", &updateE2TInstance).Return(nil)
171 err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
173 rnibReaderMock.AssertExpectations(t)
174 rnibWriterMock.AssertExpectations(t)
177 func TestRemoveRanFromInstanceGetInstanceFailure(t *testing.T) {
178 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
180 var e2tInstance1 *entities.E2TInstance
181 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
182 err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
183 assert.NotNil(t, err)
184 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
187 func TestRemoveRanFromInstanceSaveInstanceFailure(t *testing.T) {
188 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
190 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
191 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
192 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
194 err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
195 assert.NotNil(t, err)
196 rnibReaderMock.AssertExpectations(t)
197 rnibWriterMock.AssertExpectations(t)
200 func TestRemoveRanFromInstanceSuccess(t *testing.T) {
201 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
203 e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
204 e2tInstance.AssociatedRanList = []string{"test0", "test1"}
205 updatedE2TInstance := *e2tInstance
206 updatedE2TInstance.AssociatedRanList = []string{"test0"}
207 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
208 rnibWriterMock.On("SaveE2TInstance", &updatedE2TInstance).Return(nil)
210 err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
212 rnibReaderMock.AssertExpectations(t)
213 rnibWriterMock.AssertExpectations(t)
216 func TestSelectE2TInstancesGetE2TAddressesFailure(t *testing.T) {
217 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
219 rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(fmt.Errorf("for test")))
220 address, err := e2tInstancesManager.SelectE2TInstance()
221 assert.NotNil(t, err)
222 assert.Empty(t, address)
223 rnibReaderMock.AssertExpectations(t)
224 rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
227 func TestSelectE2TInstancesEmptyE2TAddressList(t *testing.T) {
228 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
230 rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil)
231 address, err := e2tInstancesManager.SelectE2TInstance()
232 assert.NotNil(t, err)
233 assert.Empty(t, address)
234 rnibReaderMock.AssertExpectations(t)
235 rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
238 func TestSelectE2TInstancesGetE2TInstancesFailure(t *testing.T) {
239 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
241 addresses := []string{E2TAddress}
242 rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
243 rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, common.NewInternalError(fmt.Errorf("for test")))
244 address, err := e2tInstancesManager.SelectE2TInstance()
245 assert.NotNil(t, err)
246 assert.Empty(t, address)
247 rnibReaderMock.AssertExpectations(t)
248 rnibWriterMock.AssertExpectations(t)
251 func TestSelectE2TInstancesEmptyE2TInstancesList(t *testing.T) {
252 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
254 addresses := []string{E2TAddress}
255 rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
256 rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, nil)
257 address, err := e2tInstancesManager.SelectE2TInstance()
258 assert.NotNil(t, err)
259 assert.Empty(t, address)
260 rnibReaderMock.AssertExpectations(t)
261 rnibWriterMock.AssertExpectations(t)
264 func TestSelectE2TInstancesNoActiveE2TInstance(t *testing.T) {
265 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
266 addresses := []string{E2TAddress, E2TAddress2}
267 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
268 e2tInstance1.State = entities.ToBeDeleted
269 e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
270 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
271 e2tInstance2.State = entities.ToBeDeleted
272 e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
274 rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
275 rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
276 address, err := e2tInstancesManager.SelectE2TInstance()
277 assert.NotNil(t, err)
278 assert.Equal(t, "", address)
279 rnibReaderMock.AssertExpectations(t)
280 rnibWriterMock.AssertExpectations(t)
283 func TestSelectE2TInstancesSuccess(t *testing.T) {
284 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
285 addresses := []string{E2TAddress, E2TAddress2}
286 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
287 e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
288 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
289 e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
291 rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
292 rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
293 address, err := e2tInstancesManager.SelectE2TInstance()
295 assert.Equal(t, E2TAddress, address)
296 rnibReaderMock.AssertExpectations(t)
297 rnibWriterMock.AssertExpectations(t)
300 func TestActivateE2TInstanceSuccess(t *testing.T) {
301 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
303 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
304 e2tInstance1.State = entities.ToBeDeleted
305 e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"}
306 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
307 rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.State == entities.Active })).Return(nil)
309 err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
311 assert.Equal(t, entities.Active, e2tInstance1.State)
312 rnibWriterMock.AssertExpectations(t)
315 func TestActivateE2TInstance_RnibError(t *testing.T) {
316 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
318 var e2tInstance1 *entities.E2TInstance
319 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(errors.New("for test")))
321 err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
322 assert.NotNil(t, err)
323 rnibWriterMock.AssertExpectations(t)
326 func TestActivateE2TInstance_NoInstance(t *testing.T) {
327 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
329 var e2tInstance1 *entities.E2TInstance
330 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewResourceNotFoundError())
332 err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
334 assert.NotNil(t, err)
335 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
338 func TestResetKeepAliveTimestampGetInternalFailure(t *testing.T) {
339 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
341 address := "10.10.2.15:9800"
342 e2tInstance := entities.NewE2TInstance(address, PodName)
343 rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, common.NewInternalError(errors.New("Error")))
344 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
346 err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
347 assert.NotNil(t, err)
348 rnibReaderMock.AssertNotCalled(t, "SaveE2TInstance")
351 func TestAResetKeepAliveTimestampSaveInternalFailure(t *testing.T) {
352 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
354 address := "10.10.2.15:9800"
355 e2tInstance := entities.NewE2TInstance(address, PodName)
356 rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
357 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
359 err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
360 assert.NotNil(t, err)
363 func TestResetKeepAliveTimestampSuccess(t *testing.T) {
364 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
366 address := "10.10.2.15:9800"
367 e2tInstance := entities.NewE2TInstance(address, PodName)
368 rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
369 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
371 err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
373 rnibReaderMock.AssertCalled(t, "GetE2TInstance", address)
374 rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1)
377 func TestResetKeepAliveTimestampToBeDeleted(t *testing.T) {
378 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
380 address := "10.10.2.15:9800"
381 e2tInstance := entities.NewE2TInstance(address, PodName)
382 e2tInstance.State = entities.ToBeDeleted
383 rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
385 err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
387 rnibReaderMock.AssertCalled(t, "GetE2TInstance", address)
388 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
391 func TestResetKeepAliveTimestampsForAllE2TInstancesGetE2TInstancesFailure(t *testing.T) {
392 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
393 rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("Error")))
394 e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
395 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
398 func TestResetKeepAliveTimestampsForAllE2TInstancesNoInstances(t *testing.T) {
399 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
400 rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil)
401 e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
402 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
405 func TestResetKeepAliveTimestampsForAllE2TInstancesNoActiveInstances(t *testing.T) {
406 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
407 e2tAddresses := []string{E2TAddress, E2TAddress2}
408 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
409 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
410 e2tInstance1.State = entities.ToBeDeleted
411 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
412 e2tInstance2.State = entities.ToBeDeleted
413 rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
414 e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
415 rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
418 func TestResetKeepAliveTimestampsForAllE2TInstancesOneActiveInstance(t *testing.T) {
419 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
420 e2tAddresses := []string{E2TAddress, E2TAddress2}
421 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
422 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
423 e2tInstance1.State = entities.Active
424 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
425 e2tInstance2.State = entities.ToBeDeleted
426 rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
427 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
428 e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
429 rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1)
432 func TestResetKeepAliveTimestampsForAllE2TInstancesSaveE2TInstanceFailure(t *testing.T) {
433 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
434 e2tAddresses := []string{E2TAddress, E2TAddress2}
435 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
436 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
437 e2tInstance1.State = entities.Active
438 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
439 e2tInstance2.State = entities.ToBeDeleted
440 rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
441 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
442 e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
443 rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1)
446 func TestRemoveE2TInstanceSuccess(t *testing.T) {
447 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
448 rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
449 e2tAddresses := []string{E2TAddress, E2TAddress2}
450 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
451 e2tAddressesNew := []string{E2TAddress2}
452 rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil)
454 err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
456 rnibReaderMock.AssertExpectations(t)
457 rnibWriterMock.AssertExpectations(t)
460 func TestRemoveE2TInstanceRnibErrorInRemoveInstance(t *testing.T) {
461 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
462 rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(e2managererrors.NewRnibDbError())
464 err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
465 assert.NotNil(t, err)
466 assert.IsType(t, e2managererrors.NewRnibDbError(), err)
467 rnibReaderMock.AssertExpectations(t)
468 rnibWriterMock.AssertExpectations(t)
471 func TestRemoveE2TInstanceRnibErrorInGetAddresses(t *testing.T) {
472 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
473 rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
474 var e2tAddresses []string
475 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError())
477 err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
478 assert.NotNil(t, err)
479 assert.IsType(t, e2managererrors.NewRnibDbError(), err)
480 rnibReaderMock.AssertExpectations(t)
481 rnibWriterMock.AssertExpectations(t)
484 func TestRemoveE2TInstanceRnibErrorInSaveAddresses(t *testing.T) {
485 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
486 rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
487 e2tAddresses := []string{E2TAddress, E2TAddress2}
488 rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
489 e2tAddressesNew := []string{E2TAddress2}
490 rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(e2managererrors.NewRnibDbError())
492 err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
493 assert.NotNil(t, err)
494 assert.IsType(t, e2managererrors.NewRnibDbError(), err)
495 rnibReaderMock.AssertExpectations(t)
496 rnibWriterMock.AssertExpectations(t)
499 func TestSetE2tInstanceStateCurrentStateHasChanged(t *testing.T) {
500 rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
502 e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
503 e2tInstance.State = entities.Active
505 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
507 err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
508 assert.NotNil(t, err)
509 assert.IsType(t, e2managererrors.NewInternalError(), err)
510 rnibReaderMock.AssertExpectations(t)
513 func TestSetE2tInstanceStateErrorInSaveE2TInstance(t *testing.T) {
514 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
516 e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
517 e2tInstance.State = entities.ToBeDeleted
518 rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
519 rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for testing")))
521 err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
522 assert.NotNil(t, err)
523 assert.IsType(t, &common.InternalError{}, err)
524 rnibReaderMock.AssertExpectations(t)
527 func TestClearRansOfAllE2TInstancesEmptyList(t *testing.T) {
528 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
529 E2TAddresses := []string{}
530 rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
531 err := e2tInstancesManager.ClearRansOfAllE2TInstances()
533 rnibReaderMock.AssertExpectations(t)
534 rnibWriterMock.AssertExpectations(t)
537 func TestClearRansOfAllE2TInstancesErrorInSaveE2TInstance(t *testing.T) {
538 rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
539 addresses := []string{E2TAddress, E2TAddress2}
540 e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
541 e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
542 e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
543 e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
545 rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
546 rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
547 rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress})).Return(common.NewInternalError(fmt.Errorf("for testing")))
548 rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress2})).Return(nil)
549 err := e2tInstancesManager.ClearRansOfAllE2TInstances()
551 rnibReaderMock.AssertExpectations(t)
552 rnibWriterMock.AssertExpectations(t)