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