+
+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 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)
+}
+
+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)
+}
+
+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")
+}
+
+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")
+}
+
+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")
+}
+
+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 TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(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 TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(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