Fixing the E2 reset notification 85/10985/2
authornaman.gupta <naman.gupta@samsung.com>
Wed, 26 Apr 2023 11:14:43 +0000 (16:44 +0530)
committernaman.gupta <naman.gupta@samsung.com>
Wed, 26 Apr 2023 14:49:39 +0000 (20:19 +0530)
Fixing the E2 reset notification event

Signed-off-by: naman.gupta <naman.gupta@samsung.com>
Change-Id: I015eda53f5006baf949f4cd24ad49e4833879f76

E2Manager/build-e2mgr-ubuntu.sh
E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go
E2Manager/managers/e2_reset_status_change_manager_test.go
E2Manager/managers/ran_connect_status_change_manager.go

index f984587..16fa29f 100755 (executable)
@@ -73,7 +73,7 @@ export GODEBUG=cgocheck=2,clobberfree=1,gcstoptheworld=2,allocfreetrace=0
 export RMR_SEED_RT=$(pwd)/router_test.txt
 # writes to coverage.txt by default
 # SonarCloud accepts the text format
-go-acc $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' )
+go-acc -- -v $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' )
 
 # TODO: drop rewrite of path prefix when SonarScanner is extended
 # rewrite the module name to a directory name in the coverage report
index cc9722e..c96fbb8 100644 (file)
@@ -37,7 +37,7 @@ const (
        E2ResetXmlPath = "../../tests/resources/reset/reset-request.xml"\r
 )\r
 \r
-func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock) {\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
@@ -56,12 +56,12 @@ func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.
        ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService)\r
        ranResetManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager)\r
        handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager)\r
-       return handler, readerMock, writerMock, rmrMessengerMock\r
+       return handler, readerMock, writerMock, rmrMessengerMock, ranAlarmService\r
 }\r
 \r
 func TestE2ResettNotificationHandler(t *testing.T) {\r
        e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath)\r
-       handler, readerMock, writerMock, rmrMessengerMock := initE2ResetMocks(t)\r
+       handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t)\r
        var nodebInfo = &entities.NodebInfo{\r
                RanName:                      gnbNodebRanName,\r
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,\r
@@ -78,6 +78,8 @@ func TestE2ResettNotificationHandler(t *testing.T) {
        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
@@ -88,7 +90,7 @@ func TestE2ResettNotificationHandler(t *testing.T) {
 \r
 func TestE2ResettNotificationHandler_UpdateStatus_Connected(t *testing.T) {\r
        e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath)\r
-       handler, readerMock, writerMock, rmrMessengerMock := initE2ResetMocks(t)\r
+       handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t)\r
        var nodebInfo = &entities.NodebInfo{\r
                RanName:                      gnbNodebRanName,\r
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,\r
@@ -108,6 +110,8 @@ func TestE2ResettNotificationHandler_UpdateStatus_Connected(t *testing.T) {
        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
@@ -117,7 +121,7 @@ func TestE2ResettNotificationHandler_UpdateStatus_Connected(t *testing.T) {
 \r
 func TestE2ResettNotificationHandler_Successful_Reset_Response(t *testing.T) {\r
        e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath)\r
-       handler, readerMock, writerMock, rmrMessengerMock := initE2ResetMocks(t)\r
+       handler, readerMock, writerMock, rmrMessengerMock, ranAlarmServiceMock := initE2ResetMocks(t)\r
        var nodebInfo = &entities.NodebInfo{\r
                RanName:                      gnbNodebRanName,\r
                AssociatedE2TInstanceAddress: e2tInstanceFullAddress,\r
@@ -137,6 +141,8 @@ func TestE2ResettNotificationHandler_Successful_Reset_Response(t *testing.T) {
        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
index 7b2a1ce..d09eb32 100644 (file)
@@ -54,6 +54,7 @@ func TestE2ResetStatusChangeSucceeds(t *testing.T) {
        origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING}\r
        var rnibErr error\r
        readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr)\r
+       writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", mock.Anything, mock.Anything).Return(nil)\r
        updatedNodebInfo1 := *origNodebInfo\r
        updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_UNDER_RESET\r
        writerMock.On("UpdateNodebInfo", mock.Anything).Return(rnibErr)\r
index d3d596b..03c12a2 100644 (file)
@@ -30,6 +30,7 @@ import (
 const (
        CONNECTED_RAW_EVENT    = "CONNECTED"
        DISCONNECTED_RAW_EVENT = "DISCONNECTED"
+       UNDER_RESET_RAW_EVENT  = "UNDER_RESET"
        NONE_RAW_EVENT         = "NONE"
 )
 
@@ -134,6 +135,8 @@ func (m *RanConnectStatusChangeManager) setEvent(nodebInfo *entities.NodebInfo,
                event = nodebInfo.RanName + "_" + CONNECTED_RAW_EVENT
        } else if currentConnectionStatus == entities.ConnectionStatus_CONNECTED && nextState != entities.ConnectionStatus_CONNECTED {
                event = nodebInfo.RanName + "_" + DISCONNECTED_RAW_EVENT
+       } else if nextState == entities.ConnectionStatus_UNDER_RESET {
+               event = nodebInfo.RanName + "_" + UNDER_RESET_RAW_EVENT
        } else {
                event = NONE_RAW_EVENT
        }