X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fhandlers%2Fdelete_all_request_handler_test.go;h=8dfa18805a7bed3959376bd2cc853e689103b005;hb=70a1adcdcf3ba61d0e17e89cd0b6f34f812ec878;hp=3204b71b60f53b86db3ebe73293a7d875b3cac75;hpb=07ef76dd471a0892a893c90e0ab06713aee34be1;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/delete_all_request_handler_test.go b/E2Manager/handlers/delete_all_request_handler_test.go index 3204b71..8dfa188 100644 --- a/E2Manager/handlers/delete_all_request_handler_test.go +++ b/E2Manager/handlers/delete_all_request_handler_test.go @@ -25,6 +25,10 @@ import ( "e2mgr/models" "e2mgr/rNibWriter" "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/sessions" + "e2mgr/tests" + "fmt" "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" @@ -45,18 +49,18 @@ func TestHandleBeforeTimerGetListNodebIdsFailedFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } - config := configuration.ParseConfiguration() + rmrMessengerMock := &mocks.RmrMessengerMock{} - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + config := configuration.ParseConfiguration() - var messageChannel chan<- *models.NotificationResponse + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) rnibErr := &common.RNibError{} var nbIdentityList []*entities.NbIdentity readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibErr) expected := &e2managererrors.RnibDbError{} - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) if reflect.TypeOf(actual) != reflect.TypeOf(expected){ t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) } @@ -73,12 +77,11 @@ func TestHandleAfterTimerGetListNodebIdsFailedFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() config.BigRedButtonTimeoutSec = 1 - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) - - messageChannel := make(chan*models.NotificationResponse) + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) rnibErr := &common.RNibError{} //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown @@ -98,13 +101,9 @@ func TestHandleAfterTimerGetListNodebIdsFailedFlow(t *testing.T){ writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil) - go func(){ - response := <-messageChannel - assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) - }() - expected := &e2managererrors.RnibDbError{} - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) + if reflect.TypeOf(actual) != reflect.TypeOf(expected){ t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) } @@ -121,11 +120,10 @@ func TestHandleSuccessFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() config.BigRedButtonTimeoutSec = 1 - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) - - messageChannel := make(chan*models.NotificationResponse) + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown nbIdentityList := createIdentityList() @@ -158,12 +156,10 @@ func TestHandleSuccessFlow(t *testing.T){ writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil) - go func(){ - response := <-messageChannel - assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) - }() + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) assert.Nil(t, actual) } @@ -179,11 +175,10 @@ func TestHandleSuccessGetNextStatusFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() config.BigRedButtonTimeoutSec = 1 - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) - - messageChannel := make(chan*models.NotificationResponse) + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) @@ -203,13 +198,49 @@ func TestHandleSuccessGetNextStatusFlow(t *testing.T){ updatedNb1AfterTimer := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} writerMock.On("SaveNodeb", mock.Anything, updatedNb1AfterTimer).Return(nil) + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) + + actual := handler.Handle(log, nil) + + assert.Nil(t, actual) +} + +func TestHandleShuttingDownStatusFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + rmrMessengerMock := &mocks.RmrMessengerMock{} + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) + + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil) + + updatedNb1AfterTimer := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1AfterTimer).Return(nil) - go func(){ - response := <-messageChannel - assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) - }() + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) assert.Nil(t, actual) } @@ -225,11 +256,10 @@ func TestHandleGetNodebFailedFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() config.BigRedButtonTimeoutSec = 1 - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) - - messageChannel := make(chan*models.NotificationResponse) + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) //Before timer: Disconnected->ShutDown(will fail), ShuttingDown->Ignore, Connected->ShuttingDown nbIdentityList := createIdentityList() @@ -263,12 +293,10 @@ func TestHandleGetNodebFailedFlow(t *testing.T){ writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil) - go func(){ - response := <-messageChannel - assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) - }() + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) assert.Nil(t, actual) } @@ -284,11 +312,10 @@ func TestHandleSaveFailedFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() config.BigRedButtonTimeoutSec = 1 - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) - - messageChannel := make(chan*models.NotificationResponse) + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown(will fail) nbIdentityList := createIdentityList() @@ -322,17 +349,15 @@ func TestHandleSaveFailedFlow(t *testing.T){ writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(errRnib) - go func(){ - response := <-messageChannel - assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) - }() + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) assert.Nil(t, actual) } -func TestHandleGetListEnbIdsEmptyFlow(t *testing.T){ +func TestHandleSendRmrFailedFlow(t *testing.T){ log := initLog(t) readerMock := &mocks.RnibReaderMock{} @@ -343,18 +368,75 @@ func TestHandleGetListEnbIdsEmptyFlow(t *testing.T){ writerProvider := func() rNibWriter.RNibWriter { return writerMock } + rmrMessengerMock := &mocks.RmrMessengerMock{} config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) - handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown(will fail) + nbIdentityList := createIdentityList() + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) - var messageChannel chan<- *models.NotificationResponse + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3 := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown(will fail) + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil) + + updatedNb2AfterTimer := &entities.NodebInfo{RanName:"RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3AfterTimer := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil) + + expected := e2managererrors.NewRmrError() + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, expected) + + actual := handler.Handle(log, nil) + + if reflect.TypeOf(actual) != reflect.TypeOf(expected){ + t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) + } +} + +func TestHandleGetListEnbIdsEmptyFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + rmrMessengerMock := &mocks.RmrMessengerMock{} + config := configuration.ParseConfiguration() + + handler := NewDeleteAllRequestHandler(getRmrService(rmrMessengerMock, log), config, writerProvider, readerProvider) var rnibError common.IRNibError nbIdentityList := []*entities.NbIdentity{} readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibError) - actual := handler.Handle(log, nil, messageChannel) + actual := handler.Handle(log, nil) readerMock.AssertNumberOfCalls(t, "GetNodeb", 0) assert.Nil(t, actual) } @@ -375,7 +457,15 @@ func createIdentityList() []*entities.NbIdentity { func initLog(t *testing.T) *logger.Logger { log, err := logger.InitLogger(logger.InfoLevel) if err != nil { - t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + t.Errorf("#initLog test - failed to initialize logger, error: %s", err) } return log +} + + +func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService { + 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, make(sessions.E2Sessions), messageChannel) } \ No newline at end of file