X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmanagers%2Fe2t_association_manager_test.go;h=7b412d467370df84e7fb403764925384e1a7d58e;hb=b3805a9d29e2c7f6f14e3fedfa1ba504f734eea9;hp=e8090f1d326114dc843cdc51220b70e09cfe7145;hpb=f846c5987cd35da745534e26ac3a22bdcf8b030a;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/e2t_association_manager_test.go b/E2Manager/managers/e2t_association_manager_test.go index e8090f1..7b412d4 100644 --- a/E2Manager/managers/e2t_association_manager_test.go +++ b/E2Manager/managers/e2t_association_manager_test.go @@ -75,6 +75,7 @@ func TestAssociateRanSuccess(t *testing.T) { updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) e2tInstance := &entities.E2TInstance{Address: E2TAddress} readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) @@ -91,15 +92,15 @@ func TestAssociateRanSuccess(t *testing.T) { } func TestAssociateRanRoutingManagerError(t *testing.T) { - manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + manager, _, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, false) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + writerMock.On("UpdateNodebInfo", nb).Return(nil) + err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) - readerMock.AssertExpectations(t) writerMock.AssertExpectations(t) httpClientMock.AssertExpectations(t) } @@ -111,6 +112,7 @@ func TestAssociateRanUpdateNodebError(t *testing.T) { updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError()) err := manager.AssociateRan(E2TAddress, nb) @@ -129,6 +131,7 @@ func TestAssociateRanGetE2tInstanceError(t *testing.T) { updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) var e2tInstance *entities.E2TInstance readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test")) @@ -149,6 +152,7 @@ func TestAssociateRanSaveE2tInstanceError(t *testing.T) { updatedNb := *nb updatedNb.ConnectionAttempts = 0 updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) e2tInstance := &entities.E2TInstance{Address: E2TAddress} readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) @@ -284,17 +288,43 @@ func TestDissociateRanRoutingManagerError(t *testing.T) { httpClientMock.AssertExpectations(t) } -func TestRemoveE2tInstanceSuccess(t *testing.T) { +func TestRemoveE2tInstanceSuccessWithOrphans(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + + ranNamesToBeDissociated := []string{RanName, "test1"} + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, ranNamesToBeDissociated, nil) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{} + writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:ranNamesToBeDissociated} + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceFailureRoutingManager(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - //mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + mockHttpClientDelete(httpClientMock, data, false) writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) - e2tAddresses := []string{E2TAddress, E2TAddress2} + e2tAddresses := []string{E2TAddress} readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) - e2tAddressesNew := []string{E2TAddress2} + e2tAddressesNew := []string{} writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) - err := manager.RemoveE2tInstance(E2TAddress, []string{""}, make(map[string][]string)) + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:[]string{"test1"}} + //readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewRnibDbError()) + err := manager.RemoveE2tInstance(e2tInstance1) assert.Nil(t, err) readerMock.AssertExpectations(t) @@ -303,17 +333,55 @@ func TestRemoveE2tInstanceSuccess(t *testing.T) { } func TestRemoveE2tInstanceFailureInE2TInstanceManager(t *testing.T) { + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - //mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + mockHttpClientDelete(httpClientMock, data, true) writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) var e2tAddresses []string readerMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError()) - err := manager.RemoveE2tInstance(E2TAddress, []string{""}, make(map[string][]string)) + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:[]string{"test1"}} + err := manager.RemoveE2tInstance(e2tInstance1) assert.NotNil(t, err) readerMock.AssertExpectations(t) writerMock.AssertExpectations(t) httpClientMock.AssertExpectations(t) -} \ No newline at end of file +} + +func TestRemoveE2tInstanceFailureInE2tInstanceAddRansToInstance(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, nil, nil) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress, E2TAddress2, E2TAddress3} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{E2TAddress2, E2TAddress3} + writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress} + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func mockHttpClientDelete(httpClientMock *mocks.HttpClientMock, data *models.RoutingManagerDeleteRequestModel, isSuccessful bool) { + + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + var respStatusCode int + if isSuccessful { + respStatusCode = http.StatusCreated + } else { + respStatusCode = http.StatusBadRequest + } + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil) +}