sync from Azure to LF
[ric-plt/e2mgr.git] / E2Manager / services / rmrreceiver / rmr_receiver_test.go
 // limitations under the License.
 //
 
-package receivers
+package rmrreceiver
 
 import (
        "e2mgr/configuration"
+       "e2mgr/converters"
        "e2mgr/logger"
        "e2mgr/managers"
        "e2mgr/managers/notificationmanager"
        "e2mgr/mocks"
-       "e2mgr/models"
+       "e2mgr/providers/rmrmsghandlerprovider"
        "e2mgr/rNibWriter"
        "e2mgr/rmrCgo"
        "e2mgr/services"
+       "e2mgr/services/rmrsender"
        "e2mgr/tests"
        "fmt"
        "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
@@ -39,25 +41,24 @@ func TestListenAndHandle(t *testing.T) {
        if err != nil {
                t.Errorf("#rmr_service_test.TestListenAndHandle - failed to initialize logger, error: %s", err)
        }
-       rmrMessengerMock := &mocks.RmrMessengerMock{}
-
-       var buf *rmrCgo.MBuf
-       e := fmt.Errorf("test error")
-       rmrMessengerMock.On("RecvMsg").Return(buf, e)
-
-       go getRmrServiceReceiver(rmrMessengerMock, log).ListenAndHandle()
-
+       rmrReceiver := initRmrReceiver(log)
+       go rmrReceiver.ListenAndHandle()
        time.Sleep(time.Microsecond * 10)
 }
 
-func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService {
+func initRmrMessenger(log *logger.Logger) *rmrCgo.RmrMessenger {
+       rmrMessengerMock := &mocks.RmrMessengerMock{}
        rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
-       messageChannel := make(chan *models.NotificationResponse)
        rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger)
-       return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, messageChannel)
+
+       // TODO: that's not good since we don't actually test anything. if the error is populated then the loop will just continue and it's sort of a "workaround" for that method to be called
+       var buf *rmrCgo.MBuf
+       e := fmt.Errorf("test error")
+       rmrMessengerMock.On("RecvMsg").Return(buf, e)
+       return &rmrMessenger
 }
 
-func getRmrServiceReceiver(rmrMessengerMock *mocks.RmrMessengerMock, logger *logger.Logger) *RmrServiceReceiver {
+func initRmrReceiver(logger *logger.Logger) *RmrReceiver {
        config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
 
        readerMock := &mocks.RnibReaderMock{}
@@ -70,10 +71,16 @@ func getRmrServiceReceiver(rmrMessengerMock *mocks.RmrMessengerMock, logger *log
        }
 
        rnibDataService := services.NewRnibDataService(logger, config, rnibReaderProvider, rnibWriterProvider)
-       rmrService := getRmrService(rmrMessengerMock, logger)
-       ranSetupManager := managers.NewRanSetupManager(logger, rmrService, rnibDataService)
+       rmrMessenger := initRmrMessenger(logger)
+       rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger)
+       ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService)
        ranReconnectionManager := managers.NewRanReconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, ranSetupManager)
-       nManager := notificationmanager.NewNotificationManager(rnibDataService, ranReconnectionManager)
-
-       return NewRmrServiceReceiver(*rmrService, nManager)
+       ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender)
+       x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger)
+       x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter)
+       x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger)
+       x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter)
+       rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider(logger, rnibDataService, ranReconnectionManager, ranStatusChangeManager, rmrSender, x2SetupResponseManager, x2SetupFailureResponseManager )
+       notificationManager := notificationmanager.NewNotificationManager(logger, rmrNotificationHandlerProvider)
+       return NewRmrReceiver(logger, rmrMessenger, notificationManager)
 }