err error
}
-type saveNodebParams struct {
+type addEnbParams struct {
err error
}
type controllerAddEnbTestContext struct {
getNodebInfoResult *getNodebInfoResult
- saveNodebParams *saveNodebParams
+ addEnbParams *addEnbParams
addNbIdentityParams *addNbIdentityParams
requestBody map[string]interface{}
expectedStatusCode int
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)
+ updateGnbManager := managers.NewUpdateGnbManager(log, rnibDataService, nodebValidator)
+ handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager, updateGnbManager, ranListManager)
controller := NewNodebController(log, handlerProvider)
return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager, ranListManager
}
ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService)
nodebValidator := managers.NewNodebValidator()
updateEnbManager := managers.NewUpdateEnbManager(log, rnibDataService, nodebValidator)
+ updateGnbManager := managers.NewUpdateGnbManager(log, rnibDataService, nodebValidator)
- handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager, ranListManager)
+ handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager, updateGnbManager, ranListManager)
controller := NewNodebController(log, handlerProvider)
return controller, readerMock, writerMock, nbIdentity
}
}
func TestSetGeneralConfigurationHandlerRnibError(t *testing.T) {
- controller, readerMock, _, _, _ , _:= setupControllerTest(t)
+ controller, readerMock, _, _, _, _ := setupControllerTest(t)
configuration := &entities.GeneralConfiguration{}
readerMock.On("GetGeneralConfiguration").Return(configuration, e2managererrors.NewRnibDbError())
controller.GetNodebIdList(writer, req)
assert.Equal(t, context.expectedStatusCode, writer.Result().StatusCode)
bodyBytes, _ := ioutil.ReadAll(writer.Body)
- assert.Equal(t, context.expectedJsonResponse, string(bodyBytes))
+ assert.Contains(t, context.expectedJsonResponse, string(bodyBytes))
}
func activateControllerUpdateEnbMocks(context *controllerUpdateEnbTestContext, readerMock *mocks.RnibReaderMock, writerMock *mocks.RnibWriterMock, updateEnbRequest *models.UpdateEnbRequest) {
}
func buildUpdateGnbRequest(context *controllerUpdateGnbTestContext) *http.Request {
- updateGnbUrl := fmt.Sprintf("/nodeb/%s/update", RanName)
+ updateGnbUrl := fmt.Sprintf("/nodeb/gnb/%s", RanName)
requestBody := getJsonRequestAsBuffer(context.requestBody)
req, _ := http.NewRequest(http.MethodPut, updateGnbUrl, requestBody)
req.Header.Set("Content-Type", "application/json")
readerMock.On("GetNodeb", RanName).Return(context.getNodebInfoResult.nodebInfo, context.getNodebInfoResult.rnibError)
}
- if context.saveNodebParams != nil {
+ if context.addEnbParams != nil {
nodebInfo := entities.NodebInfo{
RanName: addEnbRequest.RanName,
Ip: addEnbRequest.Ip,
ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,
}
- writerMock.On("SaveNodeb", &nodebInfo).Return(context.saveNodebParams.err)
+ writerMock.On("AddEnb", &nodebInfo).Return(context.addEnbParams.err)
}
if context.addNbIdentityParams != nil {
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)
+ writerMock.On("RemoveNbIdentity", entities.Node_ENB, nbIdentity).Return(nil)
}
}
writer := httptest.NewRecorder()
assertControllerDeleteEnb(t, context, writer, readerMock, writerMock)
}
+/*
+UpdateGnb UTs
+*/
+
+// BEGIN - UpdateGnb Validation Failure UTs
+
func TestControllerUpdateGnbEmptyServedNrCells(t *testing.T) {
context := controllerUpdateGnbTestContext{
getNodebInfoResult: nil,
}
}
+// END - UpdateGnb Validation Failure UTs
+
func TestControllerUpdateGnbValidServedNrCellInformationGetNodebNotFound(t *testing.T) {
context := controllerUpdateGnbTestContext{
getNodebInfoResult: &getNodebInfoResult{
RanName: RanName,
ConnectionStatus: entities.ConnectionStatus_CONNECTED,
AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
+ NodeType: entities.Node_ENB,
},
rnibError: nil,
},
},
},
},
- expectedStatusCode: http.StatusInternalServerError,
- expectedJsonResponse: InternalErrorJson,
+ expectedStatusCode: http.StatusBadRequest,
+ expectedJsonResponse: ValidationFailureJson,
}
controllerUpdateGnbTestExecuter(t, &context)
ConnectionStatus: entities.ConnectionStatus_CONNECTED,
AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}},
+ NodeType: entities.Node_GNB,
},
rnibError: nil,
},
ConnectionStatus: entities.ConnectionStatus_CONNECTED,
AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}},
+ NodeType: entities.Node_GNB,
},
rnibError: nil,
},
controllerUpdateGnbTestExecuter(t, &context)
}
+func TestControllerUpdateGnbExistingEmptyCellsSuccess(t *testing.T) {
+ oldServedNrCells := []*entities.ServedNRCell{}
+
+ context := controllerUpdateGnbTestContext{
+ updateGnbCellsParams: &updateGnbCellsParams{
+ err: nil,
+ },
+ getNodebInfoResult: &getNodebInfoResult{
+ nodebInfo: &entities.NodebInfo{
+ RanName: RanName,
+ ConnectionStatus: entities.ConnectionStatus_CONNECTED,
+ AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
+ Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}},
+ NodeType: entities.Node_GNB,
+ },
+ rnibError: nil,
+ },
+ requestBody: map[string]interface{}{
+ "servedNrCells": []interface{}{
+ map[string]interface{}{
+ "servedNrCellInformation": buildServedNrCellInformation(""),
+ "nrNeighbourInfos": []interface{}{
+ buildNrNeighbourInformation(""),
+ },
+ },
+ },
+ },
+ expectedStatusCode: http.StatusOK,
+ expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"CONNECTED\",\"nodeType\":\"GNB\",\"gnb\":{\"servedNrCells\":[{\"servedNrCellInformation\":{\"nrPci\":1,\"cellId\":\"whatever\",\"servedPlmns\":[\"whatever\"],\"nrMode\":\"FDD\",\"choiceNrMode\":{\"fdd\":{}}},\"nrNeighbourInfos\":[{\"nrPci\":1,\"nrCgi\":\"whatever\",\"nrMode\":\"FDD\",\"choiceNrMode\":{\"tdd\":{}}}]}]},\"associatedE2tInstanceAddress\":\"10.0.2.15:38000\"}",
+ }
+
+ controllerUpdateGnbTestExecuter(t, &context)
+}
+
func TestControllerUpdateGnbSuccess(t *testing.T) {
+ oldServedNrCells := generateServedNrCells("whatever1", "whatever2")
+
context := controllerUpdateGnbTestContext{
+ removeServedNrCellsParams: &removeServedNrCellsParams{
+ err: nil,
+ servedNrCells: oldServedNrCells,
+ },
updateGnbCellsParams: &updateGnbCellsParams{
err: nil,
},
RanName: RanName,
ConnectionStatus: entities.ConnectionStatus_CONNECTED,
AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
- Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}},
+ Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}},
+ NodeType: entities.Node_GNB,
},
rnibError: nil,
},
},
},
expectedStatusCode: http.StatusOK,
- expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"CONNECTED\",\"gnb\":{\"servedNrCells\":[{\"servedNrCellInformation\":{\"nrPci\":1,\"cellId\":\"whatever\",\"servedPlmns\":[\"whatever\"],\"nrMode\":\"FDD\",\"choiceNrMode\":{\"fdd\":{}}},\"nrNeighbourInfos\":[{\"nrPci\":1,\"nrCgi\":\"whatever\",\"nrMode\":\"FDD\",\"choiceNrMode\":{\"tdd\":{}}}]}]},\"associatedE2tInstanceAddress\":\"10.0.2.15:38000\"}",
+ expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"CONNECTED\",\"nodeType\":\"GNB\",\"gnb\":{\"servedNrCells\":[{\"servedNrCellInformation\":{\"nrPci\":1,\"cellId\":\"whatever\",\"servedPlmns\":[\"whatever\"],\"nrMode\":\"FDD\",\"choiceNrMode\":{\"fdd\":{}}},\"nrNeighbourInfos\":[{\"nrPci\":1,\"nrCgi\":\"whatever\",\"nrMode\":\"FDD\",\"choiceNrMode\":{\"tdd\":{}}}]}]},\"associatedE2tInstanceAddress\":\"10.0.2.15:38000\"}",
}
controllerUpdateGnbTestExecuter(t, &context)
}
+/*
+UpdateEnb UTs
+*/
+
func TestControllerUpdateEnbInvalidRequest(t *testing.T) {
controller, _, _, _, _, _ := setupControllerTest(t)
controllerUpdateEnbTestExecuter(t, &context)
}
+func TestControllerUpdateEnbMissingRequiredServedCellProps(t *testing.T) {
+
+ r := getUpdateEnbRequest("")
+
+ for _, v := range ServedCellRequiredFields {
+ enb := r["enb"]
+
+ enbMap, _ := enb.(map[string]interface{})
+
+ enbMap["servedCells"] = []interface{}{
+ buildServedCell(v),
+ }
+
+ context := controllerUpdateEnbTestContext{
+ requestBody: r,
+ expectedStatusCode: http.StatusBadRequest,
+ expectedJsonResponse: ValidationFailureJson,
+ }
+
+ controllerUpdateEnbTestExecuter(t, &context)
+ }
+}
+
func TestControllerUpdateEnbValidServedCellsGetNodebNotFound(t *testing.T) {
context := controllerUpdateEnbTestContext{
getNodebInfoResult: &getNodebInfoResult{
controllerUpdateEnbTestExecuter(t, &context)
}
+func TestControllerUpdateEnbExistingEmptyCellsSuccess(t *testing.T) {
+ oldServedCells := []*entities.ServedCellInfo{}
+ context := controllerUpdateEnbTestContext{
+ updateEnbCellsParams: &updateEnbCellsParams{
+ err: nil,
+ },
+ getNodebInfoResult: &getNodebInfoResult{
+ nodebInfo: &entities.NodebInfo{
+ RanName: RanName,
+ ConnectionStatus: entities.ConnectionStatus_CONNECTED,
+ AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress,
+ NodeType: entities.Node_ENB,
+ Configuration: &entities.NodebInfo_Enb{Enb: &entities.Enb{ServedCells: oldServedCells, EnbType: entities.EnbType_MACRO_ENB}},
+ },
+ rnibError: nil,
+ },
+ requestBody: getUpdateEnbRequest(""),
+ expectedStatusCode: http.StatusOK,
+ expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"CONNECTED\",\"nodeType\":\"ENB\",\"enb\":{\"enbType\":\"MACRO_ENB\",\"servedCells\":[{\"pci\":1,\"cellId\":\"whatever\",\"tac\":\"whatever3\",\"broadcastPlmns\":[\"whatever\"],\"choiceEutraMode\":{\"fdd\":{}},\"eutraMode\":\"FDD\"}]},\"associatedE2tInstanceAddress\":\"10.0.2.15:38000\"}",
+ }
+
+ controllerUpdateEnbTestExecuter(t, &context)
+}
+
+
func TestControllerUpdateEnbSuccess(t *testing.T) {
oldServedCells := generateServedCells("whatever1", "whatever2")
context := controllerUpdateEnbTestContext{
controllerUpdateEnbTestExecuter(t, &context)
}
+/*
+AddEnb UTs
+*/
+
func TestControllerAddEnbGetNodebInternalError(t *testing.T) {
context := controllerAddEnbTestContext{
getNodebInfoResult: &getNodebInfoResult{
func TestControllerAddEnbSaveNodebFailure(t *testing.T) {
context := controllerAddEnbTestContext{
- saveNodebParams: &saveNodebParams{
- err: common.NewInternalError(errors.New("#reader.SaveeNodeb - Internal Error")),
+ addEnbParams: &addEnbParams{
+ err: common.NewInternalError(errors.New("#reader.AddEnb - Internal Error")),
},
getNodebInfoResult: &getNodebInfoResult{
nodebInfo: nil,
func TestControllerAddEnbAddNbIdentityFailure(t *testing.T) {
context := controllerAddEnbTestContext{
- saveNodebParams: &saveNodebParams{
+ addEnbParams: &addEnbParams{
err: nil,
},
addNbIdentityParams: &addNbIdentityParams{
}
}
-func TestControllerUpdateEnbMissingRequiredServedCellProps(t *testing.T) {
-
- r := getUpdateEnbRequest("")
-
- for _, v := range ServedCellRequiredFields {
- enb := r["enb"]
-
- enbMap, _ := enb.(map[string]interface{})
-
- enbMap["servedCells"] = []interface{}{
- buildServedCell(v),
- }
-
- context := controllerUpdateEnbTestContext{
- requestBody: r,
- expectedStatusCode: http.StatusBadRequest,
- expectedJsonResponse: ValidationFailureJson,
- }
-
- controllerUpdateEnbTestExecuter(t, &context)
- }
-}
-
func TestControllerAddEnbMissingRequiredServedCellProps(t *testing.T) {
r := getAddEnbRequest("")
func TestControllerAddEnbSuccess(t *testing.T) {
context := controllerAddEnbTestContext{
- saveNodebParams: &saveNodebParams{
+ addEnbParams: &addEnbParams{
err: nil,
},
addNbIdentityParams: &addNbIdentityParams{
controllerDeleteEnbTestExecuter(t, &context, false)
}
+/*
+DeleteEnb UTs
+*/
+
func TestControllerDeleteEnbNodebNotExistsFailure(t *testing.T) {
context := controllerDeleteEnbTestContext{
getNodebInfoResult: &getNodebInfoResult{
return b
}
+/*
+GetNodeb UTs
+*/
+
func TestControllerGetNodebSuccess(t *testing.T) {
ranName := "test"
var rnibError error
nodebIdList: nodebIdList,
rnibError: rnibError,
expectedStatusCode: http.StatusOK,
- expectedJsonResponse: "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]",
+ expectedJsonResponse: "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}][{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}},{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}}]",
}
controllerGetNodebIdListTestExecuter(t, &context)