sync from Azure to LF
[ric-plt/e2mgr.git] / E2Manager / managers / notificationmanager / notification_manager_test.go
1 package notificationmanager
2
3 import (
4         "e2mgr/configuration"
5         "e2mgr/converters"
6         "e2mgr/logger"
7         "e2mgr/managers"
8         "e2mgr/mocks"
9         "e2mgr/providers/rmrmsghandlerprovider"
10         "e2mgr/rNibWriter"
11         "e2mgr/rmrCgo"
12         "e2mgr/services"
13         "e2mgr/services/rmrsender"
14         "e2mgr/tests"
15         "fmt"
16         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
17         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
18         "github.com/stretchr/testify/assert"
19         "testing"
20 )
21
22 func initNotificationManagerTest(t *testing.T) (*logger.Logger, *mocks.RnibReaderMock, *NotificationManager) {
23         logger := initLog(t)
24         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
25
26         readerMock := &mocks.RnibReaderMock{}
27         rnibReaderProvider := func() reader.RNibReader {
28                 return readerMock
29         }
30         writerMock := &mocks.RnibWriterMock{}
31         rnibWriterProvider := func() rNibWriter.RNibWriter {
32                 return writerMock
33         }
34
35         rmrSender := initRmrSender(&mocks.RmrMessengerMock{}, logger)
36         rnibDataService := services.NewRnibDataService(logger, config, rnibReaderProvider, rnibWriterProvider)
37         ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService)
38         ranReconnectionManager := managers.NewRanReconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, ranSetupManager)
39         ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender)
40         x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger)
41         x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter)
42         x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger)
43         x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter)
44         rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider(logger, rnibDataService, ranReconnectionManager, ranStatusChangeManager, rmrSender, x2SetupResponseManager, x2SetupFailureResponseManager)
45         notificationManager := NewNotificationManager(logger, rmrNotificationHandlerProvider )
46         return logger, readerMock, notificationManager
47 }
48
49 func TestHandleMessageUnexistingMessageType(t *testing.T) {
50         _, _, nm := initNotificationManagerTest(t)
51
52         mbuf := &rmrCgo.MBuf{MType: 1234}
53
54         err := nm.HandleMessage(mbuf)
55         assert.NotNil(t, err)
56 }
57
58 func TestHandleMessageExistingMessageType(t *testing.T) {
59         _, readerMock, nm := initNotificationManagerTest(t)
60         payload := []byte("123")
61         xaction := []byte("test")
62         mbuf := &rmrCgo.MBuf{MType: rmrCgo.RIC_X2_SETUP_RESP, Meid: "test", Payload: &payload, XAction: &xaction}
63         readerMock.On("GetNodeb", "test").Return(&entities.NodebInfo{}, fmt.Errorf("Some error"))
64         err := nm.HandleMessage(mbuf)
65         assert.Nil(t, err)
66 }
67
68 // TODO: extract to test_utils
69 func initRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender {
70         rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
71         rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger)
72         return rmrsender.NewRmrSender(log, &rmrMessenger)
73 }
74
75 // TODO: extract to test_utils
76 func initLog(t *testing.T) *logger.Logger {
77         log, err := logger.InitLogger(logger.InfoLevel)
78         if err != nil {
79                 t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err)
80         }
81         return log
82 }