From 1bf79dda6f002618a7e00fa95b54914d5a273fa1 Mon Sep 17 00:00:00 2001 From: Amichai Date: Thu, 16 Jul 2020 21:15:32 +0000 Subject: [PATCH] [RIC-433] Add unit test coverage, tag incremented to 5.2.17 Change-Id: Id5596a2d5bbbcac8b5e3273b7b486c913b22877d Signed-off-by: Amichai --- E2Manager/container-tag.yaml | 2 +- E2Manager/controllers/nodeb_controller_test.go | 48 +++++++++++++--- E2Manager/go.mod | 6 +- E2Manager/go.sum | 6 ++ .../httpmsghandlers/delete_enb_request_handler.go | 14 +++-- .../delete_enb_request_handler_test.go | 66 ++++++++++++++++++---- E2Manager/managers/ran_list_manager.go | 21 ++++++- .../incoming_request_handler_provider.go | 2 +- E2Manager/rNibWriter/rNibWriter_test.go | 30 ++++++++++ E2Manager/services/rnib_data_service.go | 12 ++++ 10 files changed, 178 insertions(+), 29 deletions(-) diff --git a/E2Manager/container-tag.yaml b/E2Manager/container-tag.yaml index 06fe115..b673452 100644 --- a/E2Manager/container-tag.yaml +++ b/E2Manager/container-tag.yaml @@ -1,4 +1,4 @@ # The Jenkins job requires a tag to build the Docker image. # Global-JJB script assumes this file is in the repo root. --- -tag: 5.2.16 +tag: 5.2.17 diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index eb7b917..9730320 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -327,6 +327,37 @@ func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager, ranListManager } +func setupDeleteEnbControllerTest(t *testing.T, preAddNbIdentity bool) (*NodebController, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *entities.NbIdentity) { + log := initLog(t) + config := configuration.ParseConfiguration() + + rmrMessengerMock := &mocks.RmrMessengerMock{} + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + rmrSender := getRmrSender(rmrMessengerMock, log) + e2tInstancesManager := &mocks.E2TInstancesManagerMock{} + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + ranListManager := managers.NewRanListManager(log, rnibDataService) + var nbIdentity *entities.NbIdentity + if preAddNbIdentity { + nbIdentity = &entities.NbIdentity{InventoryName: RanName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}} + writerMock.On("AddNbIdentity", entities.Node_ENB, nbIdentity).Return(nil) + ranListManager.AddNbIdentity(entities.Node_ENB, nbIdentity) + } + ranAlarmService := &mocks.RanAlarmServiceMock{} + ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) + nodebValidator := managers.NewNodebValidator() + updateEnbManager := managers.NewUpdateEnbManager(log, rnibDataService, nodebValidator) + + handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager, ranListManager) + controller := NewNodebController(log, handlerProvider) + return controller, readerMock, writerMock, nbIdentity +} + func TestShutdownHandlerRnibError(t *testing.T) { controller, _, _, _, e2tInstancesManagerMock, _ := setupControllerTest(t) e2tInstancesManagerMock.On("GetE2TAddresses").Return([]string{}, e2managererrors.NewRnibDbError()) @@ -566,11 +597,14 @@ func controllerAddEnbTestExecuter(t *testing.T, context *controllerAddEnbTestCon assertControllerAddEnb(t, context, writer, readerMock, writerMock) } -func controllerDeleteEnbTestExecuter(t *testing.T, context *controllerDeleteEnbTestContext) { - controller, readerMock, writerMock, _, _, _ := setupControllerTest(t) +func controllerDeleteEnbTestExecuter(t *testing.T, context *controllerDeleteEnbTestContext, preAddNbIdentity bool) { + controller, readerMock, writerMock, nbIdentity := setupDeleteEnbControllerTest(t, preAddNbIdentity) readerMock.On("GetNodeb", RanName).Return(context.getNodebInfoResult.nodebInfo, context.getNodebInfoResult.rnibError) if context.getNodebInfoResult.rnibError == nil && context.getNodebInfoResult.nodebInfo.GetNodeType() == entities.Node_ENB { writerMock.On("RemoveEnb", context.getNodebInfoResult.nodebInfo).Return(nil) + if preAddNbIdentity { + writerMock.On("RemoveNbIdentity", entities.Node_ENB, nbIdentity).Return(nil) + } } writer := httptest.NewRecorder() r, _ := http.NewRequest(http.MethodDelete, AddEnbUrl+"/"+RanName, nil) @@ -1250,7 +1284,7 @@ func TestControllerDeleteEnbGetNodebInternalError(t *testing.T) { expectedJsonResponse: RnibErrorJson, } - controllerDeleteEnbTestExecuter(t, &context) + controllerDeleteEnbTestExecuter(t, &context, false) } func TestControllerDeleteEnbNodebNotExistsFailure(t *testing.T) { @@ -1263,7 +1297,7 @@ func TestControllerDeleteEnbNodebNotExistsFailure(t *testing.T) { expectedJsonResponse: ResourceNotFoundJson, } - controllerDeleteEnbTestExecuter(t, &context) + controllerDeleteEnbTestExecuter(t, &context, false) } func TestControllerDeleteEnbNodebNotEnb(t *testing.T) { @@ -1276,19 +1310,19 @@ func TestControllerDeleteEnbNodebNotEnb(t *testing.T) { expectedJsonResponse: ValidationFailureJson, } - controllerDeleteEnbTestExecuter(t, &context) + controllerDeleteEnbTestExecuter(t, &context, false) } func TestControllerDeleteEnbSuccess(t *testing.T) { context := controllerDeleteEnbTestContext{ getNodebInfoResult: &getNodebInfoResult{ - nodebInfo: &entities.NodebInfo{RanName: "ran1", NodeType: entities.Node_ENB, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}, + nodebInfo: &entities.NodebInfo{RanName: RanName, NodeType: entities.Node_ENB, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}, rnibError: nil, }, expectedStatusCode: http.StatusNoContent, expectedJsonResponse: "", } - controllerDeleteEnbTestExecuter(t, &context) + controllerDeleteEnbTestExecuter(t, &context, true) } func getJsonRequestAsBuffer(requestJson map[string]interface{}) *bytes.Buffer { diff --git a/E2Manager/go.mod b/E2Manager/go.mod index adf931d..9cf5006 100644 --- a/E2Manager/go.mod +++ b/E2Manager/go.mod @@ -1,9 +1,9 @@ module e2mgr require ( - gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.45 - gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.45 - gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.45 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.46 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.46 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.46 gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.5.2 github.com/golang/protobuf v1.4.2 github.com/gorilla/mux v1.7.0 diff --git a/E2Manager/go.sum b/E2Manager/go.sum index 7a519c9..62ac537 100644 --- a/E2Manager/go.sum +++ b/E2Manager/go.sum @@ -3,14 +3,20 @@ gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.44 h1:rda7Ubx7ZW579wWNd gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.44/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.45 h1:2zwckksGVcIkXJeymAPvtyaO3bb+8UCyRENY8/q1yZs= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.45/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.46 h1:mUn8CsJYcliKK35Xm7xMjkrTnhksZ9AinPkTu44ABKA= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.46/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.44 h1:/Kye3C5ZAJkK1ux1mNrQEE4Jph537EV6DJ1qOCtKPqQ= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.44/go.mod h1:YaQ+XEI4PcAoISxp9wUpUr2TP0J7JihpQTD0G1Lpd4A= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.45 h1:YuNGHpf6UsHkvi4qqxbE6ijuceRqoz5+qdWe6nUTNIU= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.45/go.mod h1:YaQ+XEI4PcAoISxp9wUpUr2TP0J7JihpQTD0G1Lpd4A= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.46 h1:bd1nDjy20ia7vUWw3Dqvxf9shMSAtJOObSotr4iwGxM= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.46/go.mod h1:YaQ+XEI4PcAoISxp9wUpUr2TP0J7JihpQTD0G1Lpd4A= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.44 h1:VCOBMhSZJE3hZJLA+eJOZCrCoifCDi7ZmR3aMdV5mP8= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.44/go.mod h1:eRI+ExoQG8rEzexqRtW5Shn2tT/7w9l+WqaiPZqOsEA= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.45 h1:p+yPMhomeiQy+qermMGzBhwh/i9T2gaL8cWOT3V5DG4= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.45/go.mod h1:3p1bZS4GA2MGVg5CHZEnMlCuO7KXpfW3Y38HTAbo6/4= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.46 h1:GlwpSMYc0wuARKfiEfF0p0ttsinWhmvKVpFZknGor24= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.46/go.mod h1:O83fcA6x8B7tPBgr2ihBXsfRkcL0m3NWYMLsD/gvGWU= gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2 h1:UK7awyRKIkVdokWvvkYvazlg3EWIfMnIqCcJxTnLlDA= gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2/go.mod h1:y2WhrCvdLkAKdH+ySdHSOSehACJkTMyZghCGVcqoZzc= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= diff --git a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go index c669dd1..c346bb6 100644 --- a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go @@ -22,6 +22,7 @@ package httpmsghandlers import ( "e2mgr/e2managererrors" "e2mgr/logger" + "e2mgr/managers" "e2mgr/models" "e2mgr/services" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" @@ -31,12 +32,14 @@ import ( type DeleteEnbRequestHandler struct { logger *logger.Logger rNibDataService services.RNibDataService + ranListManager managers.RanListManager } -func NewDeleteEnbRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService) *DeleteEnbRequestHandler { +func NewDeleteEnbRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService, ranListManager managers.RanListManager) *DeleteEnbRequestHandler { return &DeleteEnbRequestHandler{ logger: logger, rNibDataService: rNibDataService, + ranListManager: ranListManager, } } @@ -64,15 +67,18 @@ func (h *DeleteEnbRequestHandler) Handle(request models.Request) (models.IRespon return nil, e2managererrors.NewRequestValidationError() } - err = h.rNibDataService.RemoveEnb(nodebInfo) - if err != nil { h.logger.Errorf("#DeleteEnbRequestHandler.Handle - RAN name: %s - failed to delete nodeb entity in RNIB. Error: %s", deleteEnbRequest.RanName, err) return nil, e2managererrors.NewRnibDbError() } + err = h.ranListManager.RemoveNbIdentity(entities.Node_ENB, deleteEnbRequest.RanName) + if err != nil { + h.logger.Errorf("#DeleteEnbRequestHandler.Handle - RAN name: %s - failed to delete nbIdentity in RNIB. Error: %s", deleteEnbRequest.RanName, err) + return nil, e2managererrors.NewRnibDbError() + } + h.logger.Infof("#DeleteEnbRequestHandler.Handle - RAN name: %s - deleted successfully.", deleteEnbRequest.RanName) return models.NewNodebResponse(nodebInfo), nil } - diff --git a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go index b039c8b..6734618 100644 --- a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go @@ -22,6 +22,7 @@ package httpmsghandlers import ( "e2mgr/configuration" + "e2mgr/managers" "e2mgr/mocks" "e2mgr/models" "e2mgr/services" @@ -32,20 +33,45 @@ import ( "testing" ) -func setupDeleteEnbRequestHandlerTest(t *testing.T) (*DeleteEnbRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) { +func setupDeleteEnbRequestHandlerTest(t *testing.T, emptyList bool) (*DeleteEnbRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) { log := initLog(t) config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} readerMock := &mocks.RnibReaderMock{} writerMock := &mocks.RnibWriterMock{} rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) - handler := NewDeleteEnbRequestHandler(log, rnibDataService) + ranListManager := managers.NewRanListManager(log, rnibDataService) + if !emptyList { + nbIdentity := &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}} + writerMock.On("AddNbIdentity", entities.Node_ENB, nbIdentity).Return(nil) + if err := ranListManager.AddNbIdentity(entities.Node_ENB, nbIdentity); err != nil { + t.Errorf("#setupDeleteEnbRequestHandlerTest - Failed to add nbIdentity prior to DeleteEnb test") + } + } + handler := NewDeleteEnbRequestHandler(log, rnibDataService, ranListManager) return handler, readerMock, writerMock } func TestHandleDeleteEnbSuccess(t *testing.T) { - handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t) + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) - ranName := "test1" + ranName := "ran1" + var rnibError error + nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB} + readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError) + writerMock.On("RemoveEnb", nodebInfo).Return(nil) + writerMock.On("RemoveNbIdentity", entities.Node_ENB, &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}).Return(nil) + result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName}) + assert.Nil(t, err) + assert.NotNil(t, result) + assert.IsType(t, &models.NodebResponse{}, result) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestHandleDeleteEnbSuccessNoEnb(t *testing.T) { + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, true) + + ranName := "ran1" var rnibError error nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB} readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError) @@ -59,9 +85,9 @@ func TestHandleDeleteEnbSuccess(t *testing.T) { } func TestHandleDeleteEnbInternalGetNodebError(t *testing.T) { - handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t) + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) - ranName := "test1" + ranName := "ran1" rnibError := errors.New("for test") var nodebInfo *entities.NodebInfo readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError) @@ -73,9 +99,9 @@ func TestHandleDeleteEnbInternalGetNodebError(t *testing.T) { } func TestHandleDeleteEnbInternalRemoveEnbError(t *testing.T) { - handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t) + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) - ranName := "test1" + ranName := "ran1" rnibError := errors.New("for test") nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB} readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil) @@ -87,10 +113,26 @@ func TestHandleDeleteEnbInternalRemoveEnbError(t *testing.T) { writerMock.AssertExpectations(t) } +func TestHandleDeleteEnbInternalRemoveNbIdentityError(t *testing.T) { + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) + + ranName := "ran1" + rnibError := errors.New("for test") + nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB} + readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil) + writerMock.On("RemoveEnb", nodebInfo).Return(nil) + writerMock.On("RemoveNbIdentity", entities.Node_ENB, &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}).Return(rnibError) + result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName}) + assert.NotNil(t, err) + assert.Nil(t, result) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + func TestHandleDeleteEnbResourceNotFoundError(t *testing.T) { - handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t) + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) - ranName := "test1" + ranName := "ran1" rnibError := common.NewResourceNotFoundError("for test") var nodebInfo *entities.NodebInfo readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError) @@ -102,9 +144,9 @@ func TestHandleDeleteEnbResourceNotFoundError(t *testing.T) { } func TestHandleDeleteEnbNodeTypeNotEnbError(t *testing.T) { - handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t) + handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) - ranName := "test1" + ranName := "ran1" nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_GNB} readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil) result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName}) diff --git a/E2Manager/managers/ran_list_manager.go b/E2Manager/managers/ran_list_manager.go index d6dbd8e..d392e3d 100644 --- a/E2Manager/managers/ran_list_manager.go +++ b/E2Manager/managers/ran_list_manager.go @@ -97,7 +97,26 @@ func (m *ranListManagerInstance) UpdateNbIdentityConnectionStatus(nodeType entit } func (m *ranListManagerInstance) RemoveNbIdentity(nodeType entities.Node_Type, ranName string) error { - //TODO: implement + m.mux.Lock() + defer m.mux.Unlock() + + m.logger.Infof("#ranListManagerInstance.RemoveNbIdentity - RAN name: %s - deleting nodeb identity from memory and db...", ranName) + + nbIdentity, ok := m.nbIdentityMap[ranName] + if !ok { + m.logger.Infof("#ranListManagerInstance.RemoveNbIdentity - RAN name: %s - nodeb identity not found", ranName) + return nil + } + + delete(m.nbIdentityMap, ranName) + + err := m.rnibDataService.RemoveNbIdentity(nodeType, nbIdentity) + if err != nil { + m.logger.Errorf("#ranListManagerInstance.RemoveNbIdentity - RAN name: %s - Failed removing nodeb identity from DB. error: %s", ranName, err) + return err + } + + m.logger.Infof("#ranListManagerInstance.RemoveNbIdentity - RAN name: %s - Successfully deleted nodeb identity", ranName) return nil } diff --git a/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go b/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go index 77128c5..96f7e0e 100644 --- a/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go +++ b/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go @@ -72,7 +72,7 @@ func initRequestHandlerMap(logger *logger.Logger, rmrSender *rmrsender.RmrSender UpdateGnbRequest: httpmsghandlers.NewUpdateGnbRequestHandler(logger, rNibDataService), UpdateEnbRequest: httpmsghandlers.NewUpdateNodebRequestHandler(logger, rNibDataService, updateEnbManager), AddEnbRequest: httpmsghandlers.NewAddEnbRequestHandler(logger, rNibDataService, nodebValidator, ranListManager), - DeleteEnbRequest: httpmsghandlers.NewDeleteEnbRequestHandler(logger, rNibDataService), + DeleteEnbRequest: httpmsghandlers.NewDeleteEnbRequestHandler(logger, rNibDataService, ranListManager), } } diff --git a/E2Manager/rNibWriter/rNibWriter_test.go b/E2Manager/rNibWriter/rNibWriter_test.go index 3dadce8..75240fa 100644 --- a/E2Manager/rNibWriter/rNibWriter_test.go +++ b/E2Manager/rNibWriter/rNibWriter_test.go @@ -1045,6 +1045,36 @@ func TestRemoveEnbRemoveAndPublishError(t *testing.T) { sdlInstanceMock.AssertExpectations(t) } +func TestRemoveNbIdentitySuccess(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nbIdentity := &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}} + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#TestRemoveNbIdentitySuccess - failed to Marshal NbIdentity") + } + + sdlInstanceMock.On("RemoveMember", entities.Node_ENB.String(), []interface{}{nbIdData}).Return(nil) + + rNibErr := w.RemoveNbIdentity(entities.Node_ENB, nbIdentity) + assert.Nil(t, rNibErr) + sdlInstanceMock.AssertExpectations(t) +} + +func TestRemoveNbIdentityError(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nbIdentity := &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}} + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#TestRemoveNbIdentitySuccess - failed to Marshal NbIdentity") + } + + sdlInstanceMock.On("RemoveMember", entities.Node_ENB.String(), []interface{}{nbIdData}).Return(fmt.Errorf("for test")) + + rNibErr := w.RemoveNbIdentity(entities.Node_ENB, nbIdentity) + assert.NotNil(t, rNibErr) + sdlInstanceMock.AssertExpectations(t) +} + //Integration tests // //func TestSaveEnbGnbInteg(t *testing.T){ diff --git a/E2Manager/services/rnib_data_service.go b/E2Manager/services/rnib_data_service.go index f4e0b5a..7125271 100644 --- a/E2Manager/services/rnib_data_service.go +++ b/E2Manager/services/rnib_data_service.go @@ -56,6 +56,7 @@ type RNibDataService interface { RemoveServedCells(inventoryName string, servedCells []*entities.ServedCellInfo) error UpdateEnb(nodebInfo *entities.NodebInfo, servedCells []*entities.ServedCellInfo) error AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error + RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error } type rNibDataService struct { @@ -87,6 +88,17 @@ func (w *rNibDataService) AddNbIdentity(nodeType entities.Node_Type, nbIdentity return err } +func (w *rNibDataService) RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error{ + w.logger.Infof("#RnibDataService.RemoveNbIdentity - nbIdentity: %s", nbIdentity) + + err := w.retry("RemoveNbIdentity", func() (err error) { + err = w.rnibWriter.RemoveNbIdentity(nodeType, nbIdentity) + return + }) + + return err +} + func (w *rNibDataService) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { err := w.retry("RemoveServedNrCells", func() (err error) { err = w.rnibWriter.RemoveServedNrCells(inventoryName, servedNrCells) -- 2.16.6