554 lines
24 KiB
Go
554 lines
24 KiB
Go
//
|
|
// Copyright 2019 AT&T Intellectual Property
|
|
// Copyright 2019 Nokia
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// This source code is part of the near-RT RIC (RAN Intelligent Controller)
|
|
// platform project (RICP).
|
|
|
|
package managers
|
|
|
|
import (
|
|
"e2mgr/configuration"
|
|
"e2mgr/e2managererrors"
|
|
"e2mgr/logger"
|
|
"e2mgr/mocks"
|
|
"e2mgr/services"
|
|
"fmt"
|
|
"gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
|
|
"gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
|
|
"github.com/pkg/errors"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/mock"
|
|
"testing"
|
|
)
|
|
|
|
const E2TAddress = "10.10.2.15:9800"
|
|
const E2TAddress2 = "10.10.2.16:9800"
|
|
const PodName = "som_ pod_name"
|
|
|
|
func initE2TInstancesManagerTest(t *testing.T) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *E2TInstancesManager) {
|
|
logger, err := logger.InitLogger(logger.DebugLevel)
|
|
if err != nil {
|
|
t.Errorf("#... - failed to initialize logger, error: %s", err)
|
|
}
|
|
config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
|
|
|
|
readerMock := &mocks.RnibReaderMock{}
|
|
writerMock := &mocks.RnibWriterMock{}
|
|
rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
|
|
e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger)
|
|
return readerMock, writerMock, e2tInstancesManager
|
|
}
|
|
|
|
func TestAddNewE2TInstanceSaveE2TInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.NotNil(t, err)
|
|
rnibReaderMock.AssertNotCalled(t, "GetE2TAddresses")
|
|
}
|
|
|
|
func TestAddNewE2TInstanceGetE2TAddressesInternalFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
e2tAddresses := []string{}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewInternalError(errors.New("Error")))
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.NotNil(t, err)
|
|
rnibReaderMock.AssertNotCalled(t, "SaveE2TAddresses")
|
|
}
|
|
|
|
func TestAddNewE2TInstanceSaveE2TAddressesFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
E2TAddresses := []string{}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
|
|
E2TAddresses = append(E2TAddresses, E2TAddress)
|
|
rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(common.NewResourceNotFoundError(""))
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.NotNil(t, err)
|
|
}
|
|
|
|
func TestAddNewE2TInstanceNoE2TAddressesSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
e2tAddresses := []string{}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewResourceNotFoundError(""))
|
|
e2tAddresses = append(e2tAddresses, E2TAddress)
|
|
rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil)
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.Nil(t, err)
|
|
rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses)
|
|
}
|
|
|
|
func TestAddNewE2TInstanceEmptyE2TAddressesSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
e2tAddresses := []string{}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tAddresses = append(e2tAddresses, E2TAddress)
|
|
rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil)
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.Nil(t, err)
|
|
rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses)
|
|
}
|
|
|
|
func TestAddNewE2TInstanceExistingE2TAddressesSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
E2TAddresses := []string{"10.0.1.15:3030"}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
|
|
E2TAddresses = append(E2TAddresses, E2TAddress)
|
|
rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(nil)
|
|
err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName)
|
|
assert.Nil(t, err)
|
|
}
|
|
|
|
func TestGetE2TInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
var e2tInstance *entities.E2TInstance
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("for test")))
|
|
res, err := e2tInstancesManager.GetE2TInstance(E2TAddress)
|
|
assert.NotNil(t, err)
|
|
assert.Nil(t, res)
|
|
}
|
|
|
|
func TestGetE2TInstanceSuccess(t *testing.T) {
|
|
rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
address := "10.10.2.15:9800"
|
|
e2tInstance := entities.NewE2TInstance(address, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
|
|
res, err := e2tInstancesManager.GetE2TInstance(address)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, e2tInstance, res)
|
|
}
|
|
|
|
func TestAddRanToInstanceGetInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
var e2tInstance1 *entities.E2TInstance
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
|
|
|
|
err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
|
|
assert.NotNil(t, err)
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestAddRanToInstanceSaveInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
|
|
|
|
err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
|
|
assert.NotNil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestAddRanToInstanceSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
|
|
|
|
updateE2TInstance := *e2tInstance
|
|
updateE2TInstance.AssociatedRanList = append(updateE2TInstance.AssociatedRanList, "test1")
|
|
|
|
rnibWriterMock.On("SaveE2TInstance", &updateE2TInstance).Return(nil)
|
|
|
|
err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"})
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestRemoveRanFromInstanceGetInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
var e2tInstance1 *entities.E2TInstance
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test")))
|
|
err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
|
|
assert.NotNil(t, err)
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestRemoveRanFromInstanceSaveInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test")))
|
|
|
|
err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
|
|
assert.NotNil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestRemoveRanFromInstanceSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance.AssociatedRanList = []string{"test0", "test1"}
|
|
updatedE2TInstance := *e2tInstance
|
|
updatedE2TInstance.AssociatedRanList = []string{"test0"}
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", &updatedE2TInstance).Return(nil)
|
|
|
|
err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress)
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSelectE2TInstancesGetE2TAddressesFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(fmt.Errorf("for test")))
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.NotNil(t, err)
|
|
assert.Empty(t, address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
|
|
}
|
|
|
|
func TestSelectE2TInstancesEmptyE2TAddressList(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil)
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.NotNil(t, err)
|
|
assert.Empty(t, address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertNotCalled(t, "GetE2TInstances")
|
|
}
|
|
|
|
func TestSelectE2TInstancesGetE2TInstancesFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
addresses := []string{E2TAddress}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
|
|
rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, common.NewInternalError(fmt.Errorf("for test")))
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.NotNil(t, err)
|
|
assert.Empty(t, address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSelectE2TInstancesEmptyE2TInstancesList(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
addresses := []string{E2TAddress}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
|
|
rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, nil)
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.NotNil(t, err)
|
|
assert.Empty(t, address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSelectE2TInstancesNoActiveE2TInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
addresses := []string{E2TAddress, E2TAddress2}
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.State = entities.ToBeDeleted
|
|
e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.State = entities.ToBeDeleted
|
|
e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
|
|
|
|
rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
|
|
rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.NotNil(t, err)
|
|
assert.Equal(t, "", address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSelectE2TInstancesSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
addresses := []string{E2TAddress, E2TAddress2}
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
|
|
|
|
rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
|
|
rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
address, err := e2tInstancesManager.SelectE2TInstance()
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, E2TAddress, address)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestActivateE2TInstanceSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.State = entities.ToBeDeleted
|
|
e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"}
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.State == entities.Active })).Return(nil)
|
|
|
|
err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, entities.Active, e2tInstance1.State)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestActivateE2TInstance_RnibError(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
var e2tInstance1 *entities.E2TInstance
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(errors.New("for test")))
|
|
|
|
err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
|
|
assert.NotNil(t, err)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestActivateE2TInstance_NoInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
var e2tInstance1 *entities.E2TInstance
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewResourceNotFoundError())
|
|
|
|
err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
|
|
|
|
assert.NotNil(t, err)
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampGetInternalFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
address := "10.10.2.15:9800"
|
|
e2tInstance := entities.NewE2TInstance(address, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, common.NewInternalError(errors.New("Error")))
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
|
|
err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
|
|
assert.NotNil(t, err)
|
|
rnibReaderMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestAResetKeepAliveTimestampSaveInternalFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
address := "10.10.2.15:9800"
|
|
e2tInstance := entities.NewE2TInstance(address, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
|
|
|
|
err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
|
|
assert.NotNil(t, err)
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
address := "10.10.2.15:9800"
|
|
e2tInstance := entities.NewE2TInstance(address, PodName)
|
|
rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
|
|
err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertCalled(t, "GetE2TInstance", address)
|
|
rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1)
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampToBeDeleted(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
address := "10.10.2.15:9800"
|
|
e2tInstance := entities.NewE2TInstance(address, PodName)
|
|
e2tInstance.State = entities.ToBeDeleted
|
|
rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil)
|
|
|
|
err := e2tInstancesManager.ResetKeepAliveTimestamp(address)
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertCalled(t, "GetE2TInstance", address)
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampsForAllE2TInstancesGetE2TInstancesFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("Error")))
|
|
e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampsForAllE2TInstancesNoInstances(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil)
|
|
e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampsForAllE2TInstancesNoActiveInstances(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
e2tAddresses := []string{E2TAddress, E2TAddress2}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.State = entities.ToBeDeleted
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.State = entities.ToBeDeleted
|
|
rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
|
|
rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampsForAllE2TInstancesOneActiveInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
e2tAddresses := []string{E2TAddress, E2TAddress2}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.State = entities.Active
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.State = entities.ToBeDeleted
|
|
rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
|
|
e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
|
|
rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1)
|
|
}
|
|
|
|
func TestResetKeepAliveTimestampsForAllE2TInstancesSaveE2TInstanceFailure(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
e2tAddresses := []string{E2TAddress, E2TAddress2}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.State = entities.Active
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.State = entities.ToBeDeleted
|
|
rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
|
|
e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances()
|
|
rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1)
|
|
}
|
|
|
|
func TestRemoveE2TInstanceSuccess(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
|
|
e2tAddresses := []string{E2TAddress, E2TAddress2}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tAddressesNew := []string{E2TAddress2}
|
|
rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil)
|
|
|
|
err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestRemoveE2TInstanceRnibErrorInRemoveInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(e2managererrors.NewRnibDbError())
|
|
|
|
err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
|
|
assert.NotNil(t, err)
|
|
assert.IsType(t, e2managererrors.NewRnibDbError(), err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestRemoveE2TInstanceRnibErrorInGetAddresses(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
|
|
var e2tAddresses []string
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError())
|
|
|
|
err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
|
|
assert.NotNil(t, err)
|
|
assert.IsType(t, e2managererrors.NewRnibDbError(), err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestRemoveE2TInstanceRnibErrorInSaveAddresses(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
|
|
e2tAddresses := []string{E2TAddress, E2TAddress2}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
|
|
e2tAddressesNew := []string{E2TAddress2}
|
|
rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(e2managererrors.NewRnibDbError())
|
|
|
|
err := e2tInstancesManager.RemoveE2TInstance(E2TAddress)
|
|
assert.NotNil(t, err)
|
|
assert.IsType(t, e2managererrors.NewRnibDbError(), err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSetE2tInstanceStateCurrentStateHasChanged(t *testing.T) {
|
|
rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance.State = entities.Active
|
|
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
|
|
|
|
err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
|
|
assert.NotNil(t, err)
|
|
assert.IsType(t, e2managererrors.NewInternalError(), err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestSetE2tInstanceStateErrorInSaveE2TInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
|
|
e2tInstance := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance.State = entities.ToBeDeleted
|
|
rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for testing")))
|
|
|
|
err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active)
|
|
assert.NotNil(t, err)
|
|
assert.IsType(t, &common.InternalError{}, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestClearRansOfAllE2TInstancesEmptyList(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
E2TAddresses := []string{}
|
|
rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil)
|
|
err := e2tInstancesManager.ClearRansOfAllE2TInstances()
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|
|
|
|
func TestClearRansOfAllE2TInstancesErrorInSaveE2TInstance(t *testing.T) {
|
|
rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
|
|
addresses := []string{E2TAddress, E2TAddress2}
|
|
e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName)
|
|
e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"}
|
|
e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName)
|
|
e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"}
|
|
|
|
rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil)
|
|
rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil)
|
|
rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress})).Return(common.NewInternalError(fmt.Errorf("for testing")))
|
|
rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress2})).Return(nil)
|
|
err := e2tInstancesManager.ClearRansOfAllE2TInstances()
|
|
assert.Nil(t, err)
|
|
rnibReaderMock.AssertExpectations(t)
|
|
rnibWriterMock.AssertExpectations(t)
|
|
}
|