Add header missing license header
[ric-plt/resource-status-manager.git] / RSM / handlers / httpmsghandlers / resource_status_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 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
19 //  platform project (RICP).
20
21 package httpmsghandlers_test
22
23 import (
24         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
25         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
26         "github.com/pkg/errors"
27         "github.com/stretchr/testify/assert"
28         "github.com/stretchr/testify/mock"
29         "rsm/configuration"
30         "rsm/enums"
31         "rsm/handlers/httpmsghandlers"
32         "rsm/logger"
33         "rsm/mocks"
34         "rsm/models"
35         "rsm/rsmerrors"
36         "rsm/services"
37         "rsm/tests"
38         "testing"
39 )
40
41 func initTest(t *testing.T) (*httpmsghandlers.ResourceStatusRequestHandler, *mocks.RnibReaderMock, *mocks.RsmReaderMock, *mocks.RsmWriterMock, *mocks.ResourceStatusServiceMock) {
42         log, err := logger.InitLogger(logger.DebugLevel)
43         if err != nil {
44                 t.Errorf("#... - failed to initialize logger, error: %s", err)
45         }
46
47         config, err := configuration.ParseConfiguration()
48         if err != nil {
49                 t.Errorf("#... - failed to parse configuration error: %s", err)
50         }
51
52         resourceStatusServiceMock := &mocks.ResourceStatusServiceMock{}
53         rnibReaderMock := &mocks.RnibReaderMock{}
54         rsmReaderMock := &mocks.RsmReaderMock{}
55         rsmWriterMock := &mocks.RsmWriterMock{}
56
57         rnibDataService := services.NewRnibDataService(log, config, rnibReaderMock, rsmReaderMock, rsmWriterMock)
58         handler := httpmsghandlers.NewResourceStatusRequestHandler(log, rnibDataService, resourceStatusServiceMock)
59
60         return handler, rnibReaderMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock
61 }
62
63 func TestResourceStatusRequestHandlerGetConfigError(t *testing.T) {
64
65         handler, _, rsmReaderMock, _,  _ := initTest(t)
66
67         err := common.NewInternalError(errors.New("Error"))
68         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(tests.GetRsmGeneralConfiguration(true), err)
69
70         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
71         actualErr := handler.Handle(resourceStatusRequest)
72
73         rsmReaderMock.AssertNumberOfCalls(t, "SaveRsmGeneralConfiguration", 0)
74
75         assert.Equal(t, actualErr, rsmerrors.NewRnibDbError())
76 }
77
78 func TestResourceStatusRequestHandlerSaveConfigError(t *testing.T) {
79
80         handler, readerMock, rsmReaderMock, rsmWriterMock,  _ := initTest(t)
81
82         err := common.NewInternalError(errors.New("Error"))
83         config := tests.GetRsmGeneralConfiguration(true)
84         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
85         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(err)
86
87         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
88         actualErr := handler.Handle(resourceStatusRequest)
89
90         readerMock.AssertNumberOfCalls(t, "GetListEnbIds", 0)
91
92         assert.Equal(t, actualErr, rsmerrors.NewRnibDbError())
93 }
94
95 func TestResourceStatusRequestHandleGetListEnbIdsError(t *testing.T) {
96
97         handler, readerMock, rsmReaderMock, rsmWriterMock,  _ := initTest(t)
98
99         err := common.NewInternalError(errors.New("Error"))
100         config := tests.GetRsmGeneralConfiguration(true)
101         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
102         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
103
104         var nbIdentityList []*entities.NbIdentity
105         readerMock.On("GetListEnbIds").Return(nbIdentityList, err)
106
107         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
108         actualErr := handler.Handle(resourceStatusRequest)
109
110         readerMock.AssertNumberOfCalls(t, "GetNodeb", 0)
111
112         assert.Equal(t, actualErr, rsmerrors.NewRnibDbError())
113 }
114
115 func TestResourceStatusRequestHandlerTrueStartSuccess(t *testing.T) {
116
117         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
118
119         config := tests.GetRsmGeneralConfiguration(true)
120         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
121         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
122
123         nbIdentityList := CreateIdentityList()
124         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
125
126         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
127         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
128         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
129         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
130         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
131         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
132
133         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Start, ActionStatus:false}
134         rrInfo2 := &models.RsmRanInfo{RanName:"RanName_2", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Start, ActionStatus:true}
135         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Stop, ActionStatus:false}
136         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, nil)
137         rsmReaderMock.On("GetRsmRanInfo", "RanName_2").Return(rrInfo2, nil)
138         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
139
140         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(nil)
141
142         resourceStatusServiceMock.On("BuildAndSendInitiateRequest", nb1, config, enums.Enb1MeasurementId).Return(nil)
143         resourceStatusServiceMock.On("BuildAndSendInitiateRequest", nb3, config, enums.Enb1MeasurementId).Return(nil)
144
145
146         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
147         actualErr := handler.Handle(resourceStatusRequest)
148
149         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
150         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
151         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendInitiateRequest", 2)
152
153         assert.Equal(t, actualErr, nil)
154 }
155
156 func TestResourceStatusRequestHandlerTrueNumberOfFails1(t *testing.T) {
157
158         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
159
160         config := tests.GetRsmGeneralConfiguration(true)
161         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
162         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
163
164         nbIdentityList := CreateIdentityList()
165         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
166
167         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
168         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
169         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
170         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
171         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
172         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
173
174         err := common.NewInternalError(errors.New("Error"))
175         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Start, ActionStatus:false}
176         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Stop, ActionStatus:false}
177         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, err)
178         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
179
180         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(nil)
181
182         resourceStatusServiceMock.On("BuildAndSendInitiateRequest", nb3, mock.AnythingOfType("*models.RsmGeneralConfiguration"), enums.Enb1MeasurementId).Return(nil)
183
184
185         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
186         actualErr := handler.Handle(resourceStatusRequest)
187
188         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
189         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
190         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendInitiateRequest", 1)
191
192         rsmError := rsmerrors.NewRsmError(1)
193         assert.Equal(t, actualErr, rsmError)
194         assert.Equal(t, actualErr.Error(), rsmError.Error())
195 }
196
197 func TestResourceStatusRequestHandlerTrueNumberOfFails3(t *testing.T) {
198
199         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
200
201         config := tests.GetRsmGeneralConfiguration(true)
202         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
203         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
204
205         nbIdentityList := CreateIdentityList()
206         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
207
208         err := common.NewInternalError(errors.New("Error"))
209         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
210         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
211         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
212         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
213         readerMock.On("GetNodeb", "RanName_2").Return(nb2, err)
214         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
215
216         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Start, ActionStatus:false}
217         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Stop, ActionStatus:false}
218         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, nil)
219         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
220
221         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(err)
222
223         resourceStatusServiceMock.On("BuildAndSendInitiateRequest", nb1, mock.AnythingOfType("*models.RsmGeneralConfiguration"), enums.Enb1MeasurementId).Return(errors.New("Error"))
224
225
226         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:true}
227         actualErr := handler.Handle(resourceStatusRequest)
228
229         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
230         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
231         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendInitiateRequest", 1)
232
233         rsmError := rsmerrors.NewRsmError(3)
234         assert.Equal(t, actualErr, rsmError)
235         assert.Equal(t, actualErr.Error(), rsmError.Error())
236 }
237
238 func TestResourceStatusRequestHandlerFalseStopSuccess(t *testing.T) {
239
240         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
241
242         config := tests.GetRsmGeneralConfiguration(true)
243         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
244         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
245
246         nbIdentityList := CreateIdentityList()
247         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
248
249         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
250         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
251         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
252         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
253         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
254         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
255
256         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:false}
257         rrInfo2 := &models.RsmRanInfo{RanName:"RanName_2", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:true}
258         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Start, ActionStatus:false}
259         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, nil)
260         rsmReaderMock.On("GetRsmRanInfo", "RanName_2").Return(rrInfo2, nil)
261         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
262
263         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(nil)
264
265         resourceStatusServiceMock.On("BuildAndSendStopRequest", nb1, config, rrInfo1.Enb1MeasurementId, rrInfo1.Enb2MeasurementId).Return(nil)
266         resourceStatusServiceMock.On("BuildAndSendStopRequest", nb3, config, rrInfo3.Enb1MeasurementId, rrInfo3.Enb2MeasurementId).Return(nil)
267
268
269         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:false}
270         actualErr := handler.Handle(resourceStatusRequest)
271
272         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
273         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
274         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendStopRequest", 2)
275
276         assert.Equal(t, actualErr, nil)
277 }
278
279 func TestResourceStatusRequestHandlerFalseNumberOfFails1(t *testing.T) {
280
281         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
282
283         config := tests.GetRsmGeneralConfiguration(true)
284         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
285         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
286
287         nbIdentityList := CreateIdentityList()
288         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
289
290         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
291         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,}
292         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
293         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
294         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
295         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
296
297         err := common.NewInternalError(errors.New("Error"))
298         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:false}
299         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Start, ActionStatus:false}
300         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, err)
301         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
302
303         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(nil)
304
305         resourceStatusServiceMock.On("BuildAndSendStopRequest", nb3, config, rrInfo3.Enb1MeasurementId, rrInfo3.Enb2MeasurementId).Return(nil)
306
307
308         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:false}
309         actualErr := handler.Handle(resourceStatusRequest)
310
311         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
312         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
313         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendStopRequest", 1)
314
315         rsmError := rsmerrors.NewRsmError(1)
316         assert.Equal(t, actualErr, rsmError)
317         assert.Equal(t, actualErr.Error(), rsmError.Error())
318 }
319
320 func TestResourceStatusRequestHandlerFalseNumberOfFails3(t *testing.T) {
321
322         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
323
324         config := tests.GetRsmGeneralConfiguration(true)
325         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
326         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
327
328         nbIdentityList := CreateIdentityList()
329         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
330
331         err := common.NewInternalError(errors.New("Error"))
332         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
333         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
334         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
335         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
336         readerMock.On("GetNodeb", "RanName_2").Return(nb2, err)
337         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
338
339         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:false}
340         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Start, ActionStatus:false}
341         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, nil)
342         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
343
344         rsmWriterMock.On("SaveRsmRanInfo", rrInfo3).Return(err)
345
346         resourceStatusServiceMock.On("BuildAndSendStopRequest", nb1, config, rrInfo1.Enb1MeasurementId, rrInfo1.Enb2MeasurementId).Return(errors.New("Error"))
347
348         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:false}
349         actualErr := handler.Handle(resourceStatusRequest)
350
351         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
352         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 1)
353         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendStopRequest", 1)
354
355         rsmError := rsmerrors.NewRsmError(3)
356         assert.Equal(t, actualErr, rsmError)
357         assert.Equal(t, actualErr.Error(), rsmError.Error())
358 }
359
360 func TestResourceStatusRequestHandlerFalseNoEnb2MeasurementId(t *testing.T) {
361
362         handler, readerMock, rsmReaderMock, rsmWriterMock, resourceStatusServiceMock := initTest(t)
363
364         config := tests.GetRsmGeneralConfiguration(true)
365         rsmReaderMock.On("GetRsmGeneralConfiguration").Return(config, nil)
366         rsmWriterMock.On("SaveRsmGeneralConfiguration", config).Return(nil)
367
368         nbIdentityList := CreateIdentityList()
369         readerMock.On("GetListEnbIds").Return(nbIdentityList, nil)
370
371         nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
372         nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
373         nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED,}
374         readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
375         readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
376         readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil)
377
378         rrInfo1 := &models.RsmRanInfo{RanName:"RanName_1", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:false}
379         rrInfo2 := &models.RsmRanInfo{RanName:"RanName_2", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:2, Action:enums.Stop, ActionStatus:true}
380         rrInfo3 := &models.RsmRanInfo{RanName:"RanName_3", Enb1MeasurementId:enums.Enb1MeasurementId, Enb2MeasurementId:0, Action:enums.Start, ActionStatus:false}
381         rsmReaderMock.On("GetRsmRanInfo", "RanName_1").Return(rrInfo1, nil)
382         rsmReaderMock.On("GetRsmRanInfo", "RanName_2").Return(rrInfo2, nil)
383         rsmReaderMock.On("GetRsmRanInfo", "RanName_3").Return(rrInfo3, nil)
384
385         resourceStatusServiceMock.On("BuildAndSendStopRequest", nb1, config, rrInfo1.Enb1MeasurementId, rrInfo1.Enb2MeasurementId).Return(nil)
386
387         resourceStatusRequest := models.ResourceStatusRequest{EnableResourceStatus:false}
388         actualErr := handler.Handle(resourceStatusRequest)
389
390         readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
391         rsmWriterMock.AssertNumberOfCalls(t, "SaveRsmRanInfo", 0)
392         resourceStatusServiceMock.AssertNumberOfCalls(t, "BuildAndSendStopRequest", 1)
393
394         rsmError := rsmerrors.NewRsmError(1)
395         assert.Equal(t, actualErr, rsmError)
396         assert.Equal(t, actualErr.Error(), rsmError.Error())
397 }
398
399 func CreateIdentityList() []*entities.NbIdentity {
400         nbIdentity1 := entities.NbIdentity{InventoryName: "RanName_1"}
401         nbIdentity2 := entities.NbIdentity{InventoryName: "RanName_2"}
402         nbIdentity3 := entities.NbIdentity{InventoryName: "RanName_3"}
403
404         var nbIdentityList []*entities.NbIdentity
405         nbIdentityList = append(nbIdentityList, &nbIdentity1)
406         nbIdentityList = append(nbIdentityList, &nbIdentity2)
407         nbIdentityList = append(nbIdentityList, &nbIdentity3)
408
409         return nbIdentityList
410 }