--- /dev/null
+package handlers
+
+import (
+ "e2mgr/configuration"
+ "e2mgr/e2pdus"
+ "e2mgr/logger"
+ "e2mgr/managers"
+ "e2mgr/mocks"
+ "e2mgr/models"
+ "e2mgr/rNibWriter"
+ "e2mgr/rmrCgo"
+ "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"
+ "github.com/stretchr/testify/mock"
+ "testing"
+)
+
+func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *managers.RanReconnectionManager) {
+ logger := initLog(t)
+
+ rmrMessengerMock := &mocks.RmrMessengerMock{}
+ rmrService := getRmrService(rmrMessengerMock, logger)
+
+ readerMock := &mocks.RnibReaderMock{}
+ rnibReaderProvider := func() reader.RNibReader {
+ return readerMock
+ }
+ writerMock := &mocks.RnibWriterMock{}
+ rnibWriterProvider := func() rNibWriter.RNibWriter {
+ return writerMock
+ }
+
+ ranReconnectionManager := managers.NewRanReconnectionManager(logger, configuration.ParseConfiguration(), rnibReaderProvider, rnibWriterProvider, rmrService)
+ return logger, readerMock, writerMock, rmrMessengerMock, ranReconnectionManager
+}
+
+func TestE2TerminInitHandlerSuccessOneRan(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ ids := []*entities.NbIdentity {{InventoryName:"test1"}}
+ readerMock.On("GetListNodebIds").Return(ids, rnibErr)
+
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ readerMock.On("GetNodeb", ids[0].InventoryName).Return(initialNodeb, rnibErr)
+
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+
+ payload := e2pdus.PackedX2setupRequest
+ xaction := []byte(ids[0].InventoryName)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[0].InventoryName, &payload, &xaction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
+}
+
+func TestE2TerminInitHandlerSuccessTwoRans(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ ids := []*entities.NbIdentity {{InventoryName:"test1"}, {InventoryName:"test2"} }
+ readerMock.On("GetListNodebIds").Return(ids, rnibErr)
+
+ var initialNodeb0 = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb1 = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ readerMock.On("GetNodeb", ids[0].InventoryName).Return(initialNodeb0, rnibErr)
+ readerMock.On("GetNodeb", ids[1].InventoryName).Return(initialNodeb1, rnibErr)
+
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+
+
+ payload := e2pdus.PackedX2setupRequest
+ xaction := []byte(ids[0].InventoryName)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[0].InventoryName, &payload, &xaction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 2)
+}
+
+func TestE2TerminInitHandlerSuccessThreeRansFirstRmrFailure(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ ids := []*entities.NbIdentity {{InventoryName:"test1"}, {InventoryName:"test2"},{InventoryName:"test3"} }
+ readerMock.On("GetListNodebIds").Return(ids, rnibErr)
+
+ var initialNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb1 = &entities.NodebInfo{RanName: ids[1].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb2 = &entities.NodebInfo{RanName: ids[2].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ readerMock.On("GetNodeb", ids[0].InventoryName).Return(initialNodeb0, rnibErr)
+ readerMock.On("GetNodeb", ids[1].InventoryName).Return(initialNodeb1, rnibErr)
+ readerMock.On("GetNodeb", ids[2].InventoryName).Return(initialNodeb2, rnibErr)
+
+ var argNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb0Fail = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0}
+ writerMock.On("UpdateNodebInfo", argNodeb0).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb0Fail).Return(rnibErr)
+
+
+ payload :=models.NewE2RequestMessage(ids[0].InventoryName /*tid*/, "", 0,ids[0].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ xaction := []byte(ids[0].InventoryName)
+ msg0 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[0].InventoryName, &payload, &xaction)
+
+ // Cannot use Mock because request MBuf contains pointers
+ //payload =models.NewE2RequestMessage(ids[1].InventoryName /*tid*/, "", 0,ids[1].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ //xaction = []byte(ids[1].InventoryName)
+ //msg1 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[1].InventoryName, &payload, &xaction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg0, fmt.Errorf("RMR Error"))
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ //test1 (before send +1, after failure +1), test2 (0) test3 (0)
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2)
+ //test1 failure (+1), test2 (0). test3 (0)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
+}
+
+func TestE2TerminInitHandlerSuccessThreeRansSecondNotFoundFailure(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ ids := []*entities.NbIdentity {{InventoryName:"test1"}, {InventoryName:"test2"},{InventoryName:"test3"} }
+ readerMock.On("GetListNodebIds").Return(ids, rnibErr)
+
+ var initialNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb1 = &entities.NodebInfo{RanName: ids[1].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb2 = &entities.NodebInfo{RanName: ids[2].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ readerMock.On("GetNodeb", ids[0].InventoryName).Return(initialNodeb0, rnibErr)
+ readerMock.On("GetNodeb", ids[1].InventoryName).Return(initialNodeb1, common.NewResourceNotFoundError(fmt.Errorf("not found")))
+ readerMock.On("GetNodeb", ids[2].InventoryName).Return(initialNodeb2, rnibErr)
+
+ var argNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb0Success = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb0).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb0Success).Return(rnibErr)
+
+ var argNodeb2 = &entities.NodebInfo{RanName: ids[2].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb2Success = &entities.NodebInfo{RanName: ids[2].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb2).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb2Success).Return(rnibErr)
+
+
+ payload :=models.NewE2RequestMessage(ids[0].InventoryName /*tid*/, "", 0,ids[0].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ xaction := []byte(ids[0].InventoryName)
+ msg0 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[0].InventoryName, &payload, &xaction)
+
+ // Cannot use Mock because request MBuf contains pointers
+ //payload =models.NewE2RequestMessage(ids[1].InventoryName /*tid*/, "", 0,ids[1].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ //xaction = []byte(ids[1].InventoryName)
+ //msg1 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[1].InventoryName, &payload, &xaction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg0, nil)
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ readerMock.AssertNumberOfCalls(t, "GetNodeb", 3)
+ //test1 (+1), test2 failure (0) test3 (+1)
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2)
+ //test1 success (+1), test2 (0). test3 (+1)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 2)
+}
+
+
+func TestE2TerminInitHandlerSuccessThreeRansSecondRnibInternalErrorFailure(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ ids := []*entities.NbIdentity {{InventoryName:"test1"}, {InventoryName:"test2"},{InventoryName:"test3"} }
+ readerMock.On("GetListNodebIds").Return(ids, rnibErr)
+
+ var initialNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb1 = &entities.NodebInfo{RanName: ids[1].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var initialNodeb2 = &entities.NodebInfo{RanName: ids[2].InventoryName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ readerMock.On("GetNodeb", ids[0].InventoryName).Return(initialNodeb0, rnibErr)
+ readerMock.On("GetNodeb", ids[1].InventoryName).Return(initialNodeb1, common.NewInternalError(fmt.Errorf("internal error")))
+ readerMock.On("GetNodeb", ids[2].InventoryName).Return(initialNodeb2, rnibErr)
+
+ var argNodeb0 = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb0Success = &entities.NodebInfo{RanName: ids[0].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb0).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb0Success).Return(rnibErr)
+
+ var argNodeb2 = &entities.NodebInfo{RanName: ids[2].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb2Success = &entities.NodebInfo{RanName: ids[2].InventoryName,ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ writerMock.On("UpdateNodebInfo", argNodeb2).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb2Success).Return(rnibErr)
+
+
+ payload :=models.NewE2RequestMessage(ids[0].InventoryName /*tid*/, "", 0,ids[0].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ xaction := []byte(ids[0].InventoryName)
+ msg0 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[0].InventoryName, &payload, &xaction)
+
+ // Cannot use Mock because request MBuf contains pointers
+ //payload =models.NewE2RequestMessage(ids[1].InventoryName /*tid*/, "", 0,ids[1].InventoryName, e2pdus.PackedX2setupRequest).GetMessageAsBytes(log)
+ //xaction = []byte(ids[1].InventoryName)
+ //msg1 := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ids[1].InventoryName, &payload, &xaction)
+
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg0, nil)
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ readerMock.AssertNumberOfCalls(t, "GetNodeb", 2)
+ //test1 (+1), test2 failure (0) test3 (0)
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
+ //test1 success (+1), test2 (0). test3 (+1)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
+}
+
+func TestE2TerminInitHandlerSuccessZeroRans(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+ var rnibErr common.IRNibError
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ readerMock.On("GetListNodebIds").Return( []*entities.NbIdentity{} , rnibErr)
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+}
+
+func TestE2TerminInitHandlerFailureGetListNodebIds(t *testing.T) {
+ log, readerMock, writerMock, rmrMessengerMock, ranReconnectMgr := initRanLostConnectionTest(t)
+
+ readerProvider := func() reader.RNibReader {
+ return readerMock
+ }
+
+ readerMock.On("GetListNodebIds").Return( []*entities.NbIdentity{} , common.NewInternalError(fmt.Errorf("internal error")))
+
+ handler := NewE2TermInitNotificationHandler(ranReconnectMgr, readerProvider)
+ handler.Handle(log, nil, nil, nil)
+
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+}
ranName := "test1"
-
writerMock := &mocks.RnibWriterMock{}
writerProvider := func() rNibWriter.RNibWriter {
return writerMock
}
- var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1 }
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
var rnibErr common.IRNibError
- writerMock.On("UpdateNodebInfo",argNodeb).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
- payload:= e2pdus.PackedX2setupRequest
+ payload := e2pdus.PackedX2setupRequest
xaction := []byte(ranName)
- msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrMessengerMock.On("SendMsg",mock.Anything,mock.Anything).Return(msg,nil)
- rmrService:= getRmrService(rmrMessengerMock, log)
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
+ rmrService := getRmrService(rmrMessengerMock, log)
mgr := NewRanSetupManager(log, rmrService, writerProvider)
- if err:= mgr.ExecuteSetup(initialNodeb); err != nil {
+ if err := mgr.ExecuteSetup(initialNodeb); err != nil {
t.Errorf("want: success, got: error: %s", err)
}
rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
}
-
func TestExecuteSetupConnectingEndcX2Setup(t *testing.T) {
log := initLog(t)
ranName := "test1"
-
writerMock := &mocks.RnibWriterMock{}
writerProvider := func() rNibWriter.RNibWriter {
return writerMock
}
- var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1 }
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1}
var rnibErr common.IRNibError
- writerMock.On("UpdateNodebInfo",argNodeb).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
- payload:= e2pdus.PackedEndcX2setupRequest
+ payload := e2pdus.PackedEndcX2setupRequest
xaction := []byte(ranName)
- msg:= rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrMessengerMock.On("SendMsg",mock.Anything,mock.Anything).Return(msg,nil)
- rmrService:= getRmrService(rmrMessengerMock, log)
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
+ rmrService := getRmrService(rmrMessengerMock, log)
mgr := NewRanSetupManager(log, rmrService, writerProvider)
- if err:= mgr.ExecuteSetup(initialNodeb); err != nil {
+ if err := mgr.ExecuteSetup(initialNodeb); err != nil {
t.Errorf("want: success, got: error: %s", err)
}
return writerMock
}
- var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1 }
- var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0 }
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0}
var rnibErr common.IRNibError
- writerMock.On("UpdateNodebInfo",argNodeb).Return(rnibErr)
- writerMock.On("UpdateNodebInfo",argNodebDisconnected).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr)
- payload:= []byte {0}
+ payload := []byte{0}
xaction := []byte(ranName)
- msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrMessengerMock.On("SendMsg",mock.Anything,mock.Anything).Return(msg,fmt.Errorf("send failure"))
- rmrService:= getRmrService(rmrMessengerMock, log)
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, fmt.Errorf("send failure"))
+ rmrService := getRmrService(rmrMessengerMock, log)
- mgr := NewRanSetupManager(log, rmrService, writerProvider)
- if err:= mgr.ExecuteSetup(initialNodeb); err == nil {
+ mgr := NewRanSetupManager(log, rmrService, writerProvider)
+ if err := mgr.ExecuteSetup(initialNodeb); err == nil {
t.Errorf("want: failure, got: success")
}
return writerMock
}
- var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1 }
- var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0 }
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0}
var rnibErr = common.NewInternalError(fmt.Errorf("DB error"))
- writerMock.On("UpdateNodebInfo",argNodeb).Return(rnibErr)
- writerMock.On("UpdateNodebInfo",argNodebDisconnected).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr)
- payload:= []byte {0}
+ payload := []byte{0}
xaction := []byte(ranName)
- msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrMessengerMock.On("SendMsg",mock.Anything,mock.Anything).Return(msg,fmt.Errorf("send failure"))
- rmrService:= getRmrService(rmrMessengerMock, log)
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, fmt.Errorf("send failure"))
+ rmrService := getRmrService(rmrMessengerMock, log)
mgr := NewRanSetupManager(log, rmrService, writerProvider)
- if err:= mgr.ExecuteSetup(initialNodeb); err == nil {
+ if err := mgr.ExecuteSetup(initialNodeb); err == nil {
t.Errorf("want: failure, got: success")
} else {
assert.IsType(t, e2managererrors.NewRnibDbError(), err)
}
-
writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
}
return writerMock
}
- var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1 }
- var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0 }
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0}
var rnibErr common.IRNibError
- writerMock.On("UpdateNodebInfo",argNodeb).Return(rnibErr)
- writerMock.On("UpdateNodebInfo",argNodebDisconnected).Return(common.NewInternalError(fmt.Errorf("DB error")))
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+ writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(common.NewInternalError(fmt.Errorf("DB error")))
- payload:= []byte {0}
+ payload := []byte{0}
xaction := []byte(ranName)
- msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
rmrMessengerMock := &mocks.RmrMessengerMock{}
- rmrMessengerMock.On("SendMsg",mock.Anything,mock.Anything).Return(msg,fmt.Errorf("send failure"))
- rmrService:= getRmrService(rmrMessengerMock, log)
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, fmt.Errorf("send failure"))
+ rmrService := getRmrService(rmrMessengerMock, log)
- mgr := NewRanSetupManager(log, rmrService, writerProvider)
- if err:= mgr.ExecuteSetup(initialNodeb); err == nil {
+ mgr := NewRanSetupManager(log, rmrService, writerProvider)
+ if err := mgr.ExecuteSetup(initialNodeb); err == nil {
t.Errorf("want: failure, got: success")
} else {
assert.IsType(t, e2managererrors.NewRnibDbError(), err)
rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1)
}
+func TestExecuteSetupUnsupportedProtocol(t *testing.T) {
+ log := initLog(t)
+
+ ranName := "test1"
+
+ writerMock := &mocks.RnibWriterMock{}
+ writerProvider := func() rNibWriter.RNibWriter {
+ return writerMock
+ }
+
+ var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_UNKNOWN_E2_APPLICATION_PROTOCOL}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_UNKNOWN_E2_APPLICATION_PROTOCOL, ConnectionAttempts: 1}
+ var rnibErr common.IRNibError
+ writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
+
+ payload := e2pdus.PackedX2setupRequest
+ xaction := []byte(ranName)
+ msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xaction)
+ rmrMessengerMock := &mocks.RmrMessengerMock{}
+ rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(msg, nil)
+ rmrService := getRmrService(rmrMessengerMock, log)
+
+ mgr := NewRanSetupManager(log, rmrService, writerProvider)
+ if err := mgr.ExecuteSetup(initialNodeb); err == nil {
+ t.Errorf("want: error, got: success")
+ }
+
+ writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1)
+ rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0)
+}
func initLog(t *testing.T) *logger.Logger {
log, err := logger.InitLogger(logger.InfoLevel)
}
return log
}
-
-