From: Amichai Date: Sun, 29 Dec 2019 15:48:44 +0000 (+0200) Subject: [RICPLT-2527] Fix according to acceptance comments X-Git-Tag: R5_RC~138 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F21%2F2121%2F1;p=ric-plt%2Fe2mgr.git [RICPLT-2527] Fix according to acceptance comments Change-Id: I7b791a984e4cdc0d8db4d243c970038f6d75bd01 Signed-off-by: Amichai --- diff --git a/Automation/Tests/Unhappy/Setup_Request_HttpResponse503.robot b/Automation/Tests/Unhappy/Setup_Request_HttpResponse503.robot index 9fe7071..0e7e9c4 100644 --- a/Automation/Tests/Unhappy/Setup_Request_HttpResponse503.robot +++ b/Automation/Tests/Unhappy/Setup_Request_HttpResponse503.robot @@ -24,11 +24,12 @@ Suite Setup Prepare Enviorment Resource ../Resource/Keywords.robot Resource ../Resource/resource.robot +Library ../Scripts/e2mdbscripts.py Library REST ${url} Suite Teardown Start RoutingManager Simulator *** Test Cases *** -ENDC-setup - 500 http - 500 RNIB error +ENDC-setup - 503 http - 511 No Routing Manager Available Stop RoutingManager Simulator Set Headers ${header} POST /v1/nodeb/x2-setup ${json} @@ -36,4 +37,6 @@ ENDC-setup - 500 http - 500 RNIB error Integer response body errorCode 511 String response body errorMessage No Routing Manager Available - +Verify RAN is NOT associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} == False diff --git a/E2Manager/clients/routing_manager_client.go b/E2Manager/clients/routing_manager_client.go index 52e9250..5257d04 100644 --- a/E2Manager/clients/routing_manager_client.go +++ b/E2Manager/clients/routing_manager_client.go @@ -95,7 +95,7 @@ func (c *RoutingManagerClient) PostMessage(data interface{}, url string) error { } body := bytes.NewBuffer(marshaled) - c.logger.Infof("[E2M -> Routing Manager] #RoutingManagerClient.PostMessage - url: %s, request body: %+v", url, body) + c.logger.Infof("[E2 Manager -> Routing Manager] #RoutingManagerClient.PostMessage - url: %s, request body: %+v", url, body) resp, err := c.httpClient.Post(url, "application/json", body) @@ -107,11 +107,11 @@ func (c *RoutingManagerClient) PostMessage(data interface{}, url string) error { defer resp.Body.Close() if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices { - c.logger.Infof("[Routing Manager -> E2M] #RoutingManagerClient.PostMessage - success. http status code: %d", resp.StatusCode) + c.logger.Infof("[Routing Manager -> E2 Manager] #RoutingManagerClient.PostMessage - success. http status code: %d", resp.StatusCode) return nil } - c.logger.Errorf("[Routing Manager -> E2M] #RoutingManagerClient.PostMessage - failure. http status code: %d", resp.StatusCode) + c.logger.Errorf("[Routing Manager -> E2 Manager] #RoutingManagerClient.PostMessage - failure. http status code: %d", resp.StatusCode) return e2managererrors.NewRoutingManagerError() } diff --git a/E2Manager/handlers/httpmsghandlers/setup_request_handler.go b/E2Manager/handlers/httpmsghandlers/setup_request_handler.go index c5ce648..51e579b 100644 --- a/E2Manager/handlers/httpmsghandlers/setup_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/setup_request_handler.go @@ -94,7 +94,7 @@ func (h *SetupRequestHandler) Handle(request models.Request) (models.IResponse, return nil, result } -func createInitialNodeInfo(requestDetails *models.SetupRequest, protocol entities.E2ApplicationProtocol, e2tAddress string) (*entities.NodebInfo, *entities.NbIdentity) { +func createInitialNodeInfo(requestDetails *models.SetupRequest, protocol entities.E2ApplicationProtocol) (*entities.NodebInfo, *entities.NbIdentity) { nodebInfo := &entities.NodebInfo{ Ip: requestDetails.RanIp, @@ -133,7 +133,7 @@ func (h *SetupRequestHandler) connectExistingRanWithoutAssociatedE2TAddress(node return err } - err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo.RanName) + err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo) if err != nil { h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed associating ran to e2t address %s. error: %s", nodebInfo.RanName, e2tAddress, err) @@ -174,7 +174,7 @@ func (h *SetupRequestHandler) connectNewRan(request *models.SetupRequest, protoc return err } - nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol, e2tAddress) + nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol) err = h.rNibDataService.SaveNodeb(nodebIdentity, nodebInfo) @@ -185,7 +185,7 @@ func (h *SetupRequestHandler) connectNewRan(request *models.SetupRequest, protoc h.logger.Infof("#SetupRequestHandler.connectNewRan - RAN name: %s - initial nodeb entity was saved to rNib", request.RanName) - err = h.e2tAssociationManager.AssociateRan(e2tAddress, request.RanName) + err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo) if err != nil { h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed associating ran to e2t address %s. error: %s", request.RanName, e2tAddress, err) diff --git a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go index e8a6736..b27b54e 100644 --- a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go @@ -169,10 +169,15 @@ func TestSetupNewRanAssociateRanFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) - nbIdentity := &entities.NbIdentity{InventoryName: RanName} + e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError()) + setupRequest := &models.SetupRequest{"127.0.0.1", 8080, RanName,} + nb, nbIdentity := createInitialNodeInfo(setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, mock.Anything).Return(nil) - _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) - assert.IsType(t, &common.ResourceNotFoundError{}, err) + nb.AssociatedE2TInstanceAddress = E2TAddress + nb.ConnectionAttempts = 0 + writerMock.On("UpdateNodebInfo", nb).Return(nil) + _, err := handler.Handle(*setupRequest) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) writerMock.AssertExpectations(t) readerMock.AssertExpectations(t) e2tInstancesManagerMock.AssertExpectations(t) @@ -186,7 +191,7 @@ func TestSetupNewRanSaveNodebFailure(t *testing.T) { e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf(""))) _, err := handler.Handle(setupRequest) assert.IsType(t, &e2managererrors.RnibDbError{}, err) @@ -197,13 +202,19 @@ func TestSetupNewRanSetupDbError(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) - e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil) + e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError()) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError()) + updatedNb := *nodebInfo + updatedNb.ConnectionAttempts = 0 + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) _, err := handler.Handle(setupRequest) - assert.IsType(t, &common.ResourceNotFoundError{}, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) } func TestSetupNewRanSetupRmrError(t *testing.T) { @@ -212,11 +223,15 @@ func TestSetupNewRanSetupRmrError(t *testing.T) { e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError()) + updatedNb := *nodebInfo + updatedNb.ConnectionAttempts = 0 + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError()) _, err := handler.Handle(setupRequest) - assert.IsType(t, /* &e2managererrors.RmrError{} */ &common.ResourceNotFoundError{}, err) + assert.IsType(t, &e2managererrors.RmrError{}, err) } func TestSetupNewRanSetupSuccess(t *testing.T) { @@ -225,12 +240,15 @@ func TestSetupNewRanSetupSuccess(t *testing.T) { e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil) + updatedNb := *nodebInfo + updatedNb.ConnectionAttempts = 0 + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil) _, err := handler.Handle(setupRequest) - //assert.Nil(t, err) - assert.IsType(t, /* &e2managererrors.RnibDbError{} */ &common.ResourceNotFoundError{}, err) + assert.Nil(t, err) } func TestX2SetupExistingRanShuttingDown(t *testing.T) { diff --git a/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go b/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go index 1220c79..836c02a 100644 --- a/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go @@ -80,10 +80,13 @@ func setupLostConnectionHandlerTestWithRealReconnectionManager(t *testing.T, isS origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 20, AssociatedE2TInstanceAddress: e2tAddress} var rnibErr error readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) - updatedNodebInfo := *origNodebInfo - updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED - updatedNodebInfo.AssociatedE2TInstanceAddress = "" - writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) e2tInstance := &entities.E2TInstance{Address: e2tAddress, AssociatedRanList:[]string{ranName}} readerMock.On("GetE2TInstance", e2tAddress).Return(e2tInstance, nil) e2tInstanceToSave := *e2tInstance diff --git a/E2Manager/managers/e2t_association_manager.go b/E2Manager/managers/e2t_association_manager.go index 78ae6d7..e313c19 100644 --- a/E2Manager/managers/e2t_association_manager.go +++ b/E2Manager/managers/e2t_association_manager.go @@ -23,6 +23,7 @@ import ( "e2mgr/clients" "e2mgr/logger" "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" ) type E2TAssociationManager struct { @@ -41,7 +42,8 @@ func NewE2TAssociationManager(logger *logger.Logger, rnibDataService services.RN } } -func (m *E2TAssociationManager) AssociateRan(e2tAddress string, ranName string) error { +func (m *E2TAssociationManager) AssociateRan(e2tAddress string, nodebInfo *entities.NodebInfo) error { + ranName := nodebInfo.RanName m.logger.Infof("#E2TAssociationManager.AssociateRan - Associating RAN %s to E2T Instance address: %s", ranName, e2tAddress) err := m.rmClient.AssociateRanToE2TInstance(e2tAddress, ranName) @@ -50,16 +52,9 @@ func (m *E2TAssociationManager) AssociateRan(e2tAddress string, ranName string) return err } - nodebInfo, rnibErr := m.rnibDataService.GetNodeb(ranName) - - if rnibErr != nil { - m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed fetching RAN from rNib. Error: %s", ranName, rnibErr) - return rnibErr - } - nodebInfo.AssociatedE2TInstanceAddress = e2tAddress nodebInfo.ConnectionAttempts = 0 - rnibErr = m.rnibDataService.UpdateNodebInfo(nodebInfo) + rnibErr := m.rnibDataService.UpdateNodebInfo(nodebInfo) if rnibErr != nil { m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed to update RAN.AssociatedE2TInstanceAddress in rNib. Error: %s", ranName, rnibErr) return rnibErr diff --git a/E2Manager/managers/e2t_association_manager_test.go b/E2Manager/managers/e2t_association_manager_test.go index cdaed68..fa13848 100644 --- a/E2Manager/managers/e2t_association_manager_test.go +++ b/E2Manager/managers/e2t_association_manager_test.go @@ -72,7 +72,6 @@ func TestAssociateRanSuccess(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} - readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress @@ -83,7 +82,7 @@ func TestAssociateRanSuccess(t *testing.T) { updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName) writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) - err := manager.AssociateRan(E2TAddress, RanName) + err := manager.AssociateRan(E2TAddress, nb) assert.Nil(t, err) readerMock.AssertExpectations(t) @@ -95,7 +94,8 @@ func TestAssociateRanRoutingManagerError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, false) - err := manager.AssociateRan(E2TAddress, RanName) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) @@ -104,32 +104,16 @@ func TestAssociateRanRoutingManagerError(t *testing.T) { httpClientMock.AssertExpectations(t) } -func TestAssociateRanGetNodebError(t *testing.T) { - manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) - var nb *entities.NodebInfo - readerMock.On("GetNodeb", RanName).Return(nb, e2managererrors.NewRnibDbError()) - - err := manager.AssociateRan(E2TAddress, RanName) - - assert.NotNil(t, err) - assert.IsType(t, &e2managererrors.RnibDbError{}, err) - readerMock.AssertExpectations(t) - writerMock.AssertExpectations(t) - httpClientMock.AssertExpectations(t) -} - func TestAssociateRanUpdateNodebError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} - readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError()) - err := manager.AssociateRan(E2TAddress, RanName) + err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RnibDbError{}, err) @@ -142,7 +126,6 @@ func TestAssociateRanGetE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} - readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress @@ -150,7 +133,7 @@ func TestAssociateRanGetE2tInstanceError(t *testing.T) { var e2tInstance *entities.E2TInstance readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test")) - err := manager.AssociateRan(E2TAddress, RanName) + err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RnibDbError{}, err) @@ -163,7 +146,6 @@ func TestAssociateRanSaveE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} - readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress @@ -174,7 +156,7 @@ func TestAssociateRanSaveE2tInstanceError(t *testing.T) { updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName) writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test")) - err := manager.AssociateRan(E2TAddress, RanName) + err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RnibDbError{}, err) diff --git a/E2Manager/managers/ran_reconnection_manager.go b/E2Manager/managers/ran_reconnection_manager.go index 530131f..b733142 100644 --- a/E2Manager/managers/ran_reconnection_manager.go +++ b/E2Manager/managers/ran_reconnection_manager.go @@ -94,14 +94,10 @@ func (m *RanReconnectionManager) canReconnectRan(nodebInfo *entities.NodebInfo) int(nodebInfo.GetConnectionAttempts()) < m.config.MaxConnectionAttempts } -func (m *RanReconnectionManager) updateNodebInfo(nodebInfo *entities.NodebInfo, connectionStatus entities.ConnectionStatus, resetE2tAddress bool) error { +func (m *RanReconnectionManager) updateNodebInfo(nodebInfo *entities.NodebInfo, connectionStatus entities.ConnectionStatus) error { nodebInfo.ConnectionStatus = connectionStatus; - if resetE2tAddress { - nodebInfo.AssociatedE2TInstanceAddress = "" - } - err := m.rnibDataService.UpdateNodebInfo(nodebInfo) if err != nil { @@ -123,12 +119,12 @@ func (m *RanReconnectionManager) updateUnconnectableRan(nodebInfo *entities.Node if connectionStatus == entities.ConnectionStatus_SHUTTING_DOWN { m.logger.Warnf("#RanReconnectionManager.updateUnconnectableRan - RAN name: %s - Cannot reconnect RAN. Reason: connection status is SHUTTING_DOWN", nodebInfo.RanName) - return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_SHUT_DOWN, false) + return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_SHUT_DOWN) } if m.isRanExceededConnectionAttempts(nodebInfo) { m.logger.Warnf("#RanReconnectionManager.updateUnconnectableRan - RAN name: %s - Cannot reconnect RAN. Reason: RAN's connection attempts exceeded the limit (%d)", nodebInfo.RanName, m.config.MaxConnectionAttempts) - return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_DISCONNECTED, true) + return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_DISCONNECTED) } return nil diff --git a/E2Manager/managers/ran_reconnection_manager_test.go b/E2Manager/managers/ran_reconnection_manager_test.go index c4c30d6..7927d0c 100644 --- a/E2Manager/managers/ran_reconnection_manager_test.go +++ b/E2Manager/managers/ran_reconnection_manager_test.go @@ -108,10 +108,13 @@ func TestConnectingRanWithMaxAttemptsReconnectionDissociateSucceeds(t *testing.T origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 20, AssociatedE2TInstanceAddress: E2TAddress} var rnibErr error readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) - updatedNodebInfo := *origNodebInfo - updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED - updatedNodebInfo.AssociatedE2TInstanceAddress = "" - writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) e2tInstance := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:[]string{ranName}} readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) e2tInstanceToSave := * e2tInstance @@ -130,10 +133,13 @@ func TestConnectingRanWithMaxAttemptsReconnectionDissociateFails(t *testing.T) { origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 20, AssociatedE2TInstanceAddress: e2tAddress} var rnibErr error readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) - updatedNodebInfo := *origNodebInfo - updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED - updatedNodebInfo.AssociatedE2TInstanceAddress = "" - writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) e2tInstance := &entities.E2TInstance{Address:e2tAddress, AssociatedRanList:[]string{ranName}} readerMock.On("GetE2TInstance",e2tAddress).Return(e2tInstance, common.NewInternalError(errors.New("Error"))) err := ranReconnectionManager.ReconnectRan(ranName)