import (
"e2mgr/configuration"
+ "e2mgr/managers"
"e2mgr/mocks"
"e2mgr/models"
"e2mgr/services"
"testing"
)
-func setupDeleteEnbRequestHandlerTest(t *testing.T) (*DeleteEnbRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) {
+func setupDeleteEnbRequestHandlerTest(t *testing.T, emptyList bool) (*DeleteEnbRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) {
log := initLog(t)
config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
readerMock := &mocks.RnibReaderMock{}
writerMock := &mocks.RnibWriterMock{}
rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
- handler := NewDeleteEnbRequestHandler(log, rnibDataService)
+ ranListManager := managers.NewRanListManager(log, rnibDataService)
+ if !emptyList {
+ nbIdentity := &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}
+ writerMock.On("AddNbIdentity", entities.Node_ENB, nbIdentity).Return(nil)
+ if err := ranListManager.AddNbIdentity(entities.Node_ENB, nbIdentity); err != nil {
+ t.Errorf("#setupDeleteEnbRequestHandlerTest - Failed to add nbIdentity prior to DeleteEnb test")
+ }
+ }
+ handler := NewDeleteEnbRequestHandler(log, rnibDataService, ranListManager)
return handler, readerMock, writerMock
}
func TestHandleDeleteEnbSuccess(t *testing.T) {
- handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
- ranName := "test1"
+ ranName := "ran1"
var rnibError error
nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
writerMock.On("RemoveEnb", nodebInfo).Return(nil)
+ writerMock.On("RemoveNbIdentity", entities.Node_ENB, &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}).Return(nil)
result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
assert.Nil(t, err)
assert.NotNil(t, result)
- assert.IsType(t, &models.DeleteEnbResponse{}, result)
+ assert.IsType(t, &models.NodebResponse{}, result)
+ readerMock.AssertExpectations(t)
+ writerMock.AssertExpectations(t)
+}
+
+func TestHandleDeleteEnbSuccessNoEnb(t *testing.T) {
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, true)
+
+ ranName := "ran1"
+ var rnibError error
+ nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
+ readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
+ writerMock.On("RemoveEnb", nodebInfo).Return(nil)
+ result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
+ assert.Nil(t, err)
+ assert.NotNil(t, result)
+ assert.IsType(t, &models.NodebResponse{}, result)
readerMock.AssertExpectations(t)
writerMock.AssertExpectations(t)
}
func TestHandleDeleteEnbInternalGetNodebError(t *testing.T) {
- handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
- ranName := "test1"
+ ranName := "ran1"
rnibError := errors.New("for test")
var nodebInfo *entities.NodebInfo
readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
}
func TestHandleDeleteEnbInternalRemoveEnbError(t *testing.T) {
- handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
- ranName := "test1"
+ ranName := "ran1"
rnibError := errors.New("for test")
nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
writerMock.AssertExpectations(t)
}
+func TestHandleDeleteEnbFromNetworkError(t *testing.T) {
+ handler, readerMock, _ := setupDeleteEnbRequestHandlerTest(t, false)
+ ranName := "ran1"
+ nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB, SetupFromNetwork: true}
+ readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
+ result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
+ assert.NotNil(t, err)
+ assert.Nil(t, result)
+ readerMock.AssertExpectations(t)
+}
+
+func TestHandleDeleteEnbInternalRemoveNbIdentityError(t *testing.T) {
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
+
+ ranName := "ran1"
+ rnibError := errors.New("for test")
+ nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
+ readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
+ writerMock.On("RemoveEnb", nodebInfo).Return(nil)
+ writerMock.On("RemoveNbIdentity", entities.Node_ENB, &entities.NbIdentity{InventoryName: "ran1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}).Return(rnibError)
+ result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
+ assert.NotNil(t, err)
+ assert.Nil(t, result)
+ readerMock.AssertExpectations(t)
+ writerMock.AssertExpectations(t)
+}
+
func TestHandleDeleteEnbResourceNotFoundError(t *testing.T) {
- handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
- ranName := "test1"
+ ranName := "ran1"
rnibError := common.NewResourceNotFoundError("for test")
var nodebInfo *entities.NodebInfo
readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
}
func TestHandleDeleteEnbNodeTypeNotEnbError(t *testing.T) {
- handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
+ handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false)
- ranName := "test1"
+ ranName := "ran1"
nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_GNB}
readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})