X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fhandlers%2Fhttpmsghandlers%2Fsetup_request_handler_test.go;h=9b9880df65173a80302e2c37873a517ec2668245;hb=d6d623cc2eda63be912b4e322c25e492abe86a99;hp=2fc1c5c627eca8a0ea3faacb319045568073a1d5;hpb=804065d75fb5072c32a09a6df3a4ebf2d885c3ca;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go index 2fc1c5c..9b9880d 100644 --- a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go @@ -66,10 +66,10 @@ func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock } -func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock, *mocks.HttpClientMock) { +func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock, *mocks.HttpClientMock, *mocks.E2TInstancesManagerMock) { log := initLog(t) config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} - + config.RoutingManager.BaseUrl = BaseRMUrl readerMock := &mocks.RnibReaderMock{} writerMock := &mocks.RnibWriterMock{} @@ -78,17 +78,17 @@ func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2Applicatio rmrMessengerMock := &mocks.RmrMessengerMock{} rmrSender := getRmrSender(rmrMessengerMock, log) ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService) - e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} httpClientMock := &mocks.HttpClientMock{} rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) - e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) - handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManager, e2tAssociationManager) + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManagerMock, rmClient) + handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManagerMock, e2tAssociationManager) - return readerMock, writerMock, handler, rmrMessengerMock, httpClientMock + return readerMock, writerMock, handler, rmrMessengerMock, httpClientMock, e2tInstancesManagerMock } func mockHttpClientAssociateRan(httpClientMock *mocks.HttpClientMock) { - data := models.NewRoutingManagerE2TData(E2TAddress, RanName) + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} marshaled, _ := json.Marshal(data) body := bytes.NewBuffer(marshaled) url := BaseRMUrl + clients.AssociateRanToE2TInstanceApiSuffix @@ -150,43 +150,64 @@ func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) { 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, "AddRanToInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") writerMock.AssertNotCalled(t, "SaveNodeb") ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") } func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) { - readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) - readerMock.On("GetE2TAddresses").Return([]string{}, nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, _ := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + 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.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) - writerMock.AssertNotCalled(t, "SaveNodeb") - rmrMessengerMock.AssertNotCalled(t, "SendMsg") + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + e2tInstancesManagerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) } func TestSetupNewRanAssociateRanFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) - nbIdentity := &entities.NbIdentity{InventoryName: RanName} + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) + setupRequest := &models.SetupRequest{"127.0.0.1", 8080, RanName,} + nb, nbIdentity := createInitialNodeInfo(setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("SaveNodeb", nbIdentity, mock.Anything).Return(nil) - _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) - assert.IsType(t, &common.ResourceNotFoundError{}, err) - writerMock.AssertExpectations(t) + writerMock.On("UpdateNodebInfo", nb).Return(nil) + nb.AssociatedE2TInstanceAddress = E2TAddress + mockHttpClientAssociateRan(httpClientMock) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + + _, err := handler.Handle(*setupRequest) + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) e2tInstancesManagerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) httpClientMock.AssertExpectations(t) - ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") } 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("AddRanToInstance", RanName, E2TAddress).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf(""))) _, err := handler.Handle(setupRequest) assert.IsType(t, &e2managererrors.RnibDbError{}, err) @@ -197,40 +218,54 @@ 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("AddRanToInstance", RanName, E2TAddress).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError()) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) _, err := handler.Handle(setupRequest) - assert.IsType(t, &common.ResourceNotFoundError{}, err) + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) } 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("AddRanToInstance", RanName, E2TAddress).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError()) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError()) _, err := handler.Handle(setupRequest) - assert.IsType(t, /* &e2managererrors.RmrError{} */ &common.ResourceNotFoundError{}, err) + 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("AddRanToInstance", RanName, E2TAddress).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} - nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress) + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil) _, err := handler.Handle(setupRequest) - //assert.Nil(t, err) - assert.IsType(t, /* &e2managererrors.RnibDbError{} */ &common.ResourceNotFoundError{}, err) + assert.Nil(t, err) } func TestX2SetupExistingRanShuttingDown(t *testing.T) { @@ -268,16 +303,17 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) { } func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) { - readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock, writerMock, handler, rmrMessengerMock, httpClientMock,e2tInstancesManagerMock:= initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} readerMock.On("GetNodeb", RanName).Return(nb, nil) readerMock.On("GetE2TAddresses").Return([]string{}, nil) - updatedNb := *nb - updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED - writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", "10.0.2.15:8989", []string{"test"}).Return(nil) + mockHttpClientAssociateRan(httpClientMock) _, err := handler.Handle(setupRequest) - assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) + assert.IsType(t, &e2managererrors.InternalError{}, err) rmrMessengerMock.AssertNotCalled(t, "SendMsg") writerMock.AssertExpectations(t) } @@ -308,94 +344,85 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(t 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("AddRanToInstance", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError()) - writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) - _, 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("AddRanToInstance", 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{} */&common.InternalError{}, 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("AddRanToInstance", 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("AddRanToInstance", 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 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("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) +// writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) +// _, 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("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// 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{} */&common.InternalError{}, 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("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// 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("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// 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, "AddRanToInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") } func TestSetupExistingRanWithAssocE2TInstanceExecuteSetupRmrError(t *testing.T) { - readerMock, writerMock, handler, rmrMessengerMock, _ := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock, writerMock, handler, rmrMessengerMock, _, _ := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb - updatedNb.ConnectionAttempts = 0 - updatedNb2 := updatedNb - updatedNb2.ConnectionAttempts++ - updatedNb3 := updatedNb2 + updatedNb3 := updatedNb updatedNb3.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED - updatedNb3.ConnectionAttempts-- writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) - writerMock.On("UpdateNodebInfo", &updatedNb2).Return(nil) payload := e2pdus.PackedX2setupRequest xaction := []byte(RanName) - msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), RanName, &payload, &xaction) + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), RanName, &payload, &xaction, nil) rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, e2managererrors.NewRmrError()) writerMock.On("UpdateNodebInfo", &updatedNb3).Return(nil) _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) @@ -408,11 +435,28 @@ func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) { 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, "AddRanToInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") +} + +func TestSetupExistingRanWithoutAssocE2TInstanceExecuteRoutingManagerError(t *testing.T) { + readerMock, writerMock, handler, rmrMessengerMock, httpClientMock, e2tInstancesManagerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + writerMock.On("UpdateNodebInfo", nb).Return(nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + mockHttpClientAssociateRan(httpClientMock) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + msg := &rmrCgo.MBuf{} + var errNIl error + rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, errNIl) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.Nil(t, err) + writerMock.AssertExpectations(t) + readerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) }