2 // Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved.
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
16 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 // platform project (RICP).
19 package httpmsghandlers
23 "e2mgr/e2managererrors"
27 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
28 "github.com/pkg/errors"
29 "github.com/stretchr/testify/assert"
33 func setupHealthCheckHandlerTest(t *testing.T) (*HealthCheckRequestHandler, services.RNibDataService, *mocks.RnibReaderMock, *mocks.RanListManagerMock) {
35 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
37 readerMock := &mocks.RnibReaderMock{}
38 writerMock := &mocks.RnibWriterMock{}
40 rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
41 rmrMessengerMock := &mocks.RmrMessengerMock{}
42 ranListManagerMock := &mocks.RanListManagerMock{}
44 rmrSender := getRmrSender(rmrMessengerMock, logger)
45 handler := NewHealthCheckRequestHandler(logger, rnibDataService, ranListManagerMock, rmrSender)
47 return handler, rnibDataService, readerMock, ranListManagerMock
50 func TestHealthCheckRequestHandlerArguementHasRanNameSuccess(t *testing.T) {
51 handler, _, readerMock, _ := setupHealthCheckHandlerTest(t)
53 nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED}
54 ranNames := []string{"RanName_1"}
56 readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
58 _, err := handler.Handle(models.HealthCheckRequest{ranNames})
61 readerMock.AssertExpectations(t)
64 func TestHealthCheckRequestHandlerArguementHasNoRanNameSuccess(t *testing.T) {
65 handler, _, readerMock, ranListManagerMock := setupHealthCheckHandlerTest(t)
67 nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED},
68 {InventoryName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}}
70 ranListManagerMock.On("GetNbIdentityList").Return(nbIdentityList)
72 nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED}
73 readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
75 nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}
76 readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
78 _, err := handler.Handle(models.HealthCheckRequest{[]string{}})
84 func TestHealthCheckRequestHandlerArguementHasNoRanConnectedFailure(t *testing.T) {
85 handler, _, readerMock, ranListManagerMock := setupHealthCheckHandlerTest(t)
87 nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED},
88 {InventoryName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}}
89 ranListManagerMock.On("GetNbIdentityList").Return(nbIdentityList)
91 nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}
92 readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil)
94 nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}
95 readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil)
97 _, err := handler.Handle(models.HealthCheckRequest{[]string{}})
99 assert.IsType(t, &e2managererrors.NoConnectedRanError{}, err)
103 func TestHealthCheckRequestHandlerArguementHasRanNameDBErrorFailure(t *testing.T) {
104 handler, _, readerMock, _ := setupHealthCheckHandlerTest(t)
106 ranNames := []string{"RanName_1"}
107 readerMock.On("GetNodeb", "RanName_1").Return(&entities.NodebInfo{}, errors.New("error"))
109 _, err := handler.Handle(models.HealthCheckRequest{ranNames})
111 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
112 readerMock.AssertExpectations(t)