//// //// Copyright 2019 AT&T Intellectual Property //// Copyright 2019 Nokia //// //// Licensed under the Apache License, Version 2.0 (the "License"); //// you may not use this file except in compliance with the License. //// You may obtain a copy of the License at //// //// http://www.apache.org/licenses/LICENSE-2.0 //// //// Unless required by applicable law or agreed to in writing, software //// distributed under the License is distributed on an "AS IS" BASIS, //// 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. //// package handlers import ( "e2mgr/logger" "e2mgr/mocks" "e2mgr/models" "e2mgr/sessions" "github.com/pkg/errors" "testing" ) func TestLostConnectionHandlerSuccess(t *testing.T) { logger, _ := logger.InitLogger(logger.InfoLevel) ranName := "test" notificationRequest := models.NotificationRequest{RanName: ranName} ranReconnectionManagerMock := &mocks.RanReconnectionManagerMock{} ranReconnectionManagerMock.On("ReconnectRan", ranName).Return(nil) handler := NewRanLostConnectionHandler(ranReconnectionManagerMock) handler.Handle(logger, make(sessions.E2Sessions), ¬ificationRequest, nil) ranReconnectionManagerMock.AssertCalled(t, "ReconnectRan", ranName) } func TestLostConnectionHandlerFailure(t *testing.T) { logger, _ := logger.InitLogger(logger.InfoLevel) ranName := "test" notificationRequest := models.NotificationRequest{RanName: ranName} ranReconnectionManagerMock := &mocks.RanReconnectionManagerMock{} ranReconnectionManagerMock.On("ReconnectRan", ranName).Return(errors.New("error")) handler := NewRanLostConnectionHandler(ranReconnectionManagerMock) handler.Handle(logger, make(sessions.E2Sessions), ¬ificationRequest, nil) ranReconnectionManagerMock.AssertCalled(t, "ReconnectRan", ranName) } // //func TestHandleUnsolicitedDisconnectionNotConnectedSuccess(t *testing.T){ // log, err := logger.InitLogger(logger.DebugLevel) // if err!=nil{ // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) // } // // readerMock :=&mocks.RnibReaderMock{} // rnibReaderProvider := func() reader.RNibReader { // return readerMock // } // writerMock := &mocks.RnibWriterMock{} // rnibWriterProvider := func() rNibWriter.RNibWriter { // return writerMock // } // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) // // e2Sessions := make(sessions.E2Sessions) // transactionId := "1234" // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} // payload := []byte("Error") // 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 messageChannel chan<- *models.NotificationResponse // // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} // var rnibErr common.IRNibError // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) // // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) //} // //func TestHandleUnsolicitedDisconnectionShuttingDownSuccess(t *testing.T){ // log, err := logger.InitLogger(logger.DebugLevel) // if err!=nil{ // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) // } // // readerMock :=&mocks.RnibReaderMock{} // rnibReaderProvider := func() reader.RNibReader { // return readerMock // } // writerMock := &mocks.RnibWriterMock{} // rnibWriterProvider := func() rNibWriter.RNibWriter { // return writerMock // } // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) // // e2Sessions := make(sessions.E2Sessions) // transactionId := "1234" // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} // payload := []byte("Error") // 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 messageChannel chan<- *models.NotificationResponse // // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} // var rnibErr common.IRNibError // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) // // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) //} // //func TestHandleUnsolicitedDisconnectionShutDownSuccess(t *testing.T){ // log, err := logger.InitLogger(logger.DebugLevel) // if err!=nil{ // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) // } // // readerMock :=&mocks.RnibReaderMock{} // rnibReaderProvider := func() reader.RNibReader { // return readerMock // } // writerMock := &mocks.RnibWriterMock{} // rnibWriterProvider := func() rNibWriter.RNibWriter { // return writerMock // } // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) // // e2Sessions := make(sessions.E2Sessions) // transactionId := "1234" // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} // payload := []byte("Error") // 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 messageChannel chan<- *models.NotificationResponse // // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} // var rnibErr common.IRNibError // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) // // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) //} // //func TestHandleUnsolicitedDisconnectionReaderFailure(t *testing.T){ // log, err := logger.InitLogger(logger.DebugLevel) // if err!=nil{ // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) // } // // readerMock :=&mocks.RnibReaderMock{} // rnibReaderProvider := func() reader.RNibReader { // return readerMock // } // writerMock := &mocks.RnibWriterMock{} // rnibWriterProvider := func() rNibWriter.RNibWriter { // return writerMock // } // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) // // e2Sessions := make(sessions.E2Sessions) // transactionId := "1234" // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} // payload := []byte("Error") // 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 messageChannel chan<- *models.NotificationResponse // // var nb *entities.NodebInfo // rnibErr := common.RNibError{} // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) //} // //func TestHandleUnsolicitedDisconnectionWriterFailure(t *testing.T){ // log, err := logger.InitLogger(logger.DebugLevel) // if err!=nil{ // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) // } // // readerMock :=&mocks.RnibReaderMock{} // rnibReaderProvider := func() reader.RNibReader { // return readerMock // } // writerMock := &mocks.RnibWriterMock{} // rnibWriterProvider := func() rNibWriter.RNibWriter { // return writerMock // } // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) // // e2Sessions := make(sessions.E2Sessions) // transactionId := "1234" // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} // payload := []byte("Error") // 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 messageChannel chan<- *models.NotificationResponse // // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} // var rnibErr common.IRNibError // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(common.RNibError{}) // // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) //}