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