[RICPLT-2523] Update UTs............. 35/2035/1
authoris005q <idan.shalom@intl.att.com>
Mon, 16 Dec 2019 14:41:25 +0000 (16:41 +0200)
committeris005q <idan.shalom@intl.att.com>
Mon, 16 Dec 2019 14:41:31 +0000 (16:41 +0200)
Change-Id: I0aefceec861f2a235bfdea5ef19450e0afb6f112
Signed-off-by: is005q <idan.shalom@intl.att.com>
E2Manager/go.sum
E2Manager/handlers/httpmsghandlers/setup_request_handler.go
E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go
E2Manager/managers/ran_reconnection_manager_test.go

index 830b9df..a15cf88 100644 (file)
@@ -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=
index e64347d..19c1182 100644 (file)
@@ -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)
index 6ca7b0b..bf7a76e 100644 (file)
@@ -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
+}
index 09b6914..7496e60 100644 (file)
@@ -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)