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=73d3a565da8264302817b960522baeb7be051b36;hb=d5fcd9aeaadd7fcfaa7f6cff7bc8b8d10e9e4b81;hp=3e32c3688dff853c9ab185281af1411dee7fab77;hpb=ffd085dd7f0654b84b163a7bfedd3fa89e7b8a71;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 3e32c36..73d3a56 100644 --- a/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go @@ -13,115 +13,120 @@ // 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 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" + "unsafe" ) -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 - } - - 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) + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) - 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, ¬ificationRequest, messageChannel) +func getRanRestartedMbuf(nodeType entities.Node_Type, messageDirection enums.MessageDirection) *rmrCgo.MBuf { + var xAction []byte + resourceStatusPayload := models.NewResourceStatusPayload(nodeType, messageDirection) + resourceStatusJson, _ := json.Marshal(resourceStatusPayload) + var msgSrc unsafe.Pointer + return rmrCgo.NewMBuf(rmrCgo.RAN_RESTARTED, len(resourceStatusJson), RanName, &resourceStatusJson, &xAction, msgSrc) +} - 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("123456aa") + notificationRequest := models.NewNotificationRequest(ranName, []byte{}, time.Now(), xAction, nil) + + nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var err error + readerMock.On("GetNodeb", ranName).Return(nb, err) + var msgSrc unsafe.Pointer + resetResponseMbuf := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET_RESP, len(e2pdus.PackedX2ResetResponse), ranName, &e2pdus.PackedX2ResetResponse, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", resetResponseMbuf, true).Return(&rmrCgo.MBuf{}, err) + ranRestartedMbuf := getRanRestartedMbuf(nb.NodeType, enums.RAN_TO_RIC) + rmrMessengerMock.On("SendMsg", ranRestartedMbuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(notificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", resetResponseMbuf, true) + rmrMessengerMock.AssertCalled(t, "SendMsg", ranRestartedMbuf, true) } -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) + xAction := []byte("123456aa") + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, - StartTime: time.Now(), TransactionId: string(xaction)} + StartTime: time.Now(), TransactionId: xAction} 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, ¬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)} - + xAction := []byte("123456aa") + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), TransactionId: 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, ¬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) + var xAction []byte + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, - StartTime: time.Now(), TransactionId: string(xaction)} + StartTime: time.Now(), TransactionId: xAction} var nb *entities.NodebInfo rnibErr := &common.ResourceNotFoundError{} readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) - h.Handle(log, ¬ificationRequest, nil) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") }