e2Error, _ := err.(*e2managererrors.ResourceNotFoundError)
errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message}
httpError = http.StatusNotFound
-
+ case *e2managererrors.E2TInstanceAbsenceError:
+ e2Error, _ := err.(*e2managererrors.E2TInstanceAbsenceError)
+ errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message}
+ httpError = http.StatusServiceUnavailable
default:
e2Error := e2managererrors.NewInternalError()
errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message}
"bytes"
"e2mgr/configuration"
"e2mgr/e2managererrors"
- //"e2mgr/e2pdus"
+ "e2mgr/e2pdus"
"e2mgr/logger"
"e2mgr/managers"
"e2mgr/mocks"
expectedJsonResponse string
}
-func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock) {
+func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock) {
log := initLog(t)
config := configuration.ParseConfiguration()
rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
rmrSender := getRmrSender(rmrMessengerMock, log)
ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService)
- e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log)
+ e2tInstancesManager := &mocks.E2TInstancesManagerMock{}
handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, ranSetupManager, e2tInstancesManager)
controller := NewNodebController(log, handlerProvider)
- return controller, readerMock, writerMock, rmrMessengerMock
+ return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager
}
func TestX2SetupInvalidBody(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _, _ := setupControllerTest(t)
header := http.Header{}
header.Set("Content-Type", "application/json")
assert.Equal(t, e2managererrors.NewInvalidJsonError().Code, errorResponse.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}
-// readerMock.On("GetNodeb", ranName).Return(nb, nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedX2setupRequest
-// var xAction[]byte
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, nil)
-//
-// header := http.Header{}
-// header.Set("Content-Type", "application/json")
-// httpRequest := tests.GetHttpRequest()
-// httpRequest.Header = header
-//
-// 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)
-//
-// ranName := "test"
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedEndcX2setupRequest
-// var xAction[]byte
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything).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)
-//
-// assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)
-//}
+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
+ nbUpdated.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil)
+
+ var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1, AssociatedE2TInstanceAddress:"10.0.2.15:8989"}
+ writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil)
+
+ payload := e2pdus.PackedX2setupRequest
+ var xAction []byte
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, nil)
+
+ header := http.Header{}
+ header.Set("Content-Type", "application/json")
+ httpRequest := tests.GetHttpRequest()
+ httpRequest.Header = header
+
+ 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)
+
+ 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
+ nbUpdated.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil)
+
+ var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1, AssociatedE2TInstanceAddress:"10.0.2.15:8989"}
+ writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil)
+
+ payload := e2pdus.PackedEndcX2setupRequest
+ var xAction[]byte
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything).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)
+
+ assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)
+}
func TestShutdownHandlerRnibError(t *testing.T) {
- controller, readerMock, _, _ := setupControllerTest(t)
+ controller, readerMock, _, _, _ := setupControllerTest(t)
rnibErr := &common.ResourceNotFoundError{}
var nbIdentityList []*entities.NbIdentity
}
func controllerGetNodebTestExecuter(t *testing.T, context *controllerGetNodebTestContext) {
- controller, readerMock, _, _ := setupControllerTest(t)
+ controller, readerMock, _, _, _ := setupControllerTest(t)
writer := httptest.NewRecorder()
readerMock.On("GetNodeb", context.ranName).Return(context.nodebInfo, context.rnibError)
req, _ := http.NewRequest("GET", "/nodeb", nil)
}
func controllerGetNodebIdListTestExecuter(t *testing.T, context *controllerGetNodebIdListTestContext) {
- controller, readerMock, _, _ := setupControllerTest(t)
+ controller, readerMock, _, _, _ := setupControllerTest(t)
writer := httptest.NewRecorder()
readerMock.On("GetListNodebIds").Return(context.nodebIdList, context.rnibError)
req, _ := http.NewRequest("GET", "/nodeb/ids", nil)
}
func TestHeaderValidationFailed(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _, _ := setupControllerTest(t)
writer := httptest.NewRecorder()
}
func TestShutdownStatusNoContent(t *testing.T) {
- controller, readerMock, _, _ := setupControllerTest(t)
+ controller, readerMock, _, _, _ := setupControllerTest(t)
var rnibError error
nbIdentityList := []*entities.NbIdentity{}
}
func TestHandleInternalError(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _, _ := setupControllerTest(t)
writer := httptest.NewRecorder()
err := e2managererrors.NewInternalError()
}
func TestHandleCommandAlreadyInProgressError(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _, _ := setupControllerTest(t)
writer := httptest.NewRecorder()
err := e2managererrors.NewCommandAlreadyInProgressError()
assert.Equal(t, errorResponse.Message, err.Message)
}
+func TestHandleE2TInstanceAbsenceError(t *testing.T) {
+ controller, _, _, _, _ := setupControllerTest(t)
+
+ writer := httptest.NewRecorder()
+ err := e2managererrors.NewE2TInstanceAbsenceError()
+
+ controller.handleErrorResponse(err, writer)
+ var errorResponse = parseJsonRequest(t, writer.Body)
+
+ assert.Equal(t, http.StatusServiceUnavailable, writer.Result().StatusCode)
+ assert.Equal(t, errorResponse.Code, err.Code)
+ assert.Equal(t, errorResponse.Message, err.Message)
+}
+
func TestValidateHeaders(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _, _ := setupControllerTest(t)
header := http.Header{}
header.Set("Content-Type", "application/json")
}
func TestX2ResetHandleSuccessfulRequestedCause(t *testing.T) {
- controller, readerMock, _, rmrMessengerMock := setupControllerTest(t)
+ controller, readerMock, _, rmrMessengerMock, _ := setupControllerTest(t)
ranName := "test1"
payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40}
- var xAction[]byte
+ var xAction []byte
msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction)
rmrMessengerMock.On("SendMsg", msg, mock.Anything).Return(msg, nil)
}
func TestX2ResetHandleSuccessfulRequestedDefault(t *testing.T) {
- controller, readerMock, _, rmrMessengerMock := setupControllerTest(t)
+ controller, readerMock, _, rmrMessengerMock, _ := setupControllerTest(t)
ranName := "test1"
// o&m intervention
payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
- var xAction[]byte
+ var xAction []byte
msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction)
rmrMessengerMock.On("SendMsg", msg).Return(msg, nil)
}
func TestX2ResetHandleFailureInvalidBody(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _ , _:= setupControllerTest(t)
ranName := "test1"
}
func TestHandleErrorResponse(t *testing.T) {
- controller, _, _, _ := setupControllerTest(t)
+ controller, _, _, _ , _:= setupControllerTest(t)
writer := httptest.NewRecorder()
controller.handleErrorResponse(e2managererrors.NewRnibDbError(), writer)
--- /dev/null
+//
+// Copyright 2019 AT&T Intellectual Property
+// Copyright 2019 Nokia
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package e2managererrors
+
+type E2TInstanceAbsenceError struct {
+ *BaseError
+}
+
+func NewE2TInstanceAbsenceError() *E2TInstanceAbsenceError {
+ return &E2TInstanceAbsenceError{
+ &BaseError{
+ Code: 510,
+ Message: "The New RAN can't be added, please try later.",
+ },
+ }
+}
+
+func (e *E2TInstanceAbsenceError) Error() string {
+ return e.Message
+}
type SetupRequestHandler struct {
rNibDataService services.RNibDataService
logger *logger.Logger
- ranSetupManager *managers.RanSetupManager
+ ranSetupManager managers.IRanSetupManager
protocol entities.E2ApplicationProtocol
e2tInstancesManager managers.IE2TInstancesManager
}
func NewSetupRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService,
- ranSetupManager *managers.RanSetupManager, protocol entities.E2ApplicationProtocol, e2tInstancesManager managers.IE2TInstancesManager) *SetupRequestHandler {
+ ranSetupManager managers.IRanSetupManager, protocol entities.E2ApplicationProtocol, e2tInstancesManager managers.IE2TInstancesManager) *SetupRequestHandler {
return &SetupRequestHandler{
logger: logger,
rNibDataService: rNibDataService,
}
}
-func (handler *SetupRequestHandler) Handle(request models.Request) (models.IResponse, error) {
+func (h *SetupRequestHandler) Handle(request models.Request) (models.IResponse, error) {
setupRequest := request.(models.SetupRequest)
- err := handler.validateRequestDetails(setupRequest)
+ err := h.validateRequestDetails(setupRequest)
if err != nil {
return nil, err
}
- nodebInfo, err := handler.rNibDataService.GetNodeb(setupRequest.RanName)
+ nodebInfo, err := h.rNibDataService.GetNodeb(setupRequest.RanName)
if err != nil {
_, ok := err.(*common.ResourceNotFoundError)
if !ok {
- handler.logger.Errorf("#SetupRequestHandler.Handle - failed to get nodeB entity for ran name: %v from RNIB. Error: %s",
- setupRequest.RanName, err.Error())
+ h.logger.Errorf("#SetupRequestHandler.Handle - failed to get nodeB entity for ran name: %v from RNIB. Error: %s", setupRequest.RanName, err)
return nil, e2managererrors.NewRnibDbError()
}
- result := handler.connectNewRan(&setupRequest, handler.protocol)
+ result := h.connectNewRan(&setupRequest, h.protocol)
+ return nil, result
+ }
+
+ if nodebInfo.ConnectionStatus == entities.ConnectionStatus_SHUTTING_DOWN {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN: %s in wrong state (%s)", nodebInfo.RanName, entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)])
+ result := e2managererrors.NewWrongStateError(h.getActivityName(h.protocol), entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)])
return nil, result
}
if len(nodebInfo.AssociatedE2TInstanceAddress) != 0 {
- result := handler.connectExistingRanWithAssociatedE2TAddress(nodebInfo)
+ result := h.connectExistingRanWithAssociatedE2TAddress(nodebInfo)
return nil, result
}
- result := handler.connectExistingRanWithoutAssociatedE2TAddress(nodebInfo)
+ result := h.connectExistingRanWithoutAssociatedE2TAddress(nodebInfo)
return nil, result
}
e2tAddress, err := h.e2tInstancesManager.SelectE2TInstance()
if err != nil {
- //TODO: handle
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed selecting E2T instance", nodebInfo.RanName)
+
+ // TODO: reset connection attempts?
+
+ if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED {
+ return err
+ }
+
+ nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+ updateError := h.rNibDataService.UpdateNodebInfo(nodebInfo)
+
+ if updateError != nil {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed updating nodeb. error: %s", nodebInfo.RanName, updateError)
+ }
+
return err
}
if err != nil {
h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed associating ran to e2t address %s. error: %s", nodebInfo.RanName, e2tAddress, err)
- return e2managererrors.NewRnibDbError()
+ return err
}
nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
}
func (h *SetupRequestHandler) connectExistingRanWithAssociatedE2TAddress(nodebInfo *entities.NodebInfo) error {
-
- if nodebInfo.ConnectionStatus == entities.ConnectionStatus_SHUTTING_DOWN {
- h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN: %s in wrong state (%s)", nodebInfo.RanName, entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)])
- return e2managererrors.NewWrongStateError(h.getActivityName(h.protocol), entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)])
- }
-
status := entities.ConnectionStatus_CONNECTING
if nodebInfo.ConnectionStatus == entities.ConnectionStatus_CONNECTED {
status = nodebInfo.ConnectionStatus
}
-
nodebInfo.ConnectionAttempts = 0
-
err := h.rNibDataService.UpdateNodebInfo(nodebInfo)
if err != nil {
h.logger.Infof("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - successfully updated nodeb in rNib", nodebInfo.RanName)
+
result := h.ranSetupManager.ExecuteSetup(nodebInfo, status)
return result
}
e2tAddress, err := h.e2tInstancesManager.SelectE2TInstance()
if err != nil {
- //TODO: handle
+ h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed selecting E2T instance", request.RanName)
return err
}
if err != nil {
h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed associating ran to e2t address %s. error: %s", request.RanName, e2tAddress, err)
- return e2managererrors.NewRnibDbError()
+ return err
}
nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol, e2tAddress)
import (
"e2mgr/configuration"
"e2mgr/e2managererrors"
- "e2mgr/managers"
"e2mgr/mocks"
"e2mgr/models"
"e2mgr/services"
+ "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"
- "reflect"
+ "github.com/stretchr/testify/assert"
"testing"
)
-//func TestSetupHandleNewRanSave_Error(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-//
-// ranName := "RanName"
-// rnibErr := &common.ResourceNotFoundError{}
-// sr := models.SetupRequest{"127.0.0.1", 8080, ranName,}
-//
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, rnibErr)
-//
-// vErr := &common.ValidationError{}
-// updatedNb, _ := createInitialNodeInfo(&sr, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-// writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(vErr)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, Ip: sr.RanIp, Port: uint32(sr.RanPort), ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedEndcX2setupRequest
-// xaction := []byte(ranName)
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, nil)
-//
-// _, actual := handler.Handle(sr)
-// expected := &e2managererrors.RnibDbError{}
-//
-// if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
-// t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
-// }
-//
-// writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1)
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
-//}
-//
-//func TestSetupHandleNewRan_Success(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-//
-// ranName := "RanName"
-// rnibErr := &common.ResourceNotFoundError{}
-// sr := models.SetupRequest{"127.0.0.1", 8080, ranName,}
-//
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, rnibErr)
-//
-// updatedNb, _ := createInitialNodeInfo(&sr, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-// writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, Ip: sr.RanIp, Port: uint32(sr.RanPort), ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedEndcX2setupRequest
-// xaction := []byte(ranName)
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, nil)
-//
-// _, actual := handler.Handle(sr)
-//
-// assert.Nil(t, actual)
-//
-// writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1)
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
-//}
+const E2TAddress = "10.0.2.15:8989"
+const RanName = "test"
-//func TestEndcSetupHandleRmr_Error(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-//
-// ranName := "RanName"
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// var nbDisconnected = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 0}
-// writerMock.On("UpdateNodebInfo", nbDisconnected).Return(nil)
-//
-// payload := e2pdus.PackedEndcX2setupRequest
-// xaction := []byte(ranName)
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
-//
-// rmrErr := &e2managererrors.RmrError{}
-// rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, rmrErr)
-//
-// sr := models.SetupRequest{"127.0.0.1", 8080, ranName,}
-// _, actual := handler.Handle(sr)
-//
-// if reflect.TypeOf(actual) != reflect.TypeOf(rmrErr) {
-// t.Errorf("Error actual = %v, and Expected = %v.", actual, rmrErr)
-// }
-//
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
-//}
+func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.E2TInstancesManagerMock, *mocks.RanSetupManagerMock) {
+ log := initLog(t)
+ config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
-//func TestEndcSetupHandleExistingDisconnectedRan_Success(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-//
-// ranName := "RanName"
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedEndcX2setupRequest
-// xaction := []byte(ranName)
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything).Return(msg, nil)
-//
-// sr := models.SetupRequest{"127.0.0.1", 8080, ranName,}
-// _, actual := handler.Handle(sr)
-//
-// assert.Nil(t, actual)
-//
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
-//}
+ readerMock := &mocks.RnibReaderMock{}
+ writerMock := &mocks.RnibWriterMock{}
-//func TestX2SetupHandleExistingConnectedRan_Success(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
-//
-// ranName := "RanName"
-// nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
-// readerMock.On("GetNodeb", ranName).Return(nb, nil)
-//
-// var nbUpdated = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
-// writerMock.On("UpdateNodebInfo", nbUpdated).Return(nil)
-//
-// payload := e2pdus.PackedX2setupRequest
-// xaction := []byte(ranName)
-// msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
-//
-// rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
-//
-// sr := models.SetupRequest{"127.0.0.1", 8080, ranName,}
-// _, actual := handler.Handle(sr)
-//
-// assert.Nil(t, actual)
-//
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
-//}
+ rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
-func TestX2SetupHandleRnibGet_Error(t *testing.T) {
- readerMock, _, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ ranSetupManagerMock := &mocks.RanSetupManagerMock{}
+ e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{}
+ handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManagerMock, protocol, e2tInstancesManagerMock)
- rnibErr := &common.ValidationError{}
- nb := &entities.NodebInfo{RanName: "RanName", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
- readerMock.On("GetNodeb", "RanName").Return(nb, rnibErr)
+ return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock
+}
- sr := models.SetupRequest{"127.0.0.1", 8080, "RanName",}
- _, actual := handler.Handle(sr)
+func TestX2SetupHandleNoPortError(t *testing.T) {
+ readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
- expected := &e2managererrors.RnibDbError{}
- if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
- t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
- }
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+ sr := models.SetupRequest{"127.0.0.1", 0, RanName,}
+ _, err := handler.Handle(sr)
+ assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
+ readerMock.AssertNotCalled(t, "GetNodeb")
}
-//func TestEndcSetupHandleShuttingDownRan_Error(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
-//
-// nb := &entities.NodebInfo{RanName: "RanName", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
-// readerMock.On("GetNodeb", "RanName").Return(nb, nil)
-//
-// sr := models.SetupRequest{"127.0.0.1", 8080, "RanName",}
-// _, actual := handler.Handle(sr)
-//
-// expected := &e2managererrors.WrongStateError{}
-// if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
-// t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
-// }
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
-//}
-
-//func TestX2SetupHandleShuttingDownRan_Error(t *testing.T) {
-// readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
-//
-// nb := &entities.NodebInfo{RanName: "RanName", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
-// readerMock.On("GetNodeb", "RanName").Return(nb, nil)
-//
-// sr := models.SetupRequest{"127.0.0.1", 8080, "RanName",}
-// _, actual := handler.Handle(sr)
-//
-// expected := &e2managererrors.WrongStateError{}
-// if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
-// t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
-// }
-// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
-// rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
-//}
-
-func TestX2SetupHandleNoPort_Error(t *testing.T) {
- _, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
-
- sr := models.SetupRequest{"127.0.0.1", 0, "RanName",}
- _, actual := handler.Handle(sr)
-
- expected := &e2managererrors.RequestValidationError{}
- if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
- t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
- }
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+func TestX2SetupHandleNoRanNameError(t *testing.T) {
+ readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+
+ sr := models.SetupRequest{RanPort: 8080, RanIp: "127.0.0.1"}
+ _, err := handler.Handle(sr)
+ assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
+ readerMock.AssertNotCalled(t, "GetNodeb")
}
-func TestX2SetupHandleNoRanName_Error(t *testing.T) {
- _, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+func TestX2SetupHandleNoIpError(t *testing.T) {
+ readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
- sr := models.SetupRequest{}
- sr.RanPort = 8080
- sr.RanIp = "127.0.0.1"
+ sr := models.SetupRequest{RanPort: 8080, RanName: RanName}
+ _, err := handler.Handle(sr)
+ assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
+ readerMock.AssertNotCalled(t, "GetNodeb")
+}
- _, actual := handler.Handle(sr)
+func TestX2SetupHandleInvalidIpError(t *testing.T) {
+ readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
- expected := &e2managererrors.RequestValidationError{}
- if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
- t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
- }
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+ sr := models.SetupRequest{RanPort: 8080, RanName: RanName, RanIp: "invalid ip"}
+ _, err := handler.Handle(sr)
+ assert.IsType(t, &e2managererrors.RequestValidationError{}, err)
+ readerMock.AssertNotCalled(t, "GetNodeb")
}
-func TestX2SetupHandleNoIP_Error(t *testing.T) {
- _, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+func TestX2SetupHandleGetNodebFailure(t *testing.T) {
+ readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
- sr := models.SetupRequest{}
- sr.RanPort = 8080
- sr.RanName = "RanName"
+ rnibErr := &common.ValidationError{}
+ nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,}
+ readerMock.On("GetNodeb", RanName).Return(nb, rnibErr)
- _, actual := handler.Handle(sr)
+ sr := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(sr)
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+}
- expected := &e2managererrors.RequestValidationError{}
- if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
- t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
- }
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
+ writerMock.AssertNotCalled(t, "SaveNodeb")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
}
-func TestX2SetupHandleInvalidIp_Error(t *testing.T) {
- _, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
+ writerMock.AssertNotCalled(t, "SaveNodeb")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- sr := models.SetupRequest{}
- sr.RanPort = 8080
- sr.RanName = "RanName"
- sr.RanIp = "invalid ip"
+func TestSetupNewRanAssociateRanFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ writerMock.AssertNotCalled(t, "SaveNodeb")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- _, actual := handler.Handle(sr)
+func TestSetupNewRanSaveNodebFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+ writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf("")))
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- expected := &e2managererrors.RequestValidationError{}
- if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
- t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
- }
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
- rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+func TestSetupNewRanSetupDbError(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+ writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
}
-func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock) {
- log := initLog(t)
- config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
+func TestSetupNewRanSetupRmrError(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+ writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError())
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.RmrError{}, err)
+}
- readerMock := &mocks.RnibReaderMock{}
- writerMock := &mocks.RnibWriterMock{}
+func TestSetupNewRanSetupSuccess(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+ writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil)
+ _, err := handler.Handle(setupRequest)
+ assert.Nil(t, err)
+}
- rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrSender := getRmrSender(rmrMessengerMock, log)
+func TestX2SetupExistingRanShuttingDown(t *testing.T) {
+ readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.WrongStateError{}, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
+func TestEndcSetupExistingRanShuttingDown(t *testing.T) {
+ readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST)
+ readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.WrongStateError{}, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService)
- e2tInstancesManager := &mocks.E2TInstancesManagerMock{}
- handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManager)
+func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError())
+ updatedNb := *nb
+ updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
- return readerMock, writerMock, handler, rmrMessengerMock, e2tInstancesManager
+func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
+ updatedNb := *nb
+ updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError())
+ updatedNb := *nb
+ updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorDisconnected(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:"", ConnectionStatus:entities.ConnectionStatus_DISCONNECTED}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, e2managererrors.NewE2TInstanceAbsenceError())
+ setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
+ _, err := handler.Handle(setupRequest)
+ assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err)
+ writerMock.AssertNotCalled(t, "UpdateNodebInfo")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ writerMock.AssertNotCalled(t, "UpdateNodebInfo")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebFails(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ updatedNb := *nb
+ updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+ updatedNb.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ updatedNb := *nb
+ updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+ updatedNb.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+}
+
+func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
+ e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil)
+ updatedNb := *nb
+ updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+ updatedNb.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil)
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.Nil(t, err)
+}
+
+func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ updatedNb := *nb
+ updatedNb.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
+ e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
+ ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup")
+}
+
+func TestSetupExistingConnectedRanWithAssocE2TInstanceSuccess(t *testing.T) {
+ readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED}
+ readerMock.On("GetNodeb", RanName).Return(nb , nil)
+ updatedNb := *nb
+ updatedNb.ConnectionAttempts = 0
+ writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+ ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(nil)
+ _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+ assert.Nil(t, err)
+ e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
+ e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan")
+}
\ No newline at end of file
e2tAddress := unmarshalledPayload.Address
+ if len(e2tAddress) == 0 {
+ h.logger.Errorf("#E2TermInitNotificationHandler - Empty E2T address received")
+ return
+ }
+
e2tInstance, err := h.e2tInstancesManager.GetE2TInstance(e2tAddress)
if err != nil {
e2tInstancesManagerMock.AssertNotCalled(t, "AddE2TInstance")
}
+func TestE2TermInitEmptyE2TAddress(t *testing.T) {
+ _, handler, _, _, _, e2tInstancesManagerMock := initRanLostConnectionTest(t)
+ notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte("{\"address\":\"\"}")}
+ handler.Handle(notificationRequest)
+ e2tInstancesManagerMock.AssertNotCalled(t, "GetE2TInstance")
+ e2tInstancesManagerMock.AssertNotCalled(t, "AddE2TInstance")
+}
func TestE2TermInitGetE2TInstanceFailure(t *testing.T) {
_, handler, _, _, _, e2tInstancesManagerMock := initRanLostConnectionTest(t)
+//
+// Copyright 2019 AT&T Intellectual Property
+// Copyright 2019 Nokia
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
package managers
import (
+ "e2mgr/e2managererrors"
"e2mgr/logger"
"e2mgr/services"
- "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"
"math"
}
return e2tInstances, nil
-
}
func findActiveE2TInstanceWithMinimumAssociatedRans(e2tInstances []*entities.E2TInstance) *entities.E2TInstance {
func (m *E2TInstancesManager) AddE2TInstance(e2tAddress string) error {
- if len(e2tAddress) == 0 {
- m.logger.Errorf("#AddE2TInstance - Empty E2T address received")
- return fmt.Errorf("empty E2T address")
- }
-
e2tInstance := entities.NewE2TInstance(e2tAddress)
err := m.rnibDataService.SaveE2TInstance(e2tInstance)
e2tInstances, err := m.GetE2TInstances()
if err != nil {
- //TODO: handle
- return "", err
+ m.logger.Errorf("#E2TInstancesManager.SelectE2TInstance - failed retrieving E2T instances. error: %s", err)
+ return "", e2managererrors.NewRnibDbError()
}
if len(e2tInstances) == 0 {
- //TODO: handle
- return "", err
+ m.logger.Errorf("#E2TInstancesManager.SelectE2TInstance - No E2T instance found")
+ return "", e2managererrors.NewE2TInstanceAbsenceError()
}
min := findActiveE2TInstanceWithMinimumAssociatedRans(e2tInstances)
if min == nil {
m.logger.Errorf("#SelectE2TInstance - No active E2T instance found")
- //TODO: handle
- return "", fmt.Errorf("No active E2T instance found")
+ return "", e2managererrors.NewE2TInstanceAbsenceError()
}
return min.Address, nil
if err != nil {
m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
- return err
+ return e2managererrors.NewRnibDbError()
}
e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, ranName)
if err != nil {
m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err)
- return err
+ return e2managererrors.NewRnibDbError()
}
return nil
"testing"
)
-const E2TAddress = "10.0.2.15"
+const E2TAddress = "10.10.2.15:9800"
+const E2TAddress2 = "10.10.2.16:9800"
func initE2TInstancesManagerTest(t *testing.T) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *E2TInstancesManager) {
logger, err := logger.InitLogger(logger.DebugLevel)
return readerMock, writerMock, e2tInstancesManager
}
-func TestAddNewE2TInstanceEmptyAddress(t *testing.T) {
- _, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
- err := e2tInstancesManager.AddE2TInstance("")
- assert.NotNil(t, err)
- rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-}
-
func TestAddNewE2TInstanceSaveE2TInstanceFailure(t *testing.T) {
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
func TestGetE2TInstanceFailure(t *testing.T) {
rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
- address := "10.10.2.15:9800"
var e2tInstance *entities.E2TInstance
- rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, common.NewInternalError(fmt.Errorf("for test")))
- res, err := e2tInstancesManager.GetE2TInstance(address)
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("for test")))
+ res, err := e2tInstancesManager.GetE2TInstance(E2TAddress)
assert.NotNil(t, err)
assert.Nil(t, res)
}
-//func TestAssociateRanSuccess(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// e2tInfo3 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo3.AssociatedRanCount = 1;
-// e2tInfoList2 := []*entities.E2TInstanceInfo{e2tInfo3, e2tInfo2}
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList2).Return(nil)
-//
-// e2tInstance1 := entities.NewE2TInstance(address1)
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, nil)
-// rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
-//
-// err := e2tInstancesManager.AssociateRan("test1", address1)
-// assert.Nil(t, err)
-// rnibReaderMock.AssertExpectations(t)
-// rnibWriterMock.AssertExpectations(t)
-//}
-//
-//func TestAssociateRanGetListFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-//
-// var e2tInfoList []*entities.E2TInstanceInfo
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.AssociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TAddresses")
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-// rnibReaderMock.AssertNotCalled(t, "GetE2TInstance")
-//}
-//
-//func TestAssociateRanSaveListFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList).Return(common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.AssociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-// rnibReaderMock.AssertNotCalled(t, "GetE2TInstance")
-//}
-//
-//func TestAssociateRanGetInstanceFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList).Return(nil)
-//
-// var e2tInstance1 *entities.E2TInstance
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.AssociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-//}
-//
-//func TestAssociateRanSaveInstanceFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// e2tInfo3 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo3.AssociatedRanCount = 1;
-// e2tInfoList2 := []*entities.E2TInstanceInfo{e2tInfo3, e2tInfo2}
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList2).Return(nil)
-//
-// e2tInstance1 := entities.NewE2TInstance(address1)
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, nil)
-// rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.AssociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibReaderMock.AssertExpectations(t)
-// rnibWriterMock.AssertExpectations(t)
-//}
-//
-//func TestDeassociateRanSuccess(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 1;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 0;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// e2tInfo3 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo3.AssociatedRanCount = 0;
-// e2tInfoList2 := []*entities.E2TInstanceInfo{e2tInfo3, e2tInfo2}
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList2).Return(nil)
-//
-// e2tInstance1 := entities.NewE2TInstance(address1)
-// e2tInstance1.AssociatedRanList = append(e2tInstance1.AssociatedRanList, "test0", "test1")
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, nil)
-// rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.Nil(t, err)
-// rnibReaderMock.AssertExpectations(t)
-// rnibWriterMock.AssertExpectations(t)
-//}
-//
-//func TestDeassociateRanNoInstanceFound(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfoList := []*entities.E2TInstanceInfo{}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.Nil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TAddresses")
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-// rnibReaderMock.AssertNotCalled(t, "GetE2TInstance")
-//}
-//
-//func TestDeassociateRanGetListFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-//
-// var e2tInfoList []*entities.E2TInstanceInfo
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TAddresses")
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-// rnibReaderMock.AssertNotCalled(t, "GetE2TInstance")
-//}
-//
-//func TestDeassociateRanSaveListFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList).Return(common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-// rnibReaderMock.AssertNotCalled(t, "GetE2TInstance")
-//}
-//
-//func TestDeassociateRanGetInstanceFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 0;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 1;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList).Return(nil)
-//
-// var e2tInstance1 *entities.E2TInstance
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
-//}
-//
-//func TestDeassociateRanSaveInstanceFailure(t *testing.T) {
-// rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
-//
-// address1 := "10.10.2.15:9800"
-// e2tInfo1 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo1.AssociatedRanCount = 1;
-// address2 := "10.10.2.15:9801"
-// e2tInfo2 := entities.NewE2TInstanceInfo(address2)
-// e2tInfo2.AssociatedRanCount = 0;
-// e2tInfoList := []*entities.E2TInstanceInfo{e2tInfo1, e2tInfo2}
-// rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
-//
-// e2tInfo3 := entities.NewE2TInstanceInfo(address1)
-// e2tInfo3.AssociatedRanCount = 0;
-// e2tInfoList2 := []*entities.E2TInstanceInfo{e2tInfo3, e2tInfo2}
-// rnibWriterMock.On("SaveE2TAddresses", e2tInfoList2).Return(nil)
-//
-// e2tInstance1 := entities.NewE2TInstance(address1)
-// rnibReaderMock.On("GetE2TInstance", address1).Return(e2tInstance1, nil)
-// rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
-//
-// err := e2tInstancesManager.DissociateRan("test1", address1)
-// assert.NotNil(t, err)
-// rnibReaderMock.AssertExpectations(t)
-// rnibWriterMock.AssertExpectations(t)
-//}
+func TestAssociateRanSuccess(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+ e2tInstance := entities.NewE2TInstance(E2TAddress)
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
+
+ updateE2TInstance := *e2tInstance
+ updateE2TInstance.AssociatedRanList = append(updateE2TInstance.AssociatedRanList, "test1")
+
+ rnibWriterMock.On("SaveE2TInstance", &updateE2TInstance).Return(nil)
+
+ err := e2tInstancesManager.AssociateRan("test1", E2TAddress)
+ assert.Nil(t, err)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestAssociateRanGetInstanceFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ var e2tInstance1 *entities.E2TInstance
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
+
+ err := e2tInstancesManager.AssociateRan("test1", E2TAddress)
+ assert.NotNil(t, err)
+ rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
+}
+
+func TestAssociateRanSaveInstanceFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+ e2tInstance1 := entities.NewE2TInstance(E2TAddress)
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
+ rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
+
+ err := e2tInstancesManager.AssociateRan("test1", E2TAddress)
+ assert.NotNil(t, err)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestDissociateRanSuccess(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ e2tInstance := entities.NewE2TInstance(E2TAddress)
+ e2tInstance.AssociatedRanList = []string{"test0","test1"}
+ updatedE2TInstance := *e2tInstance
+ updatedE2TInstance.AssociatedRanList = []string{"test0"}
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
+ rnibWriterMock.On("SaveE2TInstance", &updatedE2TInstance).Return(nil)
+
+ err := e2tInstancesManager.DissociateRan("test1", E2TAddress)
+ assert.Nil(t, err)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestDissociateRanGetInstanceFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ var e2tInstance1 *entities.E2TInstance
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
+ err := e2tInstancesManager.DissociateRan("test1", E2TAddress)
+ assert.NotNil(t, err)
+ rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
+}
+
+func TestDissociateRanSaveInstanceFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ e2tInstance1 := entities.NewE2TInstance(E2TAddress)
+ rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
+ rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
+
+ err := e2tInstancesManager.DissociateRan("test1", E2TAddress)
+ assert.NotNil(t, err)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestSelectE2TInstancesGetE2TAddressesFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(fmt.Errorf("for test")))
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.NotNil(t, err)
+ assert.Empty(t, address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
+}
+
+func TestSelectE2TInstancesEmptyE2TAddressList(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil)
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.NotNil(t, err)
+ assert.Empty(t, address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
+}
+
+func TestSelectE2TInstancesGetE2TInstancesFailure(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ addresses := []string{E2TAddress}
+ rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
+ rnibReaderMock.On("GetE2TInstances",addresses ).Return([]*entities.E2TInstance{}, common.NewInternalError(fmt.Errorf("for test")))
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.NotNil(t, err)
+ assert.Empty(t, address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestSelectE2TInstancesEmptyE2TInstancesList(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+
+ addresses := []string{E2TAddress}
+ rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
+ rnibReaderMock.On("GetE2TInstances",addresses ).Return([]*entities.E2TInstance{}, nil)
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.NotNil(t, err)
+ assert.Empty(t, address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestSelectE2TInstancesNoActiveE2TInstance(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+ addresses := []string{E2TAddress,E2TAddress2}
+ e2tInstance1 := entities.NewE2TInstance(E2TAddress)
+ e2tInstance1.State = entities.ToBeDeleted
+ e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"}
+ e2tInstance2 := entities.NewE2TInstance(E2TAddress2)
+ e2tInstance2.State = entities.ToBeDeleted
+ e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"}
+
+ rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
+ rnibReaderMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.NotNil(t, err)
+ assert.Equal(t, "", address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
+
+func TestSelectE2TInstancesSuccess(t *testing.T) {
+ rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
+ addresses := []string{E2TAddress,E2TAddress2}
+ e2tInstance1 := entities.NewE2TInstance(E2TAddress)
+ e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"}
+ e2tInstance2 := entities.NewE2TInstance(E2TAddress2)
+ e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"}
+
+ rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
+ rnibReaderMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
+ address, err := e2tInstancesManager.SelectE2TInstance()
+ assert.Nil(t, err)
+ assert.Equal(t, E2TAddress, address)
+ rnibReaderMock.AssertExpectations(t)
+ rnibWriterMock.AssertExpectations(t)
+}
func TestRemoveE2TInstance(t *testing.T) {
_, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
- address1 := "10.10.2.15:9800"
- e2tInstance1 := entities.NewE2TInstance(address1)
+ e2tInstance1 := entities.NewE2TInstance(E2TAddress)
err := e2tInstancesManager.RemoveE2TInstance(e2tInstance1)
assert.Nil(t, err)
}
\ No newline at end of file
rmrSender *rmrsender.RmrSender
}
+type IRanSetupManager interface {
+ ExecuteSetup(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error
+}
+
func NewRanSetupManager(logger *logger.Logger, rmrSender *rmrsender.RmrSender, rnibDataService services.RNibDataService) *RanSetupManager {
return &RanSetupManager{
logger: logger,
--- /dev/null
+// Copyright 2019 AT&T Intellectual Property
+// Copyright 2019 Nokia
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+package mocks
+
+import (
+ "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
+ "github.com/stretchr/testify/mock"
+)
+
+type RanSetupManagerMock struct {
+ mock.Mock
+}
+
+func (m *RanSetupManagerMock) ExecuteSetup(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error {
+ args := m.Called(nodebInfo, status)
+
+ return args.Error(0)
+}
assert.NotEmpty(t, received)
}
-//Integration tests
-//
-//func TestSaveEnbGnbInteg(t *testing.T){
-// for i := 0; i<10; i++{
-// Init("e2Manager", 1)
-// w := GetRNibWriter()
-// nb := entities.NodebInfo{}
-// nb.NodeType = entities.Node_ENB
-// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
-// nb.Ip = "localhost"
-// nb.Port = uint32(5656 + i)
-// enb := entities.Enb{}
-// cell1 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",111 + i), Pci:uint32(11 + i)}
-// cell2 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",222 + i), Pci:uint32(22 + i)}
-// cell3 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",333 + i), Pci:uint32(33 + i)}
-// enb.ServedCells = []*entities.ServedCellInfo{cell1, cell2, cell3}
-// nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
-// plmnId := 0x02f828
-// nbId := 0x4a952a0a
-// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameEnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId + i), NbId:fmt.Sprintf("%02x", nbId + i)}}
-// err := w.SaveNodeb(nbIdentity, &nb)
-// if err != nil{
-// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
-// }
-//
-// nb1 := entities.NodebInfo{}
-// nb1.NodeType = entities.Node_GNB
-// nb1.ConnectionStatus = entities.ConnectionStatus_CONNECTED
-// nb1.Ip = "localhost"
-// nb1.Port = uint32(6565 + i)
-// gnb := entities.Gnb{}
-// gCell1 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",1111 + i), NrPci:uint32(1 + i)}}
-// gCell2 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",2222 + i), NrPci:uint32(2 + i)}}
-// gCell3 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",3333 + i), NrPci:uint32(3 + i)}}
-// gnb.ServedNrCells = []*entities.ServedNRCell{gCell1, gCell2, gCell3,}
-// nb1.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb}
-// nbIdentity = &entities.NbIdentity{InventoryName: fmt.Sprintf("nameGnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId - i), NbId:fmt.Sprintf("%02x", nbId - i)}}
-// err = w.SaveNodeb(nbIdentity, &nb1)
-// if err != nil{
-// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
-// }
-// }
-//}
-//
-//func TestSaveNbRanNamesInteg(t *testing.T){
-// for i := 0; i<10; i++{
-// Init("e2Manager", 1)
-// w := GetRNibWriter()
-// nb := entities.NodebInfo{}
-// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTING
-// nb.Ip = "localhost"
-// nb.Port = uint32(5656 + i)
-// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameOnly%d" ,i)}
-// err := w.SaveNodeb(nbIdentity, &nb)
-// if err != nil{
-// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
-// }
-// }
-//}
-//
-//func TestSaveRanLoadInformationInteg(t *testing.T){
-// Init("e2Manager", 1)
-// w := GetRNibWriter()
-// ranLoadInformation := generateRanLoadInformation()
-// err := w.SaveRanLoadInformation("ran_integ", ranLoadInformation)
-// if err != nil{
-// t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationInteg - Failed to save RanLoadInformation entity. Error: %v", err)
-// }
-//}
-
func TestSaveE2TInstanceSuccess(t *testing.T) {
address := "10.10.2.15:9800"
loadKey, validationErr := common.ValidateAndBuildE2TInstanceKey(address)
rNibErr := w.SaveE2TAddresses(e2tAddresses)
assert.NotNil(t, rNibErr)
assert.IsType(t, &common.InternalError{}, rNibErr)
-}
\ No newline at end of file
+}
+
+//Integration tests
+//
+//func TestSaveEnbGnbInteg(t *testing.T){
+// for i := 0; i<10; i++{
+// Init("e2Manager", 1)
+// w := GetRNibWriter()
+// nb := entities.NodebInfo{}
+// nb.NodeType = entities.Node_ENB
+// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
+// nb.Ip = "localhost"
+// nb.Port = uint32(5656 + i)
+// enb := entities.Enb{}
+// cell1 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",111 + i), Pci:uint32(11 + i)}
+// cell2 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",222 + i), Pci:uint32(22 + i)}
+// cell3 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",333 + i), Pci:uint32(33 + i)}
+// enb.ServedCells = []*entities.ServedCellInfo{cell1, cell2, cell3}
+// nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
+// plmnId := 0x02f828
+// nbId := 0x4a952a0a
+// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameEnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId + i), NbId:fmt.Sprintf("%02x", nbId + i)}}
+// err := w.SaveNodeb(nbIdentity, &nb)
+// if err != nil{
+// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
+// }
+//
+// nb1 := entities.NodebInfo{}
+// nb1.NodeType = entities.Node_GNB
+// nb1.ConnectionStatus = entities.ConnectionStatus_CONNECTED
+// nb1.Ip = "localhost"
+// nb1.Port = uint32(6565 + i)
+// gnb := entities.Gnb{}
+// gCell1 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",1111 + i), NrPci:uint32(1 + i)}}
+// gCell2 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",2222 + i), NrPci:uint32(2 + i)}}
+// gCell3 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",3333 + i), NrPci:uint32(3 + i)}}
+// gnb.ServedNrCells = []*entities.ServedNRCell{gCell1, gCell2, gCell3,}
+// nb1.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb}
+// nbIdentity = &entities.NbIdentity{InventoryName: fmt.Sprintf("nameGnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId - i), NbId:fmt.Sprintf("%02x", nbId - i)}}
+// err = w.SaveNodeb(nbIdentity, &nb1)
+// if err != nil{
+// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
+// }
+// }
+//}
+//
+//func TestSaveNbRanNamesInteg(t *testing.T){
+// for i := 0; i<10; i++{
+// Init("e2Manager", 1)
+// w := GetRNibWriter()
+// nb := entities.NodebInfo{}
+// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTING
+// nb.Ip = "localhost"
+// nb.Port = uint32(5656 + i)
+// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameOnly%d" ,i)}
+// err := w.SaveNodeb(nbIdentity, &nb)
+// if err != nil{
+// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err)
+// }
+// }
+//}
+//
+//func TestSaveRanLoadInformationInteg(t *testing.T){
+// Init("e2Manager", 1)
+// w := GetRNibWriter()
+// ranLoadInformation := generateRanLoadInformation()
+// err := w.SaveRanLoadInformation("ran_integ", ranLoadInformation)
+// if err != nil{
+// t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationInteg - Failed to save RanLoadInformation entity. Error: %v", err)
+// }
+//}