X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fcontrollers%2Fnodeb_controller_test.go;h=812d7dc448b7c175777fe551285eef2d5ed4a712;hb=3690bcd6275fd1c83a6da94ac4dd221a31386c7a;hp=9497ff8959c8c0d7ff25d12d74fe438342dbe5fa;hpb=07ef76dd471a0892a893c90e0ab06713aee34be1;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index 9497ff8..812d7dc 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -19,29 +19,24 @@ package controllers import ( "e2mgr/logger" - "e2mgr/managers" "e2mgr/mocks" "e2mgr/models" "e2mgr/rNibWriter" "e2mgr/rmrCgo" "e2mgr/services" "e2mgr/tests" - "fmt" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" - "github.com/julienschmidt/httprouter" + "github.com/gorilla/mux" "github.com/pkg/errors" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" "io/ioutil" "net/http" "net/http/httptest" "testing" ) -const x2SetupMessageType = "x2-setup" - func TestNewRequestController(t *testing.T) { rnibReaderProvider := func() reader.RNibReader { return &mocks.RnibReaderMock{} @@ -53,115 +48,25 @@ func TestNewRequestController(t *testing.T) { assert.NotNil(t, NewNodebController(&logger.Logger{}, &services.RmrService{}, rnibReaderProvider, rnibWriterProvider)) } -func TestHandleRequestSuccess(t *testing.T) { - log, err := logger.InitLogger(logger.InfoLevel) - if err != nil { - t.Errorf("#nodeb_controller_test.TestHandleRequestSuccess - failed to initialize logger, error: %s", err) - } - - rmrMessengerMock :=&mocks.RmrMessengerMock{} - mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName", &tests.DummyPayload, &tests.DummyXAction) - - rmrMessengerMock.On("SendMsg", - mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), - tests.MaxMsgSize).Return(mbuf, nil) - - writer := httptest.NewRecorder() - - handleRequest(writer, log, rmrMessengerMock, tests.GetHttpRequest(), x2SetupMessageType) - assert.Equal(t, writer.Result().StatusCode, http.StatusOK) -} - -func TestHandleRequestFailure_InvalidRequestDetails(t *testing.T) { - log, err := logger.InitLogger(logger.InfoLevel) - if err != nil { - t.Errorf("#nodeb_controller_test.TestHandleRequestFailure - failed to initialize logger, error: %s", err) - } - - rmrMessengerMock := &mocks.RmrMessengerMock{} - var mbuf *rmrCgo.MBuf - - rmrMessengerMock.On("SendMsg", - mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), - tests.MaxMsgSize).Return(mbuf, errors.New("test failure")) - - writer := httptest.NewRecorder() - - handleRequest(writer, log, rmrMessengerMock, tests.GetInvalidRequestDetails(), x2SetupMessageType) - assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) -} - -func TestHandleRequestFailure_InvalidMessageType(t *testing.T) { - log, err := logger.InitLogger(logger.InfoLevel) - if err != nil { - t.Errorf("#nodeb_controller_test.TestHandleRequestFailure - failed to initialize logger, error: %s", err) - } - - rmrMessengerMock := &mocks.RmrMessengerMock{} - var mbuf *rmrCgo.MBuf - - rmrMessengerMock.On("SendMsg", - mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), - tests.MaxMsgSize).Return(mbuf, errors.New("test failure")) - - writer := httptest.NewRecorder() - - handleRequest(writer, log, rmrMessengerMock, tests.GetInvalidMessageType(), "dummy") - assert.Equal(t, http.StatusNotFound, writer.Result().StatusCode) -} - func TestHandleHealthCheckRequest(t *testing.T) { rc := NewNodebController(nil, nil, nil, nil) writer := httptest.NewRecorder() - rc.HandleHealthCheckRequest(writer, nil, nil) + rc.HandleHealthCheckRequest(writer, nil) assert.Equal(t, writer.Result().StatusCode, http.StatusOK) } -func handleRequest(writer *httptest.ResponseRecorder, log *logger.Logger, rmrMessengerMock *mocks.RmrMessengerMock, - request *http.Request, messageType string) { - rmrService := getRmrService(rmrMessengerMock, log) - params := []httprouter.Param{{Key: "messageType", Value: messageType}} - - var nodebInfo *entities.NodebInfo - var nbIdentity *entities.NbIdentity - - rnibWriterMock := mocks.RnibWriterMock{} - rnibWriterMock.On("SaveNodeb", - mock.AnythingOfType(fmt.Sprintf("%T", nbIdentity)), - mock.AnythingOfType(fmt.Sprintf("%T", nodebInfo))).Return(nil) - - rnibReaderProvider := func() reader.RNibReader { - return &mocks.RnibReaderMock{} - } - - rnibWriterProvider := func() rNibWriter.RNibWriter { - return &rnibWriterMock - } - - NewNodebController(log, rmrService, rnibReaderProvider, rnibWriterProvider).HandleRequest(writer, request, params) -} - func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService { rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) - rnibReaderProvider := func() reader.RNibReader { - return &mocks.RnibReaderMock{} - } - - rnibWriterProvider := func() rNibWriter.RNibWriter { - return &mocks.RnibWriterMock{} - } - nManager := managers.NewNotificationManager(rnibReaderProvider, rnibWriterProvider) - rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) messageChannel := make(chan *models.NotificationResponse) - return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, E2Sessions, nManager, messageChannel) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, messageChannel) } func executeGetNodeb(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) { req, _ := http.NewRequest("GET", "/nodeb", nil) + req = mux.SetURLVars(req, map[string]string{"ranName": "testNode"}) - params := []httprouter.Param{{Key: "ranName", Value: "testNode"}} - - NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodeb(writer, req, params) + NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodeb(writer, req) } func TestNodebController_GetNodeb_Success(t *testing.T) { @@ -175,7 +80,7 @@ func TestNodebController_GetNodeb_Success(t *testing.T) { rnibReaderMock := mocks.RnibReaderMock{} - var rnibError common.IRNibError + var rnibError error rnibReaderMock.On("GetNodeb", "testNode").Return(&entities.NodebInfo{}, rnibError) rnibReaderProvider := func() reader.RNibReader { @@ -197,7 +102,7 @@ func TestNodebController_GetNodeb_NotFound(t *testing.T) { writer := httptest.NewRecorder() rnibReaderMock := mocks.RnibReaderMock{} - rnibError := common.NewResourceNotFoundError(errors.Errorf("#reader.GetNodeb - responding node %s not found", "testNode")) + rnibError := common.NewResourceNotFoundErrorf("#reader.GetNodeb - responding node %s not found", "testNode") var nodebInfo *entities.NodebInfo rnibReaderMock.On("GetNodeb", "testNode").Return(nodebInfo, rnibError) @@ -234,42 +139,42 @@ func TestNodebController_GetNodeb_InternalError(t *testing.T) { func executeGetNodebIdList(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) { req, _ := http.NewRequest("GET", "/nodeb-ids", nil) - NewNodebController(logger, nil, rnibReaderProvider, nil ).GetNodebIdList(writer,req,nil) + NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodebIdList(writer, req) } func TestNodebController_GetNodebIdList_Success(t *testing.T) { logger, err := logger.InitLogger(logger.InfoLevel) - if err!=nil{ + if err != nil { t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) } writer := httptest.NewRecorder() rnibReaderMock := mocks.RnibReaderMock{} - var rnibError common.IRNibError - - enbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test1", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId1",NbId: "nbId1"}}} - gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}} - - rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) - rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + var rnibError error + nbList := []*entities.NbIdentity{ + {InventoryName: "test1", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}, + {InventoryName: "test2", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId2", NbId: "nbId2"}}, + {InventoryName: "test3", GlobalNbId: &entities.GlobalNbId{PlmnId: "", NbId: ""}}, + } + rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError) - rnibReaderProvider:= func() reader.RNibReader { + rnibReaderProvider := func() reader.RNibReader { return &rnibReaderMock } executeGetNodebIdList(logger, writer, rnibReaderProvider) assert.Equal(t, writer.Result().StatusCode, http.StatusOK) bodyBytes, err := ioutil.ReadAll(writer.Body) - assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]",string(bodyBytes) ) + assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}},{\"inventoryName\":\"test3\",\"globalNbId\":{}}]", string(bodyBytes)) } func TestNodebController_GetNodebIdList_EmptyList(t *testing.T) { log, err := logger.InitLogger(logger.InfoLevel) - if err!=nil{ + if err != nil { t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_EmptyList - failed to initialize logger, error: %s", err) } @@ -277,15 +182,11 @@ func TestNodebController_GetNodebIdList_EmptyList(t *testing.T) { rnibReaderMock := mocks.RnibReaderMock{} - var rnibError common.IRNibError - enbList := []*entities.NbIdentity{} - gnbList := []*entities.NbIdentity{} - - rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) - rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + var rnibError error + nbList := []*entities.NbIdentity{} + rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError) - - rnibReaderProvider:= func() reader.RNibReader { + rnibReaderProvider := func() reader.RNibReader { return &rnibReaderMock } @@ -308,8 +209,8 @@ func TestNodebController_GetNodebIdList_InternalError(t *testing.T) { rnibReaderMock := mocks.RnibReaderMock{} rnibError := common.NewInternalError(errors.New("#reader.GetEnbIdList - Internal Error")) - var enbList *[]*entities.NbIdentity - rnibReaderMock.On("GetListEnbIds").Return(enbList, rnibError) + var nbList []*entities.NbIdentity + rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError) rnibReaderProvider := func() reader.RNibReader { return &rnibReaderMock @@ -318,61 +219,3 @@ func TestNodebController_GetNodebIdList_InternalError(t *testing.T) { executeGetNodebIdList(logger, writer, rnibReaderProvider) assert.Equal(t, writer.Result().StatusCode, http.StatusInternalServerError) } - -func TestNodebController_GetNodebIdList_Success_One(t *testing.T) { - logger, err := logger.InitLogger(logger.InfoLevel) - - if err!=nil{ - t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) - } - - writer := httptest.NewRecorder() - - rnibReaderMock := mocks.RnibReaderMock{} - var rnibError common.IRNibError - - enbList := []*entities.NbIdentity{} - gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}} - - rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) - rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) - - - rnibReaderProvider:= func() reader.RNibReader { - return &rnibReaderMock - } - - executeGetNodebIdList(logger, writer, rnibReaderProvider) - assert.Equal(t, writer.Result().StatusCode, http.StatusOK) - bodyBytes, err := ioutil.ReadAll(writer.Body) - assert.Equal(t, "[{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]",string(bodyBytes) ) -} - -func TestNodebController_GetNodebIdList_Success_Many(t *testing.T) { - logger, err := logger.InitLogger(logger.InfoLevel) - - if err!=nil{ - t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) - } - - writer := httptest.NewRecorder() - - rnibReaderMock := mocks.RnibReaderMock{} - var rnibError common.IRNibError - - enbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test1", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId1",NbId: "nbId1"}}} - gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}, {InventoryName:"test3", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId3",NbId: "nbId3"}}} - - rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) - rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) - - - rnibReaderProvider:= func() reader.RNibReader { - return &rnibReaderMock - } - - executeGetNodebIdList(logger, writer, rnibReaderProvider) - assert.Equal(t, writer.Result().StatusCode, http.StatusOK) - bodyBytes, err := ioutil.ReadAll(writer.Body) - assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}},{\"inventoryName\":\"test3\",\"globalNbId\":{\"plmnId\":\"plmnId3\",\"nbId\":\"nbId3\"}}]",string(bodyBytes) ) -} \ No newline at end of file