X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fhandlers%2Frmrmsghandlers%2Fe2_reset_request_handler_test.go;h=25a815015cd8cab3e862d748496d4485dae28736;hb=9d035d0669de41cd4cb9e3e1f04b814486f72e3a;hp=8b15865e7d64e0b70338db0558391e33e99ac9ca;hpb=04ff63f1708020673dd9be975476e0f76f179a81;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go index 8b15865..25a8150 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go @@ -20,38 +20,49 @@ package rmrmsghandlers import ( "e2mgr/configuration" + "e2mgr/managers" "e2mgr/mocks" "e2mgr/models" + "e2mgr/rmrCgo" "e2mgr/services" "e2mgr/tests" "e2mgr/utils" + "testing" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" "github.com/stretchr/testify/mock" - "testing" ) const ( E2ResetXmlPath = "../../tests/resources/reset/reset-request.xml" ) -func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) { +func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.RanAlarmServiceMock) { logger := tests.InitLog(t) config := &configuration.Configuration{ RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, + E2ResetTimeOutSec: 10, RnibWriter: configuration.RnibWriterConfig{ StateChangeMessageChannel: StateChangeMessageChannel, }} + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := tests.InitRmrSender(rmrMessengerMock, logger) readerMock := &mocks.RnibReaderMock{} writerMock := &mocks.RnibWriterMock{} rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) - handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService) - return handler, readerMock, writerMock + ranListManager := managers.NewRanListManager(logger, rnibDataService) + ranAlarmService := &mocks.RanAlarmServiceMock{} + ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) + ranResetManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager) + changeStatusToConnectedRanManager := managers.NewChangeStatusToConnectedRanManager(logger, rnibDataService, ranConnectStatusChangeManager) + handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager, changeStatusToConnectedRanManager) + return handler, readerMock, writerMock, rmrMessengerMock, ranAlarmService } -func TestE2ResetRequestHandler(t *testing.T) { +func TestE2ResettNotificationHandler(t *testing.T) { e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath) - handler, readerMock, writerMock := initE2ResetMocks(t) + handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t) var nodebInfo = &entities.NodebInfo{ RanName: gnbNodebRanName, AssociatedE2TInstanceAddress: e2tInstanceFullAddress, @@ -63,8 +74,80 @@ func TestE2ResetRequestHandler(t *testing.T) { } readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil) writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil) + var rnibErr error + writerMock.On("UpdateNodebInfo", mock.Anything).Return(rnibErr) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", mock.Anything, mock.Anything).Return(nil) + ranAlarmServiceMock.On("SetConnectivityChangeAlarm", mock.Anything).Return(nil) notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2ResetXml...)} handler.Handle(notificationRequest) readerMock.AssertExpectations(t) writerMock.AssertExpectations(t) + rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, true) + +} + +func TestE2ResettNotificationHandler_UpdateStatus_Connected(t *testing.T) { + e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t) + var nodebInfo = &entities.NodebInfo{ + RanName: gnbNodebRanName, + AssociatedE2TInstanceAddress: e2tInstanceFullAddress, + ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, + NodeType: entities.Node_GNB, + Configuration: &entities.NodebInfo_Gnb{ + Gnb: &entities.Gnb{}, + }, + } + readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil) + writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil) + var rnibErr error + writerMock.On("UpdateNodebInfo", mock.Anything).Return(rnibErr) + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED + readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil) + + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", mock.Anything, mock.Anything).Return(nil) + ranAlarmServiceMock.On("SetConnectivityChangeAlarm", mock.Anything).Return(nil) + notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2ResetXml...)} + handler.Handle(notificationRequest) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfoAndPublish", mock.Anything) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) +} + +func TestE2ResettNotificationHandler_Successful_Reset_Response(t *testing.T) { + e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t) + var nodebInfo = &entities.NodebInfo{ + RanName: gnbNodebRanName, + AssociatedE2TInstanceAddress: e2tInstanceFullAddress, + ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, + NodeType: entities.Node_GNB, + Configuration: &entities.NodebInfo_Gnb{ + Gnb: &entities.Gnb{}, + }, + } + readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil) + writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil) + var rnibErr error + writerMock.On("UpdateNodebInfo", mock.Anything).Return(rnibErr) + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED + readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil) + + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", mock.Anything, mock.Anything).Return(nil) + ranAlarmServiceMock.On("SetConnectivityChangeAlarm", mock.Anything).Return(nil) + notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2ResetXml...)} + handler.Handle(notificationRequest) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfoAndPublish", mock.Anything) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") }