X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fhandlers%2Frmrmsghandlers%2Fx2_reset_request_notification_handler_test.go;h=95b0306193de8a9d6ab9b3c91d8e25f249e4ce1a;hb=25486db26eb5d9117682ec9d3b4763f928768626;hp=998330bfe2de1485641298e5b446bb50d0b09d60;hpb=1ec13d4076e7c7abefac6176462c1fee31229213;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go b/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go index 998330b..95b0306 100644 --- a/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go @@ -18,110 +18,109 @@ package rmrmsghandlers import ( + "e2mgr/configuration" + "e2mgr/e2pdus" + "e2mgr/enums" + "e2mgr/managers" "e2mgr/mocks" "e2mgr/models" "e2mgr/rmrCgo" + "e2mgr/services" "e2mgr/tests" + "encoding/json" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" - "github.com/stretchr/testify/assert" "testing" "time" ) -func TestX2ResetRequestNotifSuccess(t *testing.T) { +func initX2ResetRequestNotificationHandlerTest(t *testing.T) (X2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RmrMessengerMock) { log := initLog(t) - payload := []byte("payload") + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} readerMock := &mocks.RnibReaderMock{} readerProvider := func() reader.RNibReader { return readerMock } + rnibDataService := services.NewRnibDataService(log, config, readerProvider, nil) - h := NewX2ResetRequestNotificationHandler(readerProvider) - - xaction := []byte("RanName") - mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) - notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, - StartTime: time.Now(), TransactionId: string(xaction)} - - nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} - var rnibErr error - readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) - - messageChannel := make(chan *models.NotificationResponse) + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, log) + ranStatusChangeManager := managers.NewRanStatusChangeManager(log, rmrSender) + h := NewX2ResetRequestNotificationHandler(log, rnibDataService, ranStatusChangeManager, rmrSender) + return h, readerMock, rmrMessengerMock +} - go h.Handle(log,nil, ¬ificationRequest, messageChannel) +func getRanRestartedMbuf(nodeType entities.Node_Type, messageDirection enums.MessageDirection) *rmrCgo.MBuf { + xaction := []byte(RanName) + resourceStatusPayload := models.NewResourceStatusPayload(nodeType, messageDirection) + resourceStatusJson, _ := json.Marshal(resourceStatusPayload) + return rmrCgo.NewMBuf(rmrCgo.RAN_RESTARTED, len(resourceStatusJson), RanName, &resourceStatusJson, &xaction) +} - result := <-messageChannel - assert.Equal(t, result.RanName, mBuf.Meid) - assert.Equal(t, result.MgsType, rmrCgo.RIC_X2_RESET_RESP) +func TestHandleX2ResetRequestNotificationSuccess(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) + ranName := "test" + xaction := []byte(ranName) + notificationRequest := models.NewNotificationRequest(ranName, []byte{}, time.Now(), ranName) + + nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var err error + readerMock.On("GetNodeb", ranName).Return(nb, err) + resetResponseMbuf := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET_RESP, len(e2pdus.PackedX2ResetResponse), ranName, &e2pdus.PackedX2ResetResponse, &xaction) + rmrMessengerMock.On("SendMsg", resetResponseMbuf).Return(&rmrCgo.MBuf{}, err) + ranRestartedMbuf := getRanRestartedMbuf(nb.NodeType, enums.RAN_TO_RIC) + rmrMessengerMock.On("SendMsg", ranRestartedMbuf).Return(&rmrCgo.MBuf{}, err) + h.Handle(notificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", resetResponseMbuf) + rmrMessengerMock.AssertCalled(t, "SendMsg", ranRestartedMbuf) } -func TestHandleX2ResetRequestNotifShuttingDownStatus(t *testing.T) { - log := initLog(t) +func TestHandleX2ResetRequestNotificationShuttingDownStatus(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) var payload []byte - readerMock := &mocks.RnibReaderMock{} - readerProvider := func() reader.RNibReader { - return readerMock - } - - h := NewX2ResetRequestNotificationHandler(readerProvider) xaction := []byte("RanName") - mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xaction) notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), TransactionId: string(xaction)} - nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb := &entities.NodebInfo{RanName: mBuf.Meid, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} var rnibErr error readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) - h.Handle(log,nil, ¬ificationRequest, nil) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") } -func TestHandleX2ResetRequestNotifDisconnectStatus(t *testing.T) { - log := initLog(t) +func TestHandleX2ResetRequestNotificationDisconnectStatus(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) var payload []byte - readerMock := &mocks.RnibReaderMock{} - readerProvider := func() reader.RNibReader { - return readerMock - } - - h := NewX2ResetRequestNotificationHandler(readerProvider) - xaction := []byte("RanName") - mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) - notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, - StartTime: time.Now(), TransactionId: string(xaction)} - - nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), TransactionId: string(xaction)} + nb := &entities.NodebInfo{RanName: mBuf.Meid, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} var rnibErr error - readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) - h.Handle(log,nil, ¬ificationRequest, nil) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") } -func TestHandleX2ResetRequestNotifGetNodebFailed(t *testing.T){ +func TestHandleX2ResetRequestNotificationGetNodebFailed(t *testing.T) { - log := initLog(t) + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) var payload []byte - readerMock := &mocks.RnibReaderMock{} - readerProvider := func() reader.RNibReader { - return readerMock - } - - h := NewX2ResetRequestNotificationHandler(readerProvider) xaction := []byte("RanName") - mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xaction) notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), TransactionId: string(xaction)} var nb *entities.NodebInfo - rnibErr := &common.ResourceNotFoundError{} + rnibErr := &common.ResourceNotFoundError{} readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) - h.Handle(log,nil, ¬ificationRequest, nil) -} \ No newline at end of file + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +}