[RICPLT-2165] Add rnibDataService to support retries
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / delete_all_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
18 package httpmsghandlers
19
20 import (
21         "e2mgr/configuration"
22         "e2mgr/e2managererrors"
23         "e2mgr/logger"
24         "e2mgr/mocks"
25         "e2mgr/models"
26         "e2mgr/rNibWriter"
27         "e2mgr/rmrCgo"
28         "e2mgr/services"
29         "e2mgr/tests"
30         "fmt"
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         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
34         "github.com/stretchr/testify/assert"
35         "github.com/stretchr/testify/mock"
36         "reflect"
37         "testing"
38 )
39
40 func setupTest(t *testing.T) (*logger.Logger, *configuration.Configuration, *mocks.RnibReaderMock, *mocks.RnibWriterMock, services.RNibDataService, *mocks.RmrMessengerMock) {
41         log := initLog(t)
42         config := configuration.ParseConfiguration()
43
44         readerMock := &mocks.RnibReaderMock{}
45         readerProvider := func() reader.RNibReader {
46                 return readerMock
47         }
48         writerMock := &mocks.RnibWriterMock{}
49         writerProvider := func() rNibWriter.RNibWriter {
50                 return writerMock
51         }
52         rnibDataService := services.NewRnibDataService(log, config, readerProvider, writerProvider)
53         rmrMessengerMock := &mocks.RmrMessengerMock{}
54         return log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock
55 }
56
57 func TestHandleBeforeTimerGetListNodebIdsFailedFlow(t *testing.T){
58         log, config, readerMock, _, rnibDataService, rmrMessengerMock := setupTest(t)
59
60         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
61
62         rnibErr := &common.ResourceNotFoundError{}
63         var nbIdentityList []*entities.NbIdentity
64         readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibErr)
65
66         expected := &e2managererrors.RnibDbError{}
67         actual := handler.Handle(nil)
68         if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
69                 t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
70         }
71 }
72
73 func TestHandleAfterTimerGetListNodebIdsFailedFlow(t *testing.T){
74         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
75
76         config.BigRedButtonTimeoutSec = 1
77
78         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
79
80         rnibErr := &common.ResourceNotFoundError{}
81         //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown
82         nbIdentityList := createIdentityList()
83
84         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil).Return(nbIdentityList, rnibErr)
85
86         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
87         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
88         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
89         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
90         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
91         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
92
93         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
94         updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
95         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil)
96         writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil)
97
98         expected := &e2managererrors.RnibDbError{}
99         actual := handler.Handle(nil)
100
101         if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
102                 t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
103         }
104 }
105
106 func TestHandleSuccessFlow(t *testing.T){
107         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
108
109         config.BigRedButtonTimeoutSec = 1
110         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
111
112         //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown
113         nbIdentityList := createIdentityList()
114         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
115
116         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
117         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
118         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
119         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
120         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
121         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
122
123         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
124         updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
125         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil)
126         writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil)
127
128         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown
129         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
130
131         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
132         nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
133         nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
134         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil)
135         readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil)
136         readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil)
137
138         updatedNb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
139         updatedNb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
140         writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil)
141         writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil)
142
143         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
144         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil)
145
146         actual := handler.Handle(nil)
147
148         assert.Nil(t, actual)
149 }
150
151 func TestHandleSuccessGetNextStatusFlow(t *testing.T){
152         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
153
154         config.BigRedButtonTimeoutSec = 1
155         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
156
157         nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}}
158         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
159
160         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
161         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
162
163         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
164         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil)
165
166         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown
167         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
168
169         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
170         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil)
171
172         updatedNb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
173         writerMock.On("SaveNodeb", mock.Anything, updatedNb1AfterTimer).Return(nil)
174
175         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
176         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil)
177
178         actual := handler.Handle(nil)
179
180         assert.Nil(t, actual)
181 }
182
183 func TestHandleShuttingDownStatusFlow(t *testing.T){
184         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
185
186         config.BigRedButtonTimeoutSec = 1
187         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
188
189         nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}}
190         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
191
192         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
193         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
194
195         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown
196         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
197
198         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
199         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil)
200
201         updatedNb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
202         writerMock.On("SaveNodeb", mock.Anything, updatedNb1AfterTimer).Return(nil)
203
204         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
205         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil)
206
207         actual := handler.Handle(nil)
208
209         assert.Nil(t, actual)
210 }
211
212 func TestHandleGetNodebFailedFlow(t *testing.T){
213         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
214
215         config.BigRedButtonTimeoutSec = 1
216         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
217
218         //Before timer: Disconnected->ShutDown(will fail), ShuttingDown->Ignore, Connected->ShuttingDown
219         nbIdentityList := createIdentityList()
220         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
221
222         errRnib := &common.ResourceNotFoundError{}
223         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
224         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
225         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
226         readerMock.On("GetNodeb", "RanName_1").Return(nb1, errRnib)
227         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
228         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
229
230         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
231         updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
232         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(errRnib)
233         writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil)
234
235         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown
236         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
237
238         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
239         nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
240         nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
241         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, errRnib)
242         readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil)
243         readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil)
244
245         updatedNb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
246         updatedNb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
247         writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil)
248         writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil)
249
250         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
251         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil)
252
253         actual := handler.Handle(nil)
254
255         assert.Nil(t, actual)
256 }
257
258 func TestHandleSaveFailedFlow(t *testing.T){
259         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
260
261         config.BigRedButtonTimeoutSec = 1
262         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
263
264         //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown(will fail)
265         nbIdentityList := createIdentityList()
266         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
267
268         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
269         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
270         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
271         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
272         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
273         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
274
275         errRnib := &common.ResourceNotFoundError{}
276         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
277         updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
278         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil)
279         writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(errRnib)
280
281         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown(will fail)
282         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
283
284         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
285         nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
286         nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
287         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil)
288         readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil)
289         readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil)
290
291         updatedNb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
292         updatedNb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
293         writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil)
294         writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(errRnib)
295
296         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
297         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil)
298
299         actual := handler.Handle(nil)
300
301         assert.Nil(t, actual)
302 }
303
304 func TestHandleSendRmrFailedFlow(t *testing.T){
305         log, config, readerMock, writerMock, rnibDataService, rmrMessengerMock := setupTest(t)
306
307         config.BigRedButtonTimeoutSec = 1
308         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
309
310         //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown(will fail)
311         nbIdentityList := createIdentityList()
312         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
313
314         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
315         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
316         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
317         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
318         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
319         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
320
321         updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
322         updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
323         writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil)
324         writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil)
325
326         //after timer: ShutDown->Ignore, ShuttingDown->ShutDown(will fail)
327         readerMock.On("GetListNodebIds").Return(nbIdentityList, nil)
328
329         nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
330         nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
331         nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
332         readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil)
333         readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil)
334         readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil)
335
336         updatedNb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
337         updatedNb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,}
338         writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil)
339         writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil)
340
341         expected := e2managererrors.NewRmrError()
342         mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize, "RanName", &tests.DummyPayload, &tests.DummyXAction)
343         rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, expected)
344
345         actual := handler.Handle(nil)
346
347         if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
348                 t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
349         }
350 }
351
352 func TestHandleGetListEnbIdsEmptyFlow(t *testing.T){
353         log, config, readerMock, _, rnibDataService, rmrMessengerMock := setupTest(t)
354
355         handler := NewDeleteAllRequestHandler(log, getRmrService(rmrMessengerMock, log), config, rnibDataService)
356
357         var rnibError error
358         nbIdentityList := []*entities.NbIdentity{}
359
360         readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibError)
361
362         actual := handler.Handle(nil)
363         readerMock.AssertNumberOfCalls(t, "GetNodeb", 0)
364         assert.Nil(t, actual)
365 }
366
367 func createIdentityList() []*entities.NbIdentity {
368         nbIdentity1 := entities.NbIdentity{InventoryName: "RanName_1"}
369         nbIdentity2 := entities.NbIdentity{InventoryName: "RanName_2"}
370         nbIdentity3 := entities.NbIdentity{InventoryName: "RanName_3"}
371
372         var nbIdentityList []*entities.NbIdentity
373         nbIdentityList = append(nbIdentityList, &nbIdentity1)
374         nbIdentityList = append(nbIdentityList, &nbIdentity2)
375         nbIdentityList = append(nbIdentityList, &nbIdentity3)
376
377         return nbIdentityList
378 }
379
380 func initLog(t *testing.T) *logger.Logger {
381         log, err := logger.InitLogger(logger.InfoLevel)
382         if err != nil {
383                 t.Errorf("#initLog test - failed to initialize logger, error: %s", err)
384         }
385         return log
386 }
387
388 func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService {
389         rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
390         messageChannel := make(chan *models.NotificationResponse)
391         rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger)
392         return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, messageChannel)
393 }