4928de0817f6932fc4c3114e6f33e3d55e51511a
[ric-plt/e2mgr.git] / E2Manager / managers / e2t_instances_manager_test.go
1 package managers
2
3 import (
4         "e2mgr/configuration"
5         "e2mgr/logger"
6         "e2mgr/mocks"
7         "e2mgr/services"
8         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
9         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
10         "github.com/pkg/errors"
11         "github.com/stretchr/testify/assert"
12         "github.com/stretchr/testify/mock"
13         "testing"
14 )
15
16 const E2TAddress = "10.0.2.15"
17
18 func initE2TInstancesManagerTest(t *testing.T) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *E2TInstancesManager) {
19         logger, err := logger.InitLogger(logger.DebugLevel)
20         if err != nil {
21                 t.Errorf("#... - failed to initialize logger, error: %s", err)
22         }
23         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
24
25         readerMock := &mocks.RnibReaderMock{}
26         writerMock := &mocks.RnibWriterMock{}
27         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)
28         e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger)
29         return readerMock, writerMock, e2tInstancesManager
30 }
31
32 func TestAddNewE2TInstanceEmptyAddress(t *testing.T) {
33         _, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
34         err := e2tInstancesManager.AddE2TInstance("")
35         assert.NotNil(t, err)
36         rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance")
37 }
38
39 func TestAddNewE2TInstanceSaveE2TInstanceFailure(t *testing.T) {
40         rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
41         rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error")))
42         err := e2tInstancesManager.AddE2TInstance(E2TAddress)
43         assert.NotNil(t, err)
44         rnibReaderMock.AssertNotCalled(t, "GetE2TInfoList")
45 }
46
47 func TestAddNewE2TInstanceGetE2TInfoListInternalFailure(t *testing.T) {
48         rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
49         rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
50         e2tInfoList := []*entities.E2TInstanceInfo{}
51         rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, common.NewInternalError(errors.New("Error")))
52         err := e2tInstancesManager.AddE2TInstance(E2TAddress)
53         assert.NotNil(t, err)
54         rnibReaderMock.AssertNotCalled(t, "SaveE2TInfoList")
55 }
56
57 func TestAddNewE2TInstanceNoE2TInfoList(t *testing.T) {
58         rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
59         rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
60         e2tInfoList := []*entities.E2TInstanceInfo{}
61         rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, common.NewResourceNotFoundError(""))
62         e2tInfoList = append(e2tInfoList, &entities.E2TInstanceInfo{Address: E2TAddress})
63         rnibWriterMock.On("SaveE2TInfoList", e2tInfoList).Return(nil)
64         err := e2tInstancesManager.AddE2TInstance(E2TAddress)
65         assert.Nil(t, err)
66         rnibWriterMock.AssertCalled(t, "SaveE2TInfoList", e2tInfoList)
67 }
68
69 func TestAddNewE2TInstanceEmptyE2TInfoList(t *testing.T) {
70         rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
71         rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
72         e2tInfoList := []*entities.E2TInstanceInfo{}
73         rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
74         e2tInfoList = append(e2tInfoList, &entities.E2TInstanceInfo{Address: E2TAddress})
75         rnibWriterMock.On("SaveE2TInfoList", e2tInfoList).Return(nil)
76         err := e2tInstancesManager.AddE2TInstance(E2TAddress)
77         assert.Nil(t, err)
78         rnibWriterMock.AssertCalled(t, "SaveE2TInfoList", e2tInfoList)
79 }
80
81 func TestAddNewE2TInstanceSaveE2TInfoListFailure(t *testing.T) {
82         rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t)
83         rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil)
84         e2tInfoList := []*entities.E2TInstanceInfo{}
85         rnibReaderMock.On("GetE2TInfoList").Return(e2tInfoList, nil)
86         e2tInfoList = append(e2tInfoList, &entities.E2TInstanceInfo{Address: E2TAddress})
87         rnibWriterMock.On("SaveE2TInfoList", e2tInfoList).Return(common.NewResourceNotFoundError(""))
88         err := e2tInstancesManager.AddE2TInstance(E2TAddress)
89         assert.NotNil(t, err)
90 }