+++ /dev/null
-package managers
-
-import (
- "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
- "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
- "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
- "github.com/pkg/errors"
- "github.com/stretchr/testify/assert"
- "rsm/configuration"
- "rsm/e2pdus"
- "rsm/enums"
- "rsm/logger"
- "rsm/mocks"
- "rsm/rmrcgo"
- "rsm/rsmerrors"
- "rsm/services"
- "rsm/tests/testhelper"
- "testing"
- "time"
-)
-
-const RanName = "test"
-
-func initResourceStatusInitiateManagerTest(t *testing.T) (*mocks.RmrMessengerMock, *mocks.RnibReaderMock, *e2pdus.ResourceStatusRequestData, *ResourceStatusInitiateManager) {
- logger, err := logger.InitLogger(logger.InfoLevel)
- if err != nil {
- t.Errorf("#... - failed to initialize logger, error: %s", err)
- }
-
- config, err := configuration.ParseConfiguration()
- if err != nil {
- t.Errorf("#... - failed to parse configuration error: %s", err)
- }
-
- rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrSender := testhelper.InitRmrSender(rmrMessengerMock, logger)
-
- readerMock := &mocks.RnibReaderMock{}
- rnibReaderProvider := func() reader.RNibReader {
- return readerMock
- }
-
- resourceStatusRequestData := &e2pdus.ResourceStatusRequestData{}
- populateResourceStatusInitiateRequestParams(resourceStatusRequestData, config)
-
- rnibDataService := services.NewRnibDataService(logger, config, rnibReaderProvider)
- resourceStatusInitiateManager := NewResourceStatusInitiateManager(logger, rnibDataService, rmrSender)
- return rmrMessengerMock, readerMock, resourceStatusRequestData, resourceStatusInitiateManager
-}
-
-func TestGetNodebFailure(t *testing.T) {
- rmrMessengerMock, readerMock, resourceStatusInitiateRequestParams, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- var nodebInfo *entities.NodebInfo
- readerMock.On("GetNodeb", RanName).Return(nodebInfo, common.NewInternalError(errors.New("Error")))
- err := resourceStatusInitiateManager.Execute(RanName, resourceStatusInitiateRequestParams)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- assert.IsType(t, &rsmerrors.RnibDbError{}, err)
- rmrMessengerMock.AssertNotCalled(t, "SendMsg")
-}
-
-func TestInvalidConnectionStatus(t *testing.T) {
- rmrMessengerMock, readerMock, resourceStatusInitiateRequestParams, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- var err error
- readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}, err)
- err = resourceStatusInitiateManager.Execute(RanName, resourceStatusInitiateRequestParams)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- assert.IsType(t, &rsmerrors.WrongStateError{}, err)
- rmrMessengerMock.AssertNotCalled(t, "SendMsg")
-}
-
-func TestPackFailure(t *testing.T) {
- rmrMessengerMock, readerMock, resourceRequestData, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- var err error
- nodebInfo := &entities.NodebInfo{
- RanName: RanName,
- ConnectionStatus: entities.ConnectionStatus_CONNECTED,
- Configuration: &entities.NodebInfo_Enb{
- Enb: &entities.Enb{
- ServedCells: []*entities.ServedCellInfo{{CellId: ""}},
- },
- },
- }
-
- readerMock.On("GetNodeb", RanName).Return(nodebInfo, err)
- err = resourceStatusInitiateManager.Execute(RanName, resourceRequestData)
- assert.Nil(t, err)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- rmrMessengerMock.AssertNotCalled(t, "SendMsg")
-}
-
-func TestOneCellSuccess(t *testing.T) {
- cellId := "02f829:0007ab00"
- rmrMessengerMock, readerMock, resourceRequestData, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- xaction := []byte(RanName)
- var err error
- nodebInfo := &entities.NodebInfo{
- RanName: RanName,
- ConnectionStatus: entities.ConnectionStatus_CONNECTED,
- Configuration: &entities.NodebInfo_Enb{
- Enb: &entities.Enb{
- ServedCells: []*entities.ServedCellInfo{{CellId: cellId}},
- },
- },
- }
-
- readerMock.On("GetNodeb", RanName).Return(nodebInfo, err)
- expectedPayload := getPackedPayloadForCell(cellId, 1, *resourceRequestData)
- expectedMbuf := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload), RanName, &expectedPayload, &xaction)
- rmrMessengerMock.On("SendMsg", expectedMbuf).Return(&rmrcgo.MBuf{}, err)
- err = resourceStatusInitiateManager.Execute(RanName, resourceRequestData)
- time.Sleep(100 * time.Millisecond)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- assert.Nil(t, err)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
-}
-
-func TestTwoCellOneFailureOneSuccess(t *testing.T) {
- cellId1 := "02f829:0007ab00"
- cellId2 := "02f829:0007ab50"
- rmrMessengerMock, readerMock, resourceRequestData, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- xaction := []byte(RanName)
- var err error
- nodebInfo := &entities.NodebInfo{
- RanName: RanName,
- ConnectionStatus: entities.ConnectionStatus_CONNECTED,
- Configuration: &entities.NodebInfo_Enb{
- Enb: &entities.Enb{
- ServedCells: []*entities.ServedCellInfo{{CellId: cellId1}, {CellId: cellId2}},
- },
- },
- }
-
- readerMock.On("GetNodeb", RanName).Return(nodebInfo, err)
- expectedPayload1 := getPackedPayloadForCell(cellId1, 1, *resourceRequestData)
- expectedMbuf1 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload1), RanName, &expectedPayload1, &xaction)
-
- expectedPayload2 := getPackedPayloadForCell(cellId2, 2, *resourceRequestData)
- expectedMbuf2 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload2), RanName, &expectedPayload2, &xaction)
- rmrMessengerMock.On("SendMsg", expectedMbuf1).Return(&rmrcgo.MBuf{}, rsmerrors.NewRmrError())
- rmrMessengerMock.On("SendMsg", expectedMbuf2).Return(&rmrcgo.MBuf{}, err)
- err = resourceStatusInitiateManager.Execute(RanName, resourceRequestData)
- time.Sleep(100 * time.Millisecond)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- assert.Nil(t, err)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf1)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf2)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 2)
-}
-
-func TestFiveCellsSuccess(t *testing.T) {
- cellId1 := "02f829:0007ab00"
- cellId2 := "02f829:0007ab50"
- cellId3 := "02f829:0007ab60"
- cellId4 := "02f829:0007ab70"
- cellId5 := "02f829:0007ab80"
-
- rmrMessengerMock, readerMock, resourceRequestData, resourceStatusInitiateManager := initResourceStatusInitiateManagerTest(t)
- xaction := []byte(RanName)
- var err error
- nodebInfo := &entities.NodebInfo{
- RanName: RanName,
- ConnectionStatus: entities.ConnectionStatus_CONNECTED,
- Configuration: &entities.NodebInfo_Enb{
- Enb: &entities.Enb{
- ServedCells: []*entities.ServedCellInfo{{CellId: cellId1}, {CellId: cellId2}, {CellId: cellId3}, {CellId: cellId4}, {CellId: cellId5}},
- },
- },
- }
-
- readerMock.On("GetNodeb", RanName).Return(nodebInfo, err)
- expectedPayload1 := getPackedPayloadForCell(cellId1, 1, *resourceRequestData)
- expectedMbuf1 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload1), RanName, &expectedPayload1, &xaction)
-
- expectedPayload2 := getPackedPayloadForCell(cellId2, 2, *resourceRequestData)
- expectedMbuf2 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload2), RanName, &expectedPayload2, &xaction)
-
- expectedPayload3 := getPackedPayloadForCell(cellId3, 3, *resourceRequestData)
- expectedMbuf3 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload3), RanName, &expectedPayload3, &xaction)
-
- expectedPayload4 := getPackedPayloadForCell(cellId4, 4, *resourceRequestData)
- expectedMbuf4 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload4), RanName, &expectedPayload4, &xaction)
-
- expectedPayload5 := getPackedPayloadForCell(cellId5, 5, *resourceRequestData)
- expectedMbuf5 := rmrcgo.NewMBuf(rmrcgo.RicResStatusReq, len(expectedPayload5), RanName, &expectedPayload5, &xaction)
-
- rmrMessengerMock.On("SendMsg", expectedMbuf1).Return(&rmrcgo.MBuf{}, err)
- rmrMessengerMock.On("SendMsg", expectedMbuf2).Return(&rmrcgo.MBuf{}, err)
- rmrMessengerMock.On("SendMsg", expectedMbuf3).Return(&rmrcgo.MBuf{}, err)
- rmrMessengerMock.On("SendMsg", expectedMbuf4).Return(&rmrcgo.MBuf{}, err)
- rmrMessengerMock.On("SendMsg", expectedMbuf5).Return(&rmrcgo.MBuf{}, err)
-
- err = resourceStatusInitiateManager.Execute(RanName, resourceRequestData)
- time.Sleep(100 * time.Millisecond)
- readerMock.AssertCalled(t, "GetNodeb", RanName)
- assert.Nil(t, err)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf1)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf2)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf3)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf4)
- rmrMessengerMock.AssertCalled(t, "SendMsg", expectedMbuf5)
-
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 5)
-}
-
-func getPackedPayloadForCell(cellId string, index int, resourceStatusRequestData e2pdus.ResourceStatusRequestData) []byte {
- resourceStatusRequestData.CellID = cellId
- resourceStatusRequestData.MeasurementID = e2pdus.Measurement_ID(index)
- expectedPayload, _, _ := e2pdus.BuildPackedResourceStatusRequest(enums.Registration_Request_start, &resourceStatusRequestData, e2pdus.MaxAsn1PackedBufferSize, e2pdus.MaxAsn1CodecMessageBufferSize, false)
- return expectedPayload
-}
-
-func populateResourceStatusInitiateRequestParams(params *e2pdus.ResourceStatusRequestData, config *configuration.Configuration) {
- params.PartialSuccessAllowed = config.ResourceStatusParams.PartialSuccessAllowed
- params.PrbPeriodic = config.ResourceStatusParams.PrbPeriodic
- params.TnlLoadIndPeriodic = config.ResourceStatusParams.TnlLoadIndPeriodic
- params.HwLoadIndPeriodic = config.ResourceStatusParams.HwLoadIndPeriodic
- params.AbsStatusPeriodic = config.ResourceStatusParams.AbsStatusPeriodic
- params.RsrpMeasurementPeriodic = config.ResourceStatusParams.RsrpMeasurementPeriodic
- params.CsiPeriodic = config.ResourceStatusParams.CsiPeriodic
- params.PeriodicityMS = config.ResourceStatusParams.PeriodicityMs
- params.PeriodicityRsrpMeasurementMS = config.ResourceStatusParams.PeriodicityRsrpMeasurementMs
- params.PeriodicityCsiMS = config.ResourceStatusParams.PeriodicityCsiMs
-}