X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmanagers%2Fe2t_association_manager_test.go;h=d515cd558ebaf1e99f29372869aeffa4d94c21f7;hb=313355950ec536c37ea40e630b0d81e4e674e07c;hp=937330ac50a036e028cad07bb620d9bc325d4d6d;hpb=6c768752831c511df0a38f76116fc44cf2a4caf3;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/e2t_association_manager_test.go b/E2Manager/managers/e2t_association_manager_test.go index 937330a..d515cd5 100644 --- a/E2Manager/managers/e2t_association_manager_test.go +++ b/E2Manager/managers/e2t_association_manager_test.go @@ -71,10 +71,10 @@ func mockHttpClient(httpClientMock *mocks.HttpClientMock, apiSuffix string, isSu func TestAssociateRanSuccess(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} 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 +91,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: ""} + writerMock.On("UpdateNodebInfo", nb).Return(nil) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} err := manager.AssociateRan(E2TAddress, nb) assert.NotNil(t, err) assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) - readerMock.AssertExpectations(t) writerMock.AssertExpectations(t) httpClientMock.AssertExpectations(t) } @@ -107,10 +107,10 @@ func TestAssociateRanRoutingManagerError(t *testing.T) { func TestAssociateRanUpdateNodebError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} 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) @@ -125,10 +125,10 @@ func TestAssociateRanUpdateNodebError(t *testing.T) { func TestAssociateRanGetE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} 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")) @@ -145,10 +145,10 @@ func TestAssociateRanGetE2tInstanceError(t *testing.T) { func TestAssociateRanSaveE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} 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) @@ -168,7 +168,7 @@ func TestAssociateRanSaveE2tInstanceError(t *testing.T) { func TestDissociateRanSuccess(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, true) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.AssociatedE2TInstanceAddress = "" @@ -204,7 +204,7 @@ func TestDissociateRanGetNodebError(t *testing.T) { func TestDissociateRanUpdateNodebError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.AssociatedE2TInstanceAddress = "" @@ -221,7 +221,7 @@ func TestDissociateRanUpdateNodebError(t *testing.T) { func TestDissociateRanGetE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.AssociatedE2TInstanceAddress = "" @@ -240,7 +240,7 @@ func TestDissociateRanGetE2tInstanceError(t *testing.T) { func TestDissociateRanSaveE2tInstanceError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.AssociatedE2TInstanceAddress = "" @@ -264,7 +264,7 @@ func TestDissociateRanSaveE2tInstanceError(t *testing.T) { func TestDissociateRanRoutingManagerError(t *testing.T) { manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, false) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1} + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.AssociatedE2TInstanceAddress = "" @@ -284,36 +284,100 @@ func TestDissociateRanRoutingManagerError(t *testing.T) { httpClientMock.AssertExpectations(t) } -//func TestRemoveE2tInstanceSuccess(t *testing.T) { -// manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) -// //mockHttpClient(httpClientMock, clients.DeleteE2TInstanceApiSuffix, true) -// -// writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) -// e2tAddresses := []string{E2TAddress, E2TAddress2} -// readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) -// e2tAddressesNew := []string{E2TAddress2} -// writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) -// -// err := manager.RemoveE2tInstance(E2TAddress, []string{""}, make(map[string][]string)) -// -// assert.Nil(t, err) -// readerMock.AssertExpectations(t) -// writerMock.AssertExpectations(t) -// httpClientMock.AssertExpectations(t) -//} - -//func TestRemoveE2tInstanceFailureInE2TInstanceManager(t *testing.T) { -// manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) -// //mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, 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)) -// -// assert.NotNil(t, err) -// readerMock.AssertExpectations(t) -// writerMock.AssertExpectations(t) -// httpClientMock.AssertExpectations(t) -//} \ No newline at end of file +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) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + mockHttpClientDelete(httpClientMock, data, false) + + 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:[]string{"test1"}} + //readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewRnibDbError()) + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceFailureInE2TInstanceManager(t *testing.T) { + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + var e2tAddresses []string + readerMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError()) + + 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) +} + +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) +}