From 15f8f917ea8d0d7ec8398d8a95f2aff31e98d4f4 Mon Sep 17 00:00:00 2001 From: is005q Date: Mon, 16 Dec 2019 16:41:25 +0200 Subject: [PATCH] [RICPLT-2523] Update UTs............. Change-Id: I0aefceec861f2a235bfdea5ef19450e0afb6f112 Signed-off-by: is005q --- E2Manager/go.sum | 26 ------ .../httpmsghandlers/setup_request_handler.go | 4 +- .../httpmsghandlers/setup_request_handler_test.go | 99 ++++++++++++++-------- .../managers/ran_reconnection_manager_test.go | 53 +++++++++--- 4 files changed, 106 insertions(+), 76 deletions(-) diff --git a/E2Manager/go.sum b/E2Manager/go.sum index 830b9df..a15cf88 100644 --- a/E2Manager/go.sum +++ b/E2Manager/go.sum @@ -1,38 +1,12 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.23 h1:JbSOhvj9fVEUF2XZg8cw5QAyeKUi5xXgpwXrrxfDgLM= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.23/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.24 h1:tW817tat6fSSK7NuFKEDHSoSsO3z8kr7QORfbn1Hpuc= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.24/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.25 h1:msB3b7s+KoNdzSOKZPgymoMJEpA84fSTWBDCgvbUKaE= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.25/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.26 h1:OQs1i2pNH85IxGiEsN/0yNUzTfiTgGVZwgvmfrkAhds= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.26/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.27 h1:frasTDcg8Q8FgYutzJ+xSLHz9YseR2BmPSSBs4GI/1M= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.27/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.28 h1:Rewapfbc30ZkBaYB/3gW3W1BEivoiPdQm5UnmUswcMA= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.28/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.23 h1:akVZc8NWJ9oPujd7cQY3Ti3se4PF1/NoC+Dwt+YzINc= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.23/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.24 h1:5ZnhEUygvN5PuTXS2bNt6KavT+Wtuh9Vra+EqZIvw+Q= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.24/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.25 h1:W9CayjJzo3r0MrgDODBg4YwIEJ/VZc4BWqfK2qWX7jg= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.25/go.mod h1:Fh23KkroYw5CRBh39WzZzxpKSkpQWL3scdzGnMngLo8= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.26 h1:8buj1aJBkoHPFQPfcCJ2MiL9VjdA5iR1kcc1CzNFB00= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.26/go.mod h1:Fh23KkroYw5CRBh39WzZzxpKSkpQWL3scdzGnMngLo8= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.27 h1:nvZDzuB/SYKDuF1It7M4/Y/iVlVrCZ0Ob8AITAyppKo= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.27/go.mod h1:Fh23KkroYw5CRBh39WzZzxpKSkpQWL3scdzGnMngLo8= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.28 h1:+8Nn+Jn/AvhwBI1LtLsNS1PtOGAOYUHdicOrMn/8mmU= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.28/go.mod h1:Fh23KkroYw5CRBh39WzZzxpKSkpQWL3scdzGnMngLo8= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.23 h1:TYV3HE2UNwGOWiA4C226/WhB94crwjuHKIFTgDDvo8I= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.23/go.mod h1:uZVjwZjfWV4JJzyQVO/O48Ykph57zfpfMB7nK+WGKX8= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.24 h1:Wwp36IoHwp091lXVCYLtFK6AMhoGAR4NYEgW1C42h6k= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.24/go.mod h1:Qi0e0BsGtsMdyJQS0PBtvHBDKEimjtDjQtVUxGZqTtM= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.25 h1:mxLhqHxp4yeo01sT3GrGVa7chaedOd7cj00Q2TK3xJM= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.25/go.mod h1:gfLVMDJ1W5uwTphc74b70SGXqBHYjo2v2ZdtroX5pFs= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.26 h1:zGKpxfqz7Ql4rpD53JcWmDTwILrZfe0GIdi/QMslUew= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.26/go.mod h1:DCf5H9yy6kNTXsnUgXAPSuJt22ca4pYm0mo2ovJhLrA= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.27 h1:sWjlU/wBiWIBeSixnr9etCqtNmS2LW8jv+x2JGpf2eI= -gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.27/go.mod h1:vZ/335+rRSQW82wcbc80fNNICSK3TiCqIxmkqeC2Pfo= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.28 h1:AaYvK59fxDXQUV9NCo6WuxDOvBQbnRU3WTPyJaYhkkg= gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.28/go.mod h1:vZ/335+rRSQW82wcbc80fNNICSK3TiCqIxmkqeC2Pfo= gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.0 h1:+P3XuWKSaMbzh5PNtrW9gkZlCN0hKrZq+Cn8JetwBys= diff --git a/E2Manager/handlers/httpmsghandlers/setup_request_handler.go b/E2Manager/handlers/httpmsghandlers/setup_request_handler.go index e64347d..19c1182 100644 --- a/E2Manager/handlers/httpmsghandlers/setup_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/setup_request_handler.go @@ -161,11 +161,11 @@ func (h *SetupRequestHandler) connectExistingRanWithAssociatedE2TAddress(nodebIn err := h.rNibDataService.UpdateNodebInfo(nodebInfo) if err != nil { - h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - failed updating nodeb in rNib. error: %s", nodebInfo.RanName, err) + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - failed resetting connection attempts of RAN. error: %s", nodebInfo.RanName, err) return e2managererrors.NewRnibDbError() } - h.logger.Infof("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - successfully updated nodeb in rNib", nodebInfo.RanName) + h.logger.Infof("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - successfully reset connection attempts of RAN", nodebInfo.RanName) result := h.ranSetupManager.ExecuteSetup(nodebInfo, status) diff --git a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go index 6ca7b0b..bf7a76e 100644 --- a/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go @@ -19,13 +19,17 @@ package httpmsghandlers import ( "e2mgr/configuration" "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/managers" "e2mgr/mocks" "e2mgr/models" + "e2mgr/rmrCgo" "e2mgr/services" "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" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "testing" ) @@ -48,6 +52,24 @@ func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock } +func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := getRmrSender(rmrMessengerMock, log) + ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManager) + + return readerMock, writerMock, handler, rmrMessengerMock +} + func TestX2SetupHandleNoPortError(t *testing.T) { readerMock, _, handler, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) @@ -108,14 +130,13 @@ func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) { } func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) { - readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) - e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError()) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) - e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan") writerMock.AssertNotCalled(t, "SaveNodeb") - ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") + rmrMessengerMock.AssertNotCalled(t, "SendMsg") } func TestSetupNewRanAssociateRanFailure(t *testing.T) { @@ -203,8 +224,8 @@ func TestEndcSetupExistingRanShuttingDown(t *testing.T) { func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError()) updatedNb := *nb updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED @@ -216,23 +237,24 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) { } func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) { - readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) - e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError()) + readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) updatedNb := *nb updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} _, err := handler.Handle(setupRequest) assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) - ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") + rmrMessengerMock.AssertNotCalled(t, "SendMsg") + writerMock.AssertExpectations(t) } func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError()) updatedNb := *nb updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED @@ -245,8 +267,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailu func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:"", ConnectionStatus:entities.ConnectionStatus_DISCONNECTED} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, e2managererrors.NewE2TInstanceAbsenceError()) setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} _, err := handler.Handle(setupRequest) @@ -257,8 +279,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(t func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError()) _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) @@ -269,8 +291,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebFails(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil) updatedNb := *nb @@ -284,8 +306,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebF func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil) updatedNb := *nb @@ -299,8 +321,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:""} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) e2tInstancesManagerMock.On("AssociateRan", RanName, E2TAddress).Return(nil) updatedNb := *nb @@ -314,8 +336,8 @@ func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) { func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf(""))) @@ -327,23 +349,32 @@ func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) { } func TestSetupExistingRanWithAssocE2TInstanceExecuteSetupRmrError(t *testing.T) { - readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + readerMock, writerMock, handler, rmrMessengerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 + updatedNb2 := updatedNb + updatedNb2.ConnectionAttempts++ + updatedNb3 := updatedNb2 + updatedNb3.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNb3.ConnectionAttempts-- writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) - ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(e2managererrors.NewRmrError()) + writerMock.On("UpdateNodebInfo", &updatedNb2).Return(nil) + payload := e2pdus.PackedX2setupRequest + xaction := []byte(RanName) + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), RanName, &payload, &xaction) + rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, e2managererrors.NewRmrError()) + writerMock.On("UpdateNodebInfo", &updatedNb3).Return(nil) _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) assert.IsType(t, &e2managererrors.RmrError{}, err) - e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") - e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan") + writerMock.AssertExpectations(t) } func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) { readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) - nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED} - readerMock.On("GetNodeb", RanName).Return(nb , nil) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", RanName).Return(nb, nil) updatedNb := *nb updatedNb.ConnectionAttempts = 0 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) @@ -352,4 +383,4 @@ func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) { assert.Nil(t, err) e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") e2tInstancesManagerMock.AssertNotCalled(t, "AssociateRan") -} \ No newline at end of file +} diff --git a/E2Manager/managers/ran_reconnection_manager_test.go b/E2Manager/managers/ran_reconnection_manager_test.go index 09b6914..7496e60 100644 --- a/E2Manager/managers/ran_reconnection_manager_test.go +++ b/E2Manager/managers/ran_reconnection_manager_test.go @@ -33,7 +33,28 @@ import ( "testing" ) -func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *RanReconnectionManager, *mocks.E2TInstancesManagerMock) { +func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *RanReconnectionManager) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, logger) + + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger) + ranSetupManager := NewRanSetupManager(logger, rmrSender, rnibDataService) + ranReconnectionManager := NewRanReconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, ranSetupManager, e2tInstancesManager) + return logger, rmrMessengerMock, readerMock, writerMock, ranReconnectionManager +} + +func initRanLostConnectionTestBasicMocks(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *RanReconnectionManager, *mocks.E2TInstancesManagerMock) { logger, err := logger.InitLogger(logger.DebugLevel) if err != nil { t.Errorf("#... - failed to initialize logger, error: %s", err) @@ -55,7 +76,7 @@ func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RmrMessenge } func TestRanReconnectionGetNodebFailure(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" var nodebInfo *entities.NodebInfo readerMock.On("GetNodeb", ranName).Return(nodebInfo, common.NewInternalError(errors.New("Error"))) @@ -66,7 +87,7 @@ func TestRanReconnectionGetNodebFailure(t *testing.T) { } func TestShutdownRanReconnection(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN} var rnibErr error @@ -78,7 +99,7 @@ func TestShutdownRanReconnection(t *testing.T) { } func TestShuttingdownRanReconnection(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN} var rnibErr error @@ -93,7 +114,7 @@ func TestShuttingdownRanReconnection(t *testing.T) { } func TestConnectingRanWithMaxAttemptsReconnectionDissociateSucceeds(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, e2tInstancesManagerMock := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" e2tAddress := "10.0.2.15" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 20, AssociatedE2TInstanceAddress: e2tAddress} @@ -103,16 +124,19 @@ func TestConnectingRanWithMaxAttemptsReconnectionDissociateSucceeds(t *testing.T updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED updatedNodebInfo.AssociatedE2TInstanceAddress = "" writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) - e2tInstancesManagerMock.On("DissociateRan", ranName, e2tAddress).Return(nil) + e2tInstance := &entities.E2TInstance{Address:e2tAddress, AssociatedRanList:[]string{ranName}} + readerMock.On("GetE2TInstance",e2tAddress).Return(e2tInstance, nil) + e2tInstanceToSave := * e2tInstance + e2tInstanceToSave .AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &e2tInstanceToSave).Return(nil) err := ranReconnectionManager.ReconnectRan(ranName) assert.Nil(t, err) readerMock.AssertCalled(t, "GetNodeb", ranName) writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) - e2tInstancesManagerMock.AssertCalled(t, "DissociateRan", ranName, e2tAddress) } func TestConnectingRanWithMaxAttemptsReconnectionDissociateFails(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, e2tInstancesManagerMock := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" e2tAddress := "10.0.2.15" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 20, AssociatedE2TInstanceAddress: e2tAddress} @@ -122,16 +146,17 @@ func TestConnectingRanWithMaxAttemptsReconnectionDissociateFails(t *testing.T) { updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED updatedNodebInfo.AssociatedE2TInstanceAddress = "" writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) - e2tInstancesManagerMock.On("DissociateRan", ranName, e2tAddress).Return(common.NewInternalError(errors.New("Error"))) + e2tInstance := &entities.E2TInstance{Address:e2tAddress, AssociatedRanList:[]string{ranName}} + readerMock.On("GetE2TInstance",e2tAddress).Return(e2tInstance, common.NewInternalError(errors.New("Error"))) err := ranReconnectionManager.ReconnectRan(ranName) assert.NotNil(t, err) readerMock.AssertCalled(t, "GetNodeb", ranName) writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) - e2tInstancesManagerMock.AssertCalled(t, "DissociateRan", ranName, e2tAddress) + writerMock.AssertNotCalled(t, "SaveE2TInstance", ) } func TestUnconnectableRanUpdateNodebInfoFailure(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN} var rnibErr error @@ -146,7 +171,7 @@ func TestUnconnectableRanUpdateNodebInfoFailure(t *testing.T) { } func TestConnectedRanExecuteSetupSuccess(t *testing.T) { - _, rmrMessengerMock, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, rmrMessengerMock, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST} var rnibErr error @@ -164,7 +189,7 @@ func TestConnectedRanExecuteSetupSuccess(t *testing.T) { } func TestConnectedRanExecuteSetupFailure(t *testing.T) { - _, _, readerMock, writerMock, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, readerMock, writerMock, ranReconnectionManager := initRanLostConnectionTest(t) ranName := "test" origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTED} var rnibErr error @@ -180,7 +205,7 @@ func TestConnectedRanExecuteSetupFailure(t *testing.T) { } func TestNoSetConnectionStatus(t *testing.T) { - _, _, _, _, ranReconnectionManager, _ := initRanLostConnectionTest(t) + _, _, _, _, ranReconnectionManager := initRanLostConnectionTest(t) nodebInfo := &entities.NodebInfo{RanName: "ranName", GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTED} err := ranReconnectionManager.updateUnconnectableRan(nodebInfo) assert.Nil(t, err) -- 2.16.6