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