X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fcontrollers%2Fnodeb_controller_test.go;h=55415178169ecd0748f51359d4c5a1f946e1d5c3;hb=refs%2Fchanges%2F62%2F4162%2F1;hp=c61249ede8774a93b7620c5f5e0efb711e9698e6;hpb=d916e2aef4c415d9865643fafa8c181a9fdfd65b;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index c61249e..5541517 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -24,7 +24,6 @@ import ( "e2mgr/clients" "e2mgr/configuration" "e2mgr/e2managererrors" - "e2mgr/e2pdus" "e2mgr/logger" "e2mgr/managers" "e2mgr/mocks" @@ -92,16 +91,16 @@ type updateGnbCellsParams struct { type removeServedNrCellsParams struct { servedNrCells []*entities.ServedNRCell - err error + err error } type controllerUpdateGnbTestContext struct { - getNodebInfoResult *getNodebInfoResult + getNodebInfoResult *getNodebInfoResult removeServedNrCellsParams *removeServedNrCellsParams - updateGnbCellsParams *updateGnbCellsParams - requestBody map[string]interface{} - expectedStatusCode int - expectedJsonResponse string + updateGnbCellsParams *updateGnbCellsParams + requestBody map[string]interface{} + expectedStatusCode int + expectedJsonResponse string } func generateServedNrCells(cellIds ...string) []*entities.ServedNRCell { @@ -177,104 +176,61 @@ func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, e2tInstancesManager := &mocks.E2TInstancesManagerMock{} httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) + ranListManager := &mocks.RanListManagerMock{} + ranAlarmService := &mocks.RanAlarmServiceMock{} + ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) + + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager) handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, rmClient) controller := NewNodebController(log, handlerProvider) return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager } -func TestX2SetupInvalidBody(t *testing.T) { - - controller, _, _, _, _ := setupControllerTest(t) - - header := http.Header{} - header.Set("Content-Type", "application/json") - httpRequest, _ := http.NewRequest("POST", "http://localhost:3800/v1/nodeb/x2-setup", strings.NewReader("{}{}")) - httpRequest.Header = header +func TestShutdownHandlerRnibError(t *testing.T) { + controller, _, _, _, e2tInstancesManagerMock := setupControllerTest(t) + e2tInstancesManagerMock.On("GetE2TAddresses").Return([]string{}, e2managererrors.NewRnibDbError()) writer := httptest.NewRecorder() - controller.X2Setup(writer, httpRequest) + + controller.Shutdown(writer, tests.GetHttpRequest()) var errorResponse = parseJsonRequest(t, writer.Body) - assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) - assert.Equal(t, e2managererrors.NewInvalidJsonError().Code, errorResponse.Code) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Code) } -func TestX2SetupSuccess(t *testing.T) { - - controller, readerMock, writerMock, rmrMessengerMock, _ := setupControllerTest(t) - - ranName := "test" - nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} - readerMock.On("GetNodeb", ranName).Return(nb, nil) - var nbUpdated = *nb - writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil) - - var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} - writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil) - - payload := e2pdus.PackedX2setupRequest - var xAction []byte - var msgSrc unsafe.Pointer - msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) - - rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) +func TestSetGeneralConfigurationHandlerRnibError(t *testing.T) { + controller, readerMock, _, _, _ := setupControllerTest(t) - header := http.Header{} - header.Set("Content-Type", "application/json") - httpRequest := tests.GetHttpRequest() - httpRequest.Header = header + configuration := &entities.GeneralConfiguration{} + readerMock.On("GetGeneralConfiguration").Return(configuration, e2managererrors.NewRnibDbError()) writer := httptest.NewRecorder() - controller.X2Setup(writer, httpRequest) - assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) -} - -func TestEndcSetupSuccess(t *testing.T) { - - controller, readerMock, writerMock, rmrMessengerMock, _ := setupControllerTest(t) + httpRequest, _ := http.NewRequest("PUT", "https://localhost:3800/v1/nodeb/parameters", strings.NewReader("{\"enableRic\":false}")) - ranName := "test" - nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} - readerMock.On("GetNodeb", ranName).Return(nb, nil) - var nbUpdated = *nb - writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil) - - var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} - writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil) + controller.SetGeneralConfiguration(writer, httpRequest) - payload := e2pdus.PackedEndcX2setupRequest - var xAction []byte - var msgSrc unsafe.Pointer - msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) - - rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) - - header := http.Header{} - header.Set("Content-Type", "application/json") - httpRequest := tests.GetHttpRequest() - httpRequest.Header = header - - writer := httptest.NewRecorder() - controller.EndcSetup(writer, httpRequest) + var errorResponse = parseJsonRequest(t, writer.Body) - assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, e2managererrors.NewRnibDbError().Code, errorResponse.Code) } -func TestShutdownHandlerRnibError(t *testing.T) { - controller, _, _, _, e2tInstancesManagerMock := setupControllerTest(t) - e2tInstancesManagerMock.On("GetE2TAddresses").Return([]string{}, e2managererrors.NewRnibDbError()) +func TestSetGeneralConfigurationInvalidJson(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) writer := httptest.NewRecorder() - controller.Shutdown(writer, tests.GetHttpRequest()) + httpRequest, _ := http.NewRequest("PUT", "https://localhost:3800/v1/nodeb/parameters", strings.NewReader("{}{}")) + + controller.SetGeneralConfiguration(writer, httpRequest) var errorResponse = parseJsonRequest(t, writer.Body) - assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) - assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Code) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + assert.Equal(t, e2managererrors.NewInvalidJsonError().Code, errorResponse.Code) } func controllerGetNodebTestExecuter(t *testing.T, context *controllerGetNodebTestContext) { @@ -545,10 +501,10 @@ func TestControllerUpdateGnbGetNodebSuccessInvalidGnbConfiguration(t *testing.T) } func TestControllerUpdateGnbGetNodebSuccessRemoveServedNrCellsFailure(t *testing.T) { - oldServedNrCells := generateServedNrCells("whatever1","whatever2") + oldServedNrCells := generateServedNrCells("whatever1", "whatever2") context := controllerUpdateGnbTestContext{ removeServedNrCellsParams: &removeServedNrCellsParams{ - err: common.NewInternalError(errors.New("#writer.UpdateGnbCells - Internal Error")), + err: common.NewInternalError(errors.New("#writer.UpdateGnbCells - Internal Error")), servedNrCells: oldServedNrCells, }, getNodebInfoResult: &getNodebInfoResult{ @@ -578,10 +534,10 @@ func TestControllerUpdateGnbGetNodebSuccessRemoveServedNrCellsFailure(t *testing } func TestControllerUpdateGnbGetNodebSuccessUpdateGnbCellsFailure(t *testing.T) { - oldServedNrCells := generateServedNrCells("whatever1","whatever2") + oldServedNrCells := generateServedNrCells("whatever1", "whatever2") context := controllerUpdateGnbTestContext{ removeServedNrCellsParams: &removeServedNrCellsParams{ - err: nil, + err: nil, servedNrCells: oldServedNrCells, }, updateGnbCellsParams: &updateGnbCellsParams{ @@ -647,7 +603,7 @@ func TestControllerUpdateGnbSuccess(t *testing.T) { func getJsonRequestAsBuffer(requestJson map[string]interface{}) *bytes.Buffer { b := new(bytes.Buffer) _ = json.NewEncoder(b).Encode(requestJson) - return b; + return b } func TestControllerGetNodebSuccess(t *testing.T) { @@ -835,7 +791,7 @@ func parseJsonRequest(t *testing.T, r io.Reader) models.ErrorResponse { if err != nil { t.Errorf("Error cannot deserialize json request") } - _ =json.Unmarshal(body, &errorResponse) + _ = json.Unmarshal(body, &errorResponse) return errorResponse }