From dc8932a553fabccf33b5cbb4e37084362493dbcf Mon Sep 17 00:00:00 2001 From: idanshal Date: Tue, 14 Jul 2020 07:31:02 +0000 Subject: [PATCH] [RIC-431] REDESIGN - Add RanListManager methods | Add/Update RnibWriter methods Change-Id: I3d567a5098c45d492020388891e351fa9e8e25fd Signed-off-by: idanshal --- E2Manager/app/main.go | 11 +- E2Manager/container-tag.yaml | 2 +- E2Manager/controllers/e2t_controller_test.go | 2 +- E2Manager/controllers/nodeb_controller_test.go | 6 +- E2Manager/go.mod | 6 +- E2Manager/go.sum | 6 + .../httpmsghandlers/add_enb_request_handler.go | 15 +- .../delete_all_request_handler_test.go | 2 +- .../e2_setup_request_notification_handler.go | 19 +-- .../e2_setup_request_notification_handler_test.go | 17 +-- .../e2_term_init_notification_handler_test.go | 2 +- .../ran_lost_connection_handler_test.go | 2 +- .../setup_response_notification_handler.go | 2 +- .../setup_response_notification_handler_test.go | 16 +-- E2Manager/managers/e2t_association_manager_test.go | 2 +- E2Manager/managers/e2t_shutdown_manager_test.go | 2 +- .../notification_manager_test.go | 2 +- .../managers/ran_disconnection_manager_test.go | 2 +- E2Manager/managers/ran_list_manager.go | 73 +++++++++- E2Manager/mocks/ran_list_manager_mock.go | 28 +++- E2Manager/mocks/rnibWriterMock.go | 15 +- .../incoming_request_handler_provider_test.go | 2 +- .../notification_handler_provider_test.go | 2 +- E2Manager/rNibWriter/rNibWriter.go | 83 ++++------- E2Manager/rNibWriter/rNibWriter_test.go | 156 +++++++-------------- .../services/rmrreceiver/rmr_receiver_test.go | 2 +- E2Manager/services/rnib_data_service.go | 40 ++++-- E2Manager/services/rnib_data_service_test.go | 45 ++---- 28 files changed, 293 insertions(+), 269 deletions(-) diff --git a/E2Manager/app/main.go b/E2Manager/app/main.go index dd30907..109a0da 100644 --- a/E2Manager/app/main.go +++ b/E2Manager/app/main.go @@ -54,12 +54,21 @@ func main() { sdl := sdlgo.NewSdlInstance("e2Manager", db) defer sdl.Close() rnibDataService := services.NewRnibDataService(logger, config, reader.GetRNibReader(sdl), rNibWriter.GetRNibWriter(sdl, config.RnibWriter)) + + ranListManager := managers.NewRanListManager(logger, rnibDataService) + + err = ranListManager.InitNbIdentityMap() + + if err != nil { + logger.Errorf("#app.main - quit") + os.Exit(1) + } + var msgImpl *rmrCgo.Context rmrMessenger := msgImpl.Init("tcp:"+strconv.Itoa(config.Rmr.Port), config.Rmr.MaxMsgSize, 0, logger) rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) routingManagerClient := clients.NewRoutingManagerClient(logger, config, clients.NewHttpClient()) - ranListManager := managers.NewRanListManager(logger) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/container-tag.yaml b/E2Manager/container-tag.yaml index e68769b..46e43c8 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.12 +tag: 5.2.13 diff --git a/E2Manager/controllers/e2t_controller_test.go b/E2Manager/controllers/e2t_controller_test.go index 5db1832..872bb62 100644 --- a/E2Manager/controllers/e2t_controller_test.go +++ b/E2Manager/controllers/e2t_controller_test.go @@ -55,7 +55,7 @@ func setupE2TControllerTest(t *testing.T) (*E2TController, *mocks.RnibReaderMock rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) - ranListManager := managers.NewRanListManager(log) + ranListManager := managers.NewRanListManager(log, rnibDataService) ranAlarmService := services.NewRanAlarmService(log, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService,ranListManager, ranAlarmService) nodebValidator := managers.NewNodebValidator() diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index 79df8ce..a836b5c 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -533,9 +533,9 @@ func activateControllerAddEnbMocks(context *controllerAddEnbTestContext, readerM ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, } - nbIdentity := entities.NbIdentity{InventoryName: addEnbRequest.RanName, GlobalNbId: addEnbRequest.GlobalNbId} - - writerMock.On("SaveNodeb", &nbIdentity, &nodebInfo).Return(context.saveNodebParams.err) + //nbIdentity := entities.NbIdentity{InventoryName: addEnbRequest.RanName, GlobalNbId: addEnbRequest.GlobalNbId} + writerMock.On("SaveNodeb", &nodebInfo).Return(context.saveNodebParams.err) + // TODO: add writerMock.On("AddNbIdentity") } } diff --git a/E2Manager/go.mod b/E2Manager/go.mod index a814482..adf931d 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.44 - gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.44 - gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.44 + 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/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 4e490fb..7a519c9 100644 --- a/E2Manager/go.sum +++ b/E2Manager/go.sum @@ -1,10 +1,16 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.44 h1:rda7Ubx7ZW579wWNduk/MD/9Fl7fsKo08KE+2ngIkZM= 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/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/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/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/add_enb_request_handler.go b/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go index e620d3c..92afb33 100644 --- a/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go @@ -70,16 +70,16 @@ func (h *AddEnbRequestHandler) Handle(request models.Request) (models.IResponse, return nil, e2managererrors.NewRnibDbError() } - nbIdentity := h.createNbIdentity(addEnbRequest) nodebInfo := h.createNodebInfo(addEnbRequest) - - err = h.rNibDataService.SaveNodeb(nbIdentity, nodebInfo) + err = h.rNibDataService.SaveNodeb(nodebInfo) if err != nil { h.logger.Errorf("#AddEnbRequestHandler.Handle - RAN name: %s - failed to save nodeb entity in RNIB. Error: %s", addEnbRequest.RanName, err) return nil, e2managererrors.NewRnibDbError() } + _ = h.createNbIdentity(addEnbRequest) // TODO: add call to ranListManager + return models.NewAddEnbResponse(nodebInfo), nil } @@ -98,12 +98,11 @@ func (h *AddEnbRequestHandler) createNodebInfo(addEnbRequest *models.AddEnbReque } func (h *AddEnbRequestHandler) createNbIdentity(addEnbRequest *models.AddEnbRequest) *entities.NbIdentity { - nbIdentity := entities.NbIdentity{ - GlobalNbId: addEnbRequest.GlobalNbId, - InventoryName: addEnbRequest.RanName, + return &entities.NbIdentity{ + GlobalNbId: addEnbRequest.GlobalNbId, + InventoryName: addEnbRequest.RanName, + ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, } - - return &nbIdentity } func (h *AddEnbRequestHandler) validateRequestBody(addEnbRequest *models.AddEnbRequest) error { diff --git a/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go index f2c5e15..ef9a765 100644 --- a/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go @@ -62,7 +62,7 @@ func setupDeleteAllRequestHandlerTest(t *testing.T) (*DeleteAllRequestHandler, * httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - ranListManager := managers.NewRanListManager(log) + ranListManager := managers.NewRanListManager(log, rnibDataService) ranAlarmService := services.NewRanAlarmService(log, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService,ranListManager, ranAlarmService) diff --git a/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go b/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go index 0b8ce33..fd505de 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go @@ -137,20 +137,15 @@ func (h *E2SetupRequestNotificationHandler) Handle(request *models.NotificationR func (h *E2SetupRequestNotificationHandler) handleNewRan(ranName string, e2tIpAddress string, setupRequest *models.E2SetupRequestMessage) (*entities.NodebInfo, error) { - nodebInfo, err := h.buildNodebInfo(ranName, e2tIpAddress, setupRequest) + nodebInfo := h.buildNodebInfo(ranName, e2tIpAddress, setupRequest) + err := h.rNibDataService.SaveNodeb(nodebInfo) if err != nil { - h.logger.Errorf("#E2SetupRequestNotificationHandler.handleNewRan - RAN name: %s - failed to build nodebInfo entity. Error: %s", ranName, err) + h.logger.Errorf("#E2SetupRequestNotificationHandler.handleNewRan - RAN name: %s - failed saving nodebInfo. Error: %s", ranName, err) return nil, err } - nbIdentity := h.buildNbIdentity(ranName, setupRequest) - err = h.rNibDataService.SaveNodeb(nbIdentity, nodebInfo) - - if err != nil { - h.logger.Errorf("#E2SetupRequestNotificationHandler.handleNewRan - RAN name: %s - failed to save nodebInfo entity. Error: %s", ranName, err) - return nil, err - } + _ = h.buildNbIdentity(ranName, setupRequest) // TODO: add call to ranListManager return nodebInfo, nil } @@ -286,9 +281,7 @@ func normalizeXml(payload []byte) []byte { return []byte(normalized) } -func (h *E2SetupRequestNotificationHandler) buildNodebInfo(ranName string, e2tAddress string, request *models.E2SetupRequestMessage) (*entities.NodebInfo, error) { - - var err error +func (h *E2SetupRequestNotificationHandler) buildNodebInfo(ranName string, e2tAddress string, request *models.E2SetupRequestMessage) *entities.NodebInfo { nodebInfo := &entities.NodebInfo{ AssociatedE2TInstanceAddress: e2tAddress, RanName: ranName, @@ -298,7 +291,7 @@ func (h *E2SetupRequestNotificationHandler) buildNodebInfo(ranName string, e2tAd } h.setGnbFunctions(nodebInfo, request) - return nodebInfo, err + return nodebInfo } func (h *E2SetupRequestNotificationHandler) buildGlobalNbId(setupRequest *models.E2SetupRequestMessage) *entities.GlobalNbId { diff --git a/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go b/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go index 137464b..2e2c693 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go @@ -169,9 +169,9 @@ func TestE2SetupRequestNotificationHandler_HandleNewRanError(t *testing.T) { readerMock.On("GetNodeb", nodebRanName).Return(gnb, common.NewResourceNotFoundError("Not found")) notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xml...)} nodebInfo := getExpectedNodebForNewRan(notificationRequest.Payload) - nbIdentity := &entities.NbIdentity{InventoryName: nodebRanName, GlobalNbId: nodebInfo.GlobalNbId} - writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(errors.New("error"))) - + writerMock.On("SaveNodeb", nodebInfo).Return(common.NewInternalError(errors.New("error"))) + //nbIdentity := &entities.NbIdentity{InventoryName: nodebRanName, GlobalNbId: nodebInfo.GlobalNbId} + // TODO: add writerMock.On("AddNbIdentity") handler.Handle(notificationRequest) readerMock.AssertExpectations(t) @@ -188,8 +188,9 @@ func testE2SetupRequestNotificationHandler_HandleNewRanSuccess(t *testing.T, xml readerMock.On("GetNodeb", nodebRanName).Return(gnb, common.NewResourceNotFoundError("Not found")) notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xml...)} nodebInfo := getExpectedNodebForNewRan(notificationRequest.Payload) - nbIdentity := &entities.NbIdentity{InventoryName: nodebRanName, GlobalNbId: nodebInfo.GlobalNbId} - writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + writerMock.On("SaveNodeb", nodebInfo).Return(nil) + //nbIdentity := &entities.NbIdentity{InventoryName: nodebRanName, GlobalNbId: nodebInfo.GlobalNbId} + // TODO: add writerMock.On("AddNbIdentity") updatedNodebInfo := *nodebInfo updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, nodebRanName+"_CONNECTED").Return(nil) @@ -408,7 +409,7 @@ func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xmlGnb...)} nodebInfo := getExpectedNodebForNewRan(notificationRequest.Payload) - writerMock.On("SaveNodeb", mock.Anything, nodebInfo).Return(nil) + writerMock.On("SaveNodeb", nodebInfo).Return(nil) updatedNodebInfo := *nodebInfo updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, nodebRanName+"_CONNECTED").Return(nil) @@ -451,7 +452,7 @@ func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing. routingManagerClientMock := &mocks.RoutingManagerClientMock{} rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) @@ -520,7 +521,7 @@ func initMocks(t *testing.T) (*E2SetupRequestNotificationHandler, *mocks.RnibRea routingManagerClientMock := &mocks.RoutingManagerClientMock{} rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock, ranConnectStatusChangeManager) diff --git a/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go b/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go index 20e5a73..710503f 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go @@ -88,7 +88,7 @@ func initRanLostConnectionTestWithRealE2tInstanceManager(t *testing.T) (*logger. rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService,ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go b/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go index c9c7366..3a428c1 100644 --- a/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go @@ -55,7 +55,7 @@ func setupLostConnectionHandlerTest(isSuccessfulHttpPost bool) (*RanLostConnecti e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) httpClientMock := &mocks.HttpClientMock{} routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClientMock) - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) diff --git a/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go b/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go index 695a09f..1a7bb45 100644 --- a/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go +++ b/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go @@ -80,7 +80,7 @@ func (h SetupResponseNotificationHandler) Handle(request *models.NotificationReq return } - rnibErr = h.rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + rnibErr = h.rnibDataService.SaveNodeb(nodebInfo) if rnibErr != nil { h.logger.Errorf("#SetupResponseNotificationHandler - RAN name: %s - Error saving RAN to rNib: %v", request.RanName, rnibErr) diff --git a/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go b/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go index 4d3a0ee..b401cbb 100644 --- a/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go @@ -149,7 +149,7 @@ func executeHandleSetupSuccessResponse(t *testing.T, tc setupSuccessResponseTest } testContext.readerMock.On("GetNodeb", RanName).Return(nodebInfo, rnibErr) - testContext.writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(tc.saveNodebMockError) + testContext.writerMock.On("SaveNodeb", mock.Anything).Return(tc.saveNodebMockError) testContext.rmrMessengerMock.On("SendMsg", tc.statusChangeMbuf, true).Return(&rmrCgo.MBuf{}, tc.sendMsgError) handler.Handle(¬ificationRequest) @@ -186,7 +186,7 @@ func executeHandleSetupFailureResponse(t *testing.T, tc setupFailureResponseTest } testContext.readerMock.On("GetNodeb", RanName).Return(nodebInfo, rnibErr) - testContext.writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(tc.saveNodebMockError) + testContext.writerMock.On("SaveNodeb", mock.Anything).Return(tc.saveNodebMockError) handler.Handle(¬ificationRequest) return testContext, nodebInfo @@ -207,7 +207,7 @@ func TestX2SetupResponse(t *testing.T) { testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType) @@ -229,7 +229,7 @@ func TestX2SetupFailureResponse(t *testing.T) { testContext, nodebInfo := executeHandleSetupFailureResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) assert.EqualValues(t, entities.Failure_X2_SETUP_FAILURE, nodebInfo.FailureType) assert.NotNil(t, nodebInfo.SetupFailure) @@ -251,7 +251,7 @@ func TestEndcSetupResponse(t *testing.T) { testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) assert.EqualValues(t, entities.Node_GNB, nodebInfo.NodeType) assert.IsType(t, &entities.NodebInfo_Gnb{}, nodebInfo.Configuration) @@ -273,7 +273,7 @@ func TestEndcSetupFailureResponse(t *testing.T) { testContext, nodebInfo := executeHandleSetupFailureResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) assert.EqualValues(t, entities.Failure_ENDC_X2_SETUP_FAILURE, nodebInfo.FailureType) assert.NotNil(t, nodebInfo.SetupFailure) @@ -309,7 +309,7 @@ func TestSetupResponseSaveNodebFailure(t *testing.T) { testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") } @@ -328,7 +328,7 @@ func TestSetupResponseStatusChangeSendFailure(t *testing.T) { testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) - testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.writerMock.AssertCalled(t, "SaveNodeb", nodebInfo) assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType) diff --git a/E2Manager/managers/e2t_association_manager_test.go b/E2Manager/managers/e2t_association_manager_test.go index 3f8cad9..bc17295 100644 --- a/E2Manager/managers/e2t_association_manager_test.go +++ b/E2Manager/managers/e2t_association_manager_test.go @@ -54,7 +54,7 @@ func initE2TAssociationManagerTest(t *testing.T) (*E2TAssociationManager, *mocks e2tInstancesManager := NewE2TInstancesManager(rnibDataService, log) httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - ranListManager := NewRanListManager(log) + ranListManager := NewRanListManager(log, rnibDataService) ranAlarmService := services.NewRanAlarmService(log, config) ranConnectStatusChangeManager := NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) e2tAssociationManager := NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager) diff --git a/E2Manager/managers/e2t_shutdown_manager_test.go b/E2Manager/managers/e2t_shutdown_manager_test.go index fcf8649..537d153 100644 --- a/E2Manager/managers/e2t_shutdown_manager_test.go +++ b/E2Manager/managers/e2t_shutdown_manager_test.go @@ -56,7 +56,7 @@ func initE2TShutdownManagerTest(t *testing.T) (*E2TShutdownManager, *mocks.RnibR httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - ranListManager := NewRanListManager(log) + ranListManager := NewRanListManager(log, rnibDataService) ranAlarmService := services.NewRanAlarmService(log, config) ranConnectStatusChangeManager := NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) associationManager := NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager) diff --git a/E2Manager/managers/notificationmanager/notification_manager_test.go b/E2Manager/managers/notificationmanager/notification_manager_test.go index 3d73bd3..38631dd 100644 --- a/E2Manager/managers/notificationmanager/notification_manager_test.go +++ b/E2Manager/managers/notificationmanager/notification_manager_test.go @@ -48,7 +48,7 @@ func initNotificationManagerTest(t *testing.T) (*logger.Logger, *mocks.RnibReade rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService,ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/managers/ran_disconnection_manager_test.go b/E2Manager/managers/ran_disconnection_manager_test.go index abc7ffd..3773a55 100644 --- a/E2Manager/managers/ran_disconnection_manager_test.go +++ b/E2Manager/managers/ran_disconnection_manager_test.go @@ -52,7 +52,7 @@ func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RmrMessenge e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger) httpClient := &mocks.HttpClientMock{} routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) - ranListManager := NewRanListManager(logger) + ranListManager := NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := NewRanConnectStatusChangeManager(logger, rnibDataService,ranListManager, ranAlarmService) e2tAssociationManager := NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/managers/ran_list_manager.go b/E2Manager/managers/ran_list_manager.go index 9ad10f2..90864c1 100644 --- a/E2Manager/managers/ran_list_manager.go +++ b/E2Manager/managers/ran_list_manager.go @@ -21,24 +21,89 @@ package managers import ( "e2mgr/logger" + "e2mgr/services" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "sync" ) type ranListManagerInstance struct { - logger *logger.Logger + logger *logger.Logger + rnibDataService services.RNibDataService + mux sync.Mutex + nbIdentityMap map[string]*entities.NbIdentity } type RanListManager interface { - UpdateRanState(nodebInfo *entities.NodebInfo) error + InitNbIdentityMap() error + AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error + UpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, connectionStatus entities.ConnectionStatus) error + RemoveNbIdentity(nodeType entities.Node_Type, ranName string) error + GetNbIdentityList() []*entities.NbIdentity + UpdateRanState(nodebInfo *entities.NodebInfo) error // TODO: replace with UpdateNbIdentityConnectionStatus } -func NewRanListManager(logger *logger.Logger) RanListManager { +func NewRanListManager(logger *logger.Logger, rnibDataService services.RNibDataService) RanListManager { return &ranListManagerInstance{ - logger: logger, + logger: logger, + rnibDataService: rnibDataService, + nbIdentityMap: make(map[string]*entities.NbIdentity), } } +// TODO: replace with UpdateNbIdentityConnectionStatus func (m *ranListManagerInstance) UpdateRanState(nodebInfo *entities.NodebInfo) error { m.logger.Infof("#ranListManagerInstance.UpdateRanState - RAN name: %s - Updating state...", nodebInfo.RanName) return nil } + +func (m *ranListManagerInstance) InitNbIdentityMap() error { + nbIds, err := m.rnibDataService.GetListNodebIds() + + if err != nil { + m.logger.Errorf("#ranListManagerInstance.InitRanList - Failed fetching RAN list from DB. error: %s", err) + return err + } + + for _, v := range nbIds { + m.nbIdentityMap[v.InventoryName] = v + } + + m.logger.Infof("#ranListManagerInstance.InitRanList - Successfully initiated nodeb identity map") + return nil +} + +func (m *ranListManagerInstance) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + m.mux.Lock() + defer m.mux.Unlock() + + m.nbIdentityMap[nbIdentity.InventoryName] = nbIdentity + + err := m.rnibDataService.AddNbIdentity(nodeType, nbIdentity) + + if err != nil { + m.logger.Errorf("#ranListManagerInstance.AddNbIdentity - RAN name: %s - Failed adding nodeb identity to DB. error: %s", nbIdentity.InventoryName, err) + return err + } + + m.logger.Infof("#ranListManagerInstance.AddNbIdentity - RAN name: %s - Successfully added nodeb identity", nbIdentity.InventoryName) + return nil +} + +func (m *ranListManagerInstance) UpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, connectionStatus entities.ConnectionStatus) error { + //TODO: implement + return nil +} + +func (m *ranListManagerInstance) RemoveNbIdentity(nodeType entities.Node_Type, ranName string) error { + //TODO: implement + return nil +} + +func (m *ranListManagerInstance) GetNbIdentityList() []*entities.NbIdentity { + nbIds := make([]*entities.NbIdentity, len(m.nbIdentityMap)) + for _, v := range m.nbIdentityMap { + nbIds = append(nbIds, v) + } + + return nbIds +} diff --git a/E2Manager/mocks/ran_list_manager_mock.go b/E2Manager/mocks/ran_list_manager_mock.go index 6df5c4f..9606070 100644 --- a/E2Manager/mocks/ran_list_manager_mock.go +++ b/E2Manager/mocks/ran_list_manager_mock.go @@ -28,8 +28,34 @@ type RanListManagerMock struct { mock.Mock } +// TODO: remove after replaced with UpdateNbIdentityConnectionStatus func (m *RanListManagerMock) UpdateRanState(nodebInfo *entities.NodebInfo) error { args := m.Called(nodebInfo) return args.Error(0) -} \ No newline at end of file +} + +func (m *RanListManagerMock) InitNbIdentityMap() error { + args := m.Called() + return args.Error(0) +} + +func (m *RanListManagerMock) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + args := m.Called(nodeType, nbIdentity) + return args.Error(0) +} + +func (m *RanListManagerMock) UpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, connectionStatus entities.ConnectionStatus) error { + args := m.Called(nodeType, ranName, connectionStatus) + return args.Error(0) +} + +func (m *RanListManagerMock) RemoveNbIdentity(nodeType entities.Node_Type, ranName string) error { + args := m.Called(nodeType, ranName) + return args.Error(0) +} + +func (m *RanListManagerMock) GetNbIdentityList() []*entities.NbIdentity { + args := m.Called() + return args.Get(0).([]*entities.NbIdentity) +} diff --git a/E2Manager/mocks/rnibWriterMock.go b/E2Manager/mocks/rnibWriterMock.go index f84d845..fa711fb 100644 --- a/E2Manager/mocks/rnibWriterMock.go +++ b/E2Manager/mocks/rnibWriterMock.go @@ -28,8 +28,8 @@ type RnibWriterMock struct { mock.Mock } -func (rnibWriterMock *RnibWriterMock) SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error { - args := rnibWriterMock.Called(nbIdentity, nb) +func (rnibWriterMock *RnibWriterMock) SaveNodeb(nodebInfo *entities.NodebInfo) error { + args := rnibWriterMock.Called(nodebInfo) errArg := args.Get(0) @@ -120,4 +120,13 @@ func (rnibWriterMock *RnibWriterMock) UpdateEnb(nodebInfo *entities.NodebInfo, s args := rnibWriterMock.Called(nodebInfo, servedCells) return args.Error(0) -} \ No newline at end of file +} + +func (rnibWriterMock *RnibWriterMock) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + args := rnibWriterMock.Called(nodeType, nbIdentity) + return args.Error(0) +} +func (rnibWriterMock *RnibWriterMock) RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + args := rnibWriterMock.Called(nodeType, nbIdentity) + return args.Error(0) +} diff --git a/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go b/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go index 5ce3b9c..a0126c5 100644 --- a/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go +++ b/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go @@ -54,7 +54,7 @@ func setupTest(t *testing.T) *IncomingRequestHandlerProvider { e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - ranListManager := managers.NewRanListManager(log) + ranListManager := managers.NewRanListManager(log, rnibDataService) ranAlarmService := services.NewRanAlarmService(log, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) nodebValidator := managers.NewNodebValidator() diff --git a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go index a1410e9..adf2a04 100644 --- a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go +++ b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go @@ -53,7 +53,7 @@ func initTestCase(t *testing.T) (*logger.Logger, *configuration.Configuration, s rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/rNibWriter/rNibWriter.go b/E2Manager/rNibWriter/rNibWriter.go index d874938..4c84d49 100644 --- a/E2Manager/rNibWriter/rNibWriter.go +++ b/E2Manager/rNibWriter/rNibWriter.go @@ -44,7 +44,7 @@ type rNibWriterInstance struct { RNibWriter interface allows saving data to the redis DB */ type RNibWriter interface { - SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error + SaveNodeb(nodebInfo *entities.NodebInfo) error UpdateNodebInfo(nodebInfo *entities.NodebInfo) error SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error SaveE2TInstance(e2tInstance *entities.E2TInstance) error @@ -57,6 +57,8 @@ type RNibWriter interface { RemoveEnb(nodebInfo *entities.NodebInfo) error 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 } /* @@ -67,6 +69,21 @@ func GetRNibWriter(sdl common.ISdlInstance, rnibWriterConfig configuration.RnibW return &rNibWriterInstance{sdl: sdl, rnibWriterConfig: rnibWriterConfig} } +func (w *rNibWriterInstance) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + nbIdData, err := proto.Marshal(nbIdentity) + + if err != nil { + return common.NewInternalError(err) + } + + err = w.sdl.AddMember(nodeType.String(), nbIdData) + + if err != nil { + return common.NewInternalError(err) + } + return nil +} + func (w *rNibWriterInstance) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { cellKeysToRemove := buildServedNRCellKeysToRemove(inventoryName, servedNrCells) @@ -105,23 +122,16 @@ func (w *rNibWriterInstance) SaveGeneralConfiguration(config *entities.GeneralCo /* SaveNodeb saves nodeB entity data in the redis DB according to the specified data model */ -func (w *rNibWriterInstance) SaveNodeb(nbIdentity *entities.NbIdentity, entity *entities.NodebInfo) error { - isNotEmptyIdentity := isNotEmpty(nbIdentity) - - nodeType := entity.GetNodeType() - - if isNotEmptyIdentity && nodeType == entities.Node_UNKNOWN { - return common.NewValidationError(fmt.Sprintf("#rNibWriter.saveNodeB - Unknown responding node type, entity: %v", entity)) - } +func (w *rNibWriterInstance) SaveNodeb(nodebInfo *entities.NodebInfo) error { - data, err := proto.Marshal(entity) + data, err := proto.Marshal(nodebInfo) if err != nil { return common.NewInternalError(err) } var pairs []interface{} - key, rNibErr := common.ValidateAndBuildNodeBNameKey(nbIdentity.InventoryName) + key, rNibErr := common.ValidateAndBuildNodeBNameKey(nodebInfo.RanName) if rNibErr != nil { return rNibErr @@ -129,31 +139,31 @@ func (w *rNibWriterInstance) SaveNodeb(nbIdentity *entities.NbIdentity, entity * pairs = append(pairs, key, data) - if isNotEmptyIdentity { + if nodebInfo.GlobalNbId != nil { - key, rNibErr = common.ValidateAndBuildNodeBIdKey(nodeType.String(), nbIdentity.GlobalNbId.GetPlmnId(), nbIdentity.GlobalNbId.GetNbId()) + key, rNibErr = common.ValidateAndBuildNodeBIdKey(nodebInfo.GetNodeType().String(), nodebInfo.GlobalNbId.GetPlmnId(), nodebInfo.GlobalNbId.GetNbId()) if rNibErr != nil { return rNibErr } pairs = append(pairs, key, data) } - if entity.GetEnb() != nil { - pairs, rNibErr = appendEnbCells(nbIdentity.InventoryName, entity.GetEnb().GetServedCells(), pairs) + if nodebInfo.GetEnb() != nil { + pairs, rNibErr = appendEnbCells(nodebInfo.RanName, nodebInfo.GetEnb().GetServedCells(), pairs) if rNibErr != nil { return rNibErr } } - if entity.GetGnb() != nil { - pairs, rNibErr = appendGnbCells(nbIdentity.InventoryName, entity.GetGnb().GetServedNrCells(), pairs) + if nodebInfo.GetGnb() != nil { + pairs, rNibErr = appendGnbCells(nodebInfo.RanName, nodebInfo.GetGnb().GetServedNrCells(), pairs) if rNibErr != nil { return rNibErr } } - if nodeType == entities.Node_ENB { - err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", entity.RanName, RanAddedEvent)}, pairs) + if nodebInfo.GetNodeType() == entities.Node_ENB { + err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanAddedEvent)}, pairs) } else { err = w.sdl.Set(pairs) } @@ -162,28 +172,6 @@ func (w *rNibWriterInstance) SaveNodeb(nbIdentity *entities.NbIdentity, entity * return common.NewInternalError(err) } - ranNameIdentity := &entities.NbIdentity{InventoryName: nbIdentity.InventoryName} - - if isNotEmptyIdentity { - err := w.removeNbIdentity(entities.Node_UNKNOWN, ranNameIdentity) - if err != nil { - return common.NewInternalError(err) - } - } else { - nbIdentity = ranNameIdentity - } - - nbIdData, err := proto.Marshal(nbIdentity) - - if err != nil { - return common.NewInternalError(err) - } - - err = w.sdl.AddMember(nodeType.String(), nbIdData) - - if err != nil { - return common.NewInternalError(err) - } return nil } @@ -298,7 +286,7 @@ func (w *rNibWriterInstance) buildRemoveEnbKeys(nodebInfo *entities.NodebInfo) ( return keys, nil } -func (w *rNibWriterInstance) removeNbIdentity(nodeType entities.Node_Type ,nbIdentity *entities.NbIdentity) error { +func (w *rNibWriterInstance) RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { nbIdData, err := proto.Marshal(nbIdentity) if err != nil { return common.NewInternalError(err) @@ -459,12 +447,6 @@ func (w *rNibWriterInstance) UpdateNodebInfoOnConnectionStatusInversion(nodebInf } func (w *rNibWriterInstance) RemoveEnb(nodebInfo *entities.NodebInfo) error { - ranNameIdentity := &entities.NbIdentity{InventoryName: nodebInfo.RanName, GlobalNbId: nodebInfo.GetGlobalNbId()} - err := w.removeNbIdentity(entities.Node_ENB, ranNameIdentity) - if err != nil { - return err - } - keysToRemove, err := w.buildRemoveEnbKeys(nodebInfo) if err != nil { return err @@ -501,6 +483,7 @@ func (w *rNibWriterInstance) UpdateEnb(nodebInfo *entities.NodebInfo, servedCell return nil } + /* Close the writer */ @@ -548,8 +531,4 @@ func appendGnbCells(inventoryName string, cells []*entities.ServedNRCell, pairs pairs = append(pairs, key, cellData) } return pairs, nil -} - -func isNotEmpty(nbIdentity *entities.NbIdentity) bool { - return nbIdentity.GlobalNbId != nil && nbIdentity.GlobalNbId.PlmnId != "" && nbIdentity.GlobalNbId.NbId != "" } \ No newline at end of file diff --git a/E2Manager/rNibWriter/rNibWriter_test.go b/E2Manager/rNibWriter/rNibWriter_test.go index 0685743..3dadce8 100644 --- a/E2Manager/rNibWriter/rNibWriter_test.go +++ b/E2Manager/rNibWriter/rNibWriter_test.go @@ -97,7 +97,7 @@ func generateServedCells(cellIds ...string) []*entities.ServedCellInfo { ChoiceEutraMode: &entities.ChoiceEUTRAMode{ Fdd: &entities.FddInfo{}, }, - Pci: uint32(i + 1), + Pci: uint32(i + 1), BroadcastPlmns: []string{"whatever"}, }) } @@ -112,7 +112,7 @@ func generateServedCellInfos(cellIds ...string) []*entities.ServedCellInfo { for i, v := range cellIds { servedCells = append(servedCells, &entities.ServedCellInfo{ CellId: v, - Pci: uint32(i + 1), + Pci: uint32(i + 1), }) } @@ -314,15 +314,20 @@ func TestUpdateNodebInfoMissingGlobalNbId(t *testing.T) { } func TestSaveEnb(t *testing.T) { - name := "name" - ranName := "RAN:" + name + ranName := "RAN:" + RanName w, sdlInstanceMock := initSdlInstanceMock(namespace) - nb := entities.NodebInfo{} - nb.RanName = name - nb.NodeType = entities.Node_ENB - nb.ConnectionStatus = 1 - nb.Ip = "localhost" - nb.Port = 5656 + nb := entities.NodebInfo{ + RanName: RanName, + NodeType: entities.Node_ENB, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + Ip: "localhost", + Port: 5656, + GlobalNbId: &entities.GlobalNbId{ + NbId: "4a952a0a", + PlmnId: "02f829", + }, + } + enb := entities.Enb{} cell := &entities.ServedCellInfo{CellId: "aaff", Pci: 3} cellEntity := entities.Cell{Type: entities.Cell_LTE_CELL, Cell: &entities.Cell_ServedCellInfo{ServedCellInfo: cell}} @@ -342,31 +347,18 @@ func TestSaveEnb(t *testing.T) { setExpected = append(setExpected, ranName, data) setExpected = append(setExpected, "ENB:02f829:4a952a0a", data) setExpected = append(setExpected, fmt.Sprintf("CELL:%s", cell.GetCellId()), cellData) - setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetPci()), cellData) - - sdlInstanceMock.On("SetAndPublish", []string{"RAN_MANIPULATION", name + "_" + RanAddedEvent}, []interface{}{setExpected}).Return(e) - - nbIdData, err := proto.Marshal(&entities.NbIdentity{InventoryName: name}) - if err != nil { - t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal nbIdentity entity. Error: %v", err) - } - sdlInstanceMock.On("RemoveMember", entities.Node_UNKNOWN.String(), []interface{}{nbIdData}).Return(e) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", RanName, cell.GetPci()), cellData) - nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} - nbIdData, err = proto.Marshal(nbIdentity) - if err != nil { - t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB Identity entity. Error: %v", err) - } - sdlInstanceMock.On("AddMember", "ENB", []interface{}{nbIdData}).Return(e) + sdlInstanceMock.On("SetAndPublish", []string{"RAN_MANIPULATION", RanName + "_" + RanAddedEvent}, []interface{}{setExpected}).Return(e) - rNibErr := w.SaveNodeb(nbIdentity, &nb) + rNibErr := w.SaveNodeb(&nb) assert.Nil(t, rNibErr) } func TestSaveEnbCellIdValidationFailure(t *testing.T) { - name := "name" w, _ := initSdlInstanceMock(namespace) nb := entities.NodebInfo{} + nb.RanName = "name" nb.NodeType = entities.Node_ENB nb.ConnectionStatus = 1 nb.Ip = "localhost" @@ -375,9 +367,7 @@ func TestSaveEnbCellIdValidationFailure(t *testing.T) { cell := &entities.ServedCellInfo{Pci: 3} enb.ServedCells = []*entities.ServedCellInfo{cell} nb.Configuration = &entities.NodebInfo_Enb{Enb: &enb} - - nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} - rNibErr := w.SaveNodeb(nbIdentity, &nb) + rNibErr := w.SaveNodeb(&nb) assert.NotNil(t, rNibErr) assert.IsType(t, &common.ValidationError{}, rNibErr) assert.Equal(t, "#utils.ValidateAndBuildCellIdKey - an empty cell id received", rNibErr.Error()) @@ -385,27 +375,30 @@ func TestSaveEnbCellIdValidationFailure(t *testing.T) { func TestSaveEnbInventoryNameValidationFailure(t *testing.T) { w, _ := initSdlInstanceMock(namespace) - nb := entities.NodebInfo{} - nb.NodeType = entities.Node_ENB - nb.ConnectionStatus = 1 - nb.Ip = "localhost" - nb.Port = 5656 + nb := entities.NodebInfo{ + NodeType: entities.Node_ENB, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + Ip: "localhost", + Port: 5656, + GlobalNbId: &entities.GlobalNbId{ + NbId: "4a952a0a", + PlmnId: "02f829", + }, + } enb := entities.Enb{} cell := &entities.ServedCellInfo{CellId: "aaa", Pci: 3} enb.ServedCells = []*entities.ServedCellInfo{cell} nb.Configuration = &entities.NodebInfo_Enb{Enb: &enb} - - nbIdentity := &entities.NbIdentity{InventoryName: "", GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} - rNibErr := w.SaveNodeb(nbIdentity, &nb) + rNibErr := w.SaveNodeb(&nb) assert.NotNil(t, rNibErr) assert.IsType(t, &common.ValidationError{}, rNibErr) assert.Equal(t, "#utils.ValidateAndBuildNodeBNameKey - an empty inventory name received", rNibErr.Error()) } func TestSaveGnbCellIdValidationFailure(t *testing.T) { - name := "name" w, _ := initSdlInstanceMock(namespace) nb := entities.NodebInfo{} + nb.RanName = "name" nb.NodeType = entities.Node_GNB nb.ConnectionStatus = 1 nb.Ip = "localhost" @@ -416,22 +409,27 @@ func TestSaveGnbCellIdValidationFailure(t *testing.T) { gnb.ServedNrCells = []*entities.ServedNRCell{cell} nb.Configuration = &entities.NodebInfo_Gnb{Gnb: &gnb} - nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} - rNibErr := w.SaveNodeb(nbIdentity, &nb) + rNibErr := w.SaveNodeb(&nb) assert.NotNil(t, rNibErr) assert.IsType(t, &common.ValidationError{}, rNibErr) assert.Equal(t, "#utils.ValidateAndBuildNrCellIdKey - an empty cell id received", rNibErr.Error()) } func TestSaveGnb(t *testing.T) { - name := "name" - ranName := "RAN:" + name + ranName := "RAN:" + RanName w, sdlInstanceMock := initSdlInstanceMock(namespace) - nb := entities.NodebInfo{} - nb.NodeType = entities.Node_GNB - nb.ConnectionStatus = 1 - nb.Ip = "localhost" - nb.Port = 5656 + nb := entities.NodebInfo{ + RanName: RanName, + NodeType: entities.Node_GNB, + ConnectionStatus: 1, + GlobalNbId: &entities.GlobalNbId{ + NbId: "4a952a0a", + PlmnId: "02f829", + }, + Ip: "localhost", + Port: 5656, + } + gnb := entities.Gnb{} cellInfo := &entities.ServedNRCellInformation{NrPci: 2, CellId: "ccdd"} cell := &entities.ServedNRCell{ServedNrCellInformation: cellInfo} @@ -452,23 +450,10 @@ func TestSaveGnb(t *testing.T) { setExpected = append(setExpected, ranName, data) setExpected = append(setExpected, "GNB:02f829:4a952a0a", data) setExpected = append(setExpected, fmt.Sprintf("NRCELL:%s", cell.GetServedNrCellInformation().GetCellId()), cellData) - setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetServedNrCellInformation().GetNrPci()), cellData) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", RanName, cell.GetServedNrCellInformation().GetNrPci()), cellData) sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) - nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} - nbIdData, err := proto.Marshal(nbIdentity) - if err != nil { - t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal NodeB Identity entity. Error: %v", err) - } - sdlInstanceMock.On("AddMember", "GNB", []interface{}{nbIdData}).Return(e) - - nbIdData, err = proto.Marshal(&entities.NbIdentity{InventoryName: name}) - if err != nil { - t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal nbIdentity entity. Error: %v", err) - } - sdlInstanceMock.On("RemoveMember", entities.Node_UNKNOWN.String(), []interface{}{nbIdData}).Return(e) - - rNibErr := w.SaveNodeb(nbIdentity, &nb) + rNibErr := w.SaveNodeb(&nb) assert.Nil(t, rNibErr) } @@ -620,18 +605,16 @@ func generateRanLoadInformation() *entities.RanLoadInformation { func TestSaveNilEntityFailure(t *testing.T) { w, _ := initSdlInstanceMock(namespace) expectedErr := common.NewInternalError(errors.New("proto: Marshal called with nil")) - nbIdentity := &entities.NbIdentity{} - actualErr := w.SaveNodeb(nbIdentity, nil) + actualErr := w.SaveNodeb(nil) assert.Equal(t, expectedErr, actualErr) } func TestSaveUnknownTypeEntityFailure(t *testing.T) { w, _ := initSdlInstanceMock(namespace) - nbIdentity := &entities.NbIdentity{InventoryName: "name", GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} nb := &entities.NodebInfo{} nb.Port = 5656 nb.Ip = "localhost" - actualErr := w.SaveNodeb(nbIdentity, nb) + actualErr := w.SaveNodeb(nb) assert.IsType(t, &common.ValidationError{}, actualErr) } @@ -647,12 +630,11 @@ func TestSaveEntityFailure(t *testing.T) { if err != nil { t.Errorf("#rNibWriter_test.TestSaveEntityFailure - Failed to marshal NodeB entity. Error: %v", err) } - nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}} setExpected := []interface{}{"RAN:" + name, data} setExpected = append(setExpected, "GNB:"+plmnId+":"+nbId, data) expectedErr := errors.New("expected error") sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) - rNibErr := w.SaveNodeb(nbIdentity, &gnb) + rNibErr := w.SaveNodeb(&gnb) assert.NotEmpty(t, rNibErr) } @@ -1023,13 +1005,6 @@ func TestRemoveEnbSuccess(t *testing.T) { var e error - nbIdentity := &entities.NbIdentity{InventoryName: nodebInfo.RanName, GlobalNbId: nodebInfo.GetGlobalNbId()} - nbIdData, err := proto.Marshal(nbIdentity) - if err != nil { - t.Errorf("#rNibWriter_test.TestRemoveEnbSuccess - Failed to marshal NbIdentity entity. Error: %v", err) - } - sdlInstanceMock.On("RemoveMember", entities.Node_ENB.String(), []interface{}{nbIdData}).Return(e) - expectedKeys := []string{} cell1Key := fmt.Sprintf("CELL:%s", nodebInfo.GetEnb().ServedCells[0].CellId) cell1PciKey := fmt.Sprintf("PCI:%s:%02x", inventoryName, nodebInfo.GetEnb().ServedCells[0].Pci) @@ -1045,26 +1020,6 @@ func TestRemoveEnbSuccess(t *testing.T) { sdlInstanceMock.AssertExpectations(t) } -func TestRemoveEnbRemoveNbIdentityError(t *testing.T) { - inventoryName := "name" - plmnId := "02f829" - nbId := "4a952a0a" - w, sdlInstanceMock := initSdlInstanceMock(namespace) - nodebInfo := generateNodebInfo(inventoryName, entities.Node_ENB, plmnId, nbId) - nodebInfo.GetEnb().ServedCells = generateServedCellInfos("cell1", "cell2") - - nbIdentity := &entities.NbIdentity{InventoryName: nodebInfo.RanName, GlobalNbId: nodebInfo.GetGlobalNbId()} - nbIdData, err := proto.Marshal(nbIdentity) - if err != nil { - t.Errorf("#rNibWriter_test.TestRemoveEnbSuccess - Failed to marshal NbIdentity entity. Error: %v", err) - } - sdlInstanceMock.On("RemoveMember", entities.Node_ENB.String(), []interface{}{nbIdData}).Return(errors.New("for test")) - - rNibErr := w.RemoveEnb(nodebInfo) - assert.NotNil(t, rNibErr) - sdlInstanceMock.AssertExpectations(t) -} - func TestRemoveEnbRemoveAndPublishError(t *testing.T) { inventoryName := "name" plmnId := "02f829" @@ -1075,15 +1030,6 @@ func TestRemoveEnbRemoveAndPublishError(t *testing.T) { nodebInfo := generateNodebInfo(inventoryName, entities.Node_ENB, plmnId, nbId) nodebInfo.GetEnb().ServedCells = generateServedCellInfos("cell1", "cell2") - var e error - - nbIdentity := &entities.NbIdentity{InventoryName: nodebInfo.RanName, GlobalNbId: nodebInfo.GetGlobalNbId()} - nbIdData, err := proto.Marshal(nbIdentity) - if err != nil { - t.Errorf("#rNibWriter_test.TestRemoveEnbSuccess - Failed to marshal NbIdentity entity. Error: %v", err) - } - sdlInstanceMock.On("RemoveMember", entities.Node_ENB.String(), []interface{}{nbIdData}).Return(e) - expectedKeys := []string{} cell1Key := fmt.Sprintf("CELL:%s", nodebInfo.GetEnb().ServedCells[0].CellId) cell1PciKey := fmt.Sprintf("PCI:%s:%02x", inventoryName, nodebInfo.GetEnb().ServedCells[0].Pci) diff --git a/E2Manager/services/rmrreceiver/rmr_receiver_test.go b/E2Manager/services/rmrreceiver/rmr_receiver_test.go index 4a196cf..d4d4529 100644 --- a/E2Manager/services/rmrreceiver/rmr_receiver_test.go +++ b/E2Manager/services/rmrreceiver/rmr_receiver_test.go @@ -70,7 +70,7 @@ func initRmrReceiver(logger *logger.Logger) *RmrReceiver { rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger) e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) - ranListManager := managers.NewRanListManager(logger) + ranListManager := managers.NewRanListManager(logger, rnibDataService) ranAlarmService := services.NewRanAlarmService(logger, config) ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) diff --git a/E2Manager/services/rnib_data_service.go b/E2Manager/services/rnib_data_service.go index c1bf97b..f4e0b5a 100644 --- a/E2Manager/services/rnib_data_service.go +++ b/E2Manager/services/rnib_data_service.go @@ -31,7 +31,7 @@ import ( ) type RNibDataService interface { - SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error + SaveNodeb(nodebInfo *entities.NodebInfo) error UpdateNodebInfo(nodebInfo *entities.NodebInfo) error SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error GetNodeb(ranName string) (*entities.NodebInfo, error) @@ -55,26 +55,38 @@ type RNibDataService interface { RemoveEnb(nodebInfo *entities.NodebInfo) error RemoveServedCells(inventoryName string, servedCells []*entities.ServedCellInfo) error UpdateEnb(nodebInfo *entities.NodebInfo, servedCells []*entities.ServedCellInfo) error + AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error } type rNibDataService struct { - logger *logger.Logger - rnibReader reader.RNibReader - rnibWriter rNibWriter.RNibWriter - maxAttempts int - retryInterval time.Duration + logger *logger.Logger + rnibReader reader.RNibReader + rnibWriter rNibWriter.RNibWriter + maxAttempts int + retryInterval time.Duration } func NewRnibDataService(logger *logger.Logger, config *configuration.Configuration, rnibReader reader.RNibReader, rnibWriter rNibWriter.RNibWriter) *rNibDataService { return &rNibDataService{ - logger: logger, - rnibReader: rnibReader, - rnibWriter: rnibWriter, - maxAttempts: config.MaxRnibConnectionAttempts, - retryInterval: time.Duration(config.RnibRetryIntervalMs) * time.Millisecond, + logger: logger, + rnibReader: rnibReader, + rnibWriter: rnibWriter, + maxAttempts: config.MaxRnibConnectionAttempts, + retryInterval: time.Duration(config.RnibRetryIntervalMs) * time.Millisecond, } } +func (w *rNibDataService) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { + w.logger.Infof("#RnibDataService.AddNbIdentity - nbIdentity: %s", nbIdentity) + + err := w.retry("AddNbIdentity", func() (err error) { + err = w.rnibWriter.AddNbIdentity(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) @@ -117,11 +129,11 @@ func (w *rNibDataService) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { return err } -func (w *rNibDataService) SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error { - w.logger.Infof("#RnibDataService.SaveNodeb - nbIdentity: %s, nodebInfo: %s", nbIdentity, nb) +func (w *rNibDataService) SaveNodeb(nodebInfo *entities.NodebInfo) error { + w.logger.Infof("#RnibDataService.SaveNodeb - nodebInfo: %s", nodebInfo) err := w.retry("SaveNodeb", func() (err error) { - err = w.rnibWriter.SaveNodeb(nbIdentity, nb) + err = w.rnibWriter.SaveNodeb(nodebInfo) return }) diff --git a/E2Manager/services/rnib_data_service_test.go b/E2Manager/services/rnib_data_service_test.go index 07e2c45..5460608 100644 --- a/E2Manager/services/rnib_data_service_test.go +++ b/E2Manager/services/rnib_data_service_test.go @@ -17,7 +17,6 @@ // This source code is part of the near-RT RIC (RAN Intelligent Controller) // platform project (RICP). - package services import ( @@ -47,10 +46,8 @@ func setupRnibDataServiceTestWithMaxAttempts(t *testing.T, maxAttempts int) (*rN readerMock := &mocks.RnibReaderMock{} - writerMock := &mocks.RnibWriterMock{} - rnibDataService := NewRnibDataService(logger, config, readerMock, writerMock) assert.NotNil(t, rnibDataService) @@ -61,10 +58,9 @@ func TestSuccessfulSaveNodeb(t *testing.T) { rnibDataService, _, writerMock := setupRnibDataServiceTest(t) nodebInfo := &entities.NodebInfo{} - nbIdentity := &entities.NbIdentity{} - writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + writerMock.On("SaveNodeb", nodebInfo).Return(nil) - rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + rnibDataService.SaveNodeb(nodebInfo) writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1) } @@ -72,11 +68,10 @@ func TestConnFailureSaveNodeb(t *testing.T) { rnibDataService, _, writerMock := setupRnibDataServiceTest(t) nodebInfo := &entities.NodebInfo{} - nbIdentity := &entities.NbIdentity{} mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} - writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(mockErr) + writerMock.On("SaveNodeb", nodebInfo).Return(mockErr) - rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + rnibDataService.SaveNodeb(nodebInfo) writerMock.AssertNumberOfCalls(t, "SaveNodeb", 3) } @@ -84,11 +79,10 @@ func TestNonConnFailureSaveNodeb(t *testing.T) { rnibDataService, _, writerMock := setupRnibDataServiceTest(t) nodebInfo := &entities.NodebInfo{} - nbIdentity := &entities.NbIdentity{} mockErr := &common.InternalError{Err: fmt.Errorf("non connection failure")} - writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(mockErr) + writerMock.On("SaveNodeb", nodebInfo).Return(mockErr) - rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + rnibDataService.SaveNodeb(nodebInfo) writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1) } @@ -159,7 +153,7 @@ func TestConnFailureGetNodeb(t *testing.T) { res, err := rnibDataService.GetNodeb(invName) readerMock.AssertNumberOfCalls(t, "GetNodeb", 3) - assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.True(t, strings.Contains(err.Error(), "connection error")) assert.Equal(t, nodeb, res) } @@ -184,7 +178,7 @@ func TestConnFailureGetNodebIdList(t *testing.T) { res, err := rnibDataService.GetListNodebIds() readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 3) - assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.True(t, strings.Contains(err.Error(), "connection error")) assert.Equal(t, nodeIds, res) } @@ -200,12 +194,12 @@ func TestConnFailureTwiceGetNodebIdList(t *testing.T) { res, err := rnibDataService.GetListNodebIds() readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 3) - assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.True(t, strings.Contains(err.Error(), "connection error")) assert.Equal(t, nodeIds, res) res2, err := rnibDataService.GetNodeb(invName) readerMock.AssertNumberOfCalls(t, "GetNodeb", 3) - assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.True(t, strings.Contains(err.Error(), "connection error")) assert.Equal(t, nodeb, res2) } @@ -218,7 +212,7 @@ func TestConnFailureWithAnotherConfig(t *testing.T) { res, err := rnibDataService.GetListNodebIds() readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 5) - assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.True(t, strings.Contains(err.Error(), "connection error")) assert.Equal(t, nodeIds, res) } @@ -280,21 +274,6 @@ func TestConnFailureUpdateNodebInfoOnConnectionStatusInversion(t *testing.T) { writerMock.AssertNumberOfCalls(t, "UpdateNodebInfoOnConnectionStatusInversion", 3) } -//func TestConnFailureThenSuccessGetNodebIdList(t *testing.T) { -// rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) -// -// var nilNodeIds []*entities.NbIdentity = nil -// nodeIds := []*entities.NbIdentity{} -// mockErr := &common.InternalError{Err: &net.OpError{Err:fmt.Errorf("connection error")}} -// //readerMock.On("GetListNodebIds").Return(nilNodeIds, mockErr) -// //readerMock.On("GetListNodebIds").Return(nodeIds, nil) -// -// res, err := rnibDataService.GetListNodebIds() -// readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 2) -// assert.True(t, strings.Contains(err.Error(),"connection failure", )) -// assert.Equal(t, nodeIds, res) -//} - func TestGetE2TInstanceConnFailure(t *testing.T) { rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) @@ -369,4 +348,4 @@ func TestRemoveEnbOtherError(t *testing.T) { err := rnibDataService.RemoveEnb(nodebInfo) writerMock.AssertNumberOfCalls(t, "RemoveEnb", 1) assert.NotNil(t, err) -} \ No newline at end of file +} -- 2.16.6