}*/
NotificationResponseBuffer int
BigRedButtonTimeoutSec int
- MaxConnectionAttempts int
MaxRnibConnectionAttempts int
RnibRetryIntervalMs int
KeepAliveResponseTimeoutMs int
//config.populateKubernetesConfig(viper.Sub("kubernetes"))
config.NotificationResponseBuffer = viper.GetInt("notificationResponseBuffer")
config.BigRedButtonTimeoutSec = viper.GetInt("bigRedButtonTimeoutSec")
- config.MaxConnectionAttempts = viper.GetInt("maxConnectionAttempts")
config.MaxRnibConnectionAttempts = viper.GetInt("maxRnibConnectionAttempts")
config.RnibRetryIntervalMs = viper.GetInt("rnibRetryIntervalMs")
config.KeepAliveResponseTimeoutMs = viper.GetInt("keepAliveResponseTimeoutMs")
func (c *Configuration) String() string {
return fmt.Sprintf("{logging.logLevel: %s, http.port: %d, rmr: { port: %d, maxMsgSize: %d}, routingManager.baseUrl: %s, "+
- "notificationResponseBuffer: %d, bigRedButtonTimeoutSec: %d, maxConnectionAttempts: %d, maxRnibConnectionAttempts: %d, "+
+ "notificationResponseBuffer: %d, bigRedButtonTimeoutSec: %d, maxRnibConnectionAttempts: %d, "+
"rnibRetryIntervalMs: %d, keepAliveResponseTimeoutMs: %d, keepAliveDelayMs: %d, e2tInstanceDeletionTimeoutMs: %d, "+
"globalRicId: { plmnId: %s, ricNearRtId: %s}}",//, kubernetes: {configPath: %s, namespace: %s}}",
c.Logging.LogLevel,
c.RoutingManager.BaseUrl,
c.NotificationResponseBuffer,
c.BigRedButtonTimeoutSec,
- c.MaxConnectionAttempts,
c.MaxRnibConnectionAttempts,
c.RnibRetryIntervalMs,
c.KeepAliveResponseTimeoutMs,
# The Jenkins job requires a tag to build the Docker image.
# Global-JJB script assumes this file is in the repo root.
---
-tag: 4.4.5
+tag: 4.4.6
nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
readerMock.On("GetNodeb", ranName).Return(nb, nil)
var nbUpdated = *nb
- nbUpdated.ConnectionAttempts = 0
writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil)
- var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
+ var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil)
payload := e2pdus.PackedX2setupRequest
nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
readerMock.On("GetNodeb", ranName).Return(nb, nil)
var nbUpdated = *nb
- nbUpdated.ConnectionAttempts = 0
writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil)
- var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, ConnectionAttempts: 1, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
+ var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"}
writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil)
payload := e2pdus.PackedEndcX2setupRequest
module e2mgr
require (
- gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.34
- gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.34
- gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.34
+ gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35
+ gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35
+ gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35
gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.5.2
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
github.com/go-ozzo/ozzo-validation v3.5.0+incompatible
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.34 h1:d53dCN59dZftx847pzyo/zIKk0XJjOqMAx4VwxJHO10=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.34/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35 h1:TGXHb4DNY8on+ej4S9VUnk2HibIC/5chDy64OE+bQBQ=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.34 h1:7jxKtb+VPgwHKxQuWne1mG09rsi330erwb1u4OsWEaA=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.34/go.mod h1:G+4sUBMbLfQ+RrGS65U15tKmbnP+/1b5oLTPmMfyfT4=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35 h1:tkM3yE8UzmuH4nf9TqAmiNBSuIZ2CtcMRH2eBIYIzpQ=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35/go.mod h1:G+4sUBMbLfQ+RrGS65U15tKmbnP+/1b5oLTPmMfyfT4=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.34 h1:niBDUlmhq+8dhXt7z8KW+ZBq/0XlnM4FzvrLYlub1co=
gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.34/go.mod h1:tcc2L3Fb7hTvxK+QVTCbWjBX//078qOgPMwA9ZyCxY4=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35 h1:LcxnUUDwsCzYEISKmkjkyYfg/lnLt8ofkPiGK69vNIA=
+gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35/go.mod h1:2bSaXTpECbZieB8bMnubTqMwF3n+mMBxlTaAXvcduNg=
gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2 h1:UK7awyRKIkVdokWvvkYvazlg3EWIfMnIqCcJxTnLlDA=
gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2/go.mod h1:y2WhrCvdLkAKdH+ySdHSOSehACJkTMyZghCGVcqoZzc=
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
ConnectionStatus: entities.ConnectionStatus_CONNECTING,
E2ApplicationProtocol: protocol,
RanName: requestDetails.RanName,
- ConnectionAttempts: 0,
}
nbIdentity := &entities.NbIdentity{
if err != nil {
h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed selecting E2T instance", nodebInfo.RanName)
- if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED && nodebInfo.ConnectionAttempts == 0 {
+ if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED{
return err
}
nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
- nodebInfo.ConnectionAttempts = 0
updateError := h.rNibDataService.UpdateNodebInfo(nodebInfo)
if updateError != nil {
if nodebInfo.ConnectionStatus == entities.ConnectionStatus_CONNECTED {
status = nodebInfo.ConnectionStatus
}
- nodebInfo.ConnectionAttempts = 0
err := h.rNibDataService.UpdateNodebInfo(nodebInfo)
if err != nil {
nodebInfo, _ := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil)
updatedNb := *nodebInfo
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
writerMock.On("SaveNodeb", nbIdentity, mock.Anything).Return(nil)
writerMock.On("UpdateNodebInfo", nb).Return(nil)
nb.AssociatedE2TInstanceAddress = E2TAddress
- nb.ConnectionAttempts = 0
mockHttpClientAssociateRan(httpClientMock)
updatedNb := *nb
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
_, err := handler.Handle(*setupRequest)
nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
updatedNb := *nodebInfo
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
updatedNb := *nodebInfo
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
updatedNb := *nodebInfo
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil)
// updatedNb := *nb
// updatedNb.AssociatedE2TInstanceAddress = E2TAddress
-// updatedNb.ConnectionAttempts = 0
// writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf("")))
// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
// assert.IsType(t, /* &e2managererrors.RnibDbError{} */&common.InternalError{}, err)
// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil)
// updatedNb := *nb
// updatedNb.AssociatedE2TInstanceAddress = E2TAddress
-// updatedNb.ConnectionAttempts = 0
// writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
// ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil)
// updatedNb := *nb
// updatedNb.AssociatedE2TInstanceAddress = E2TAddress
-// updatedNb.ConnectionAttempts = 0
// writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
// ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil)
// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
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("")))
_, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
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 := updatedNb
updatedNb3.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
- updatedNb3.ConnectionAttempts--
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
- 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, 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)
ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(nil)
_, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
var initialNodeb = &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr)
- var argNodeb = &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 0}
+ var argNodeb = &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName)
var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr)
- var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, ConnectionAttempts: 1}
+ var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName)
return
}
- nodebInfo.ConnectionAttempts = 0
nbIdentity := &entities.NbIdentity{InventoryName: inventoryName}
err := h.setupResponseManager.PopulateNodebByPdu(h.logger, nbIdentity, nodebInfo, request.Payload)
nodebInfo := &entities.NodebInfo{
ConnectionStatus: entities.ConnectionStatus_CONNECTING,
- ConnectionAttempts: 1,
RanName: RanName,
Ip: "10.0.2.2",
Port: 1231,
nodebInfo := &entities.NodebInfo{
ConnectionStatus: entities.ConnectionStatus_CONNECTING,
- ConnectionAttempts: 1,
RanName: RanName,
Ip: "10.0.2.2",
Port: 1231,
testContext.readerMock.AssertCalled(t, "GetNodeb", RanName)
testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus)
- assert.EqualValues(t, 0, nodebInfo.ConnectionAttempts)
assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType)
assert.IsType(t, &entities.NodebInfo_Enb{}, nodebInfo.Configuration)
testContext.readerMock.AssertCalled(t, "GetNodeb", RanName)
testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus)
- assert.EqualValues(t, 0, nodebInfo.ConnectionAttempts)
assert.EqualValues(t, entities.Failure_X2_SETUP_FAILURE, nodebInfo.FailureType)
assert.NotNil(t, nodebInfo.SetupFailure)
testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg")
testContext.readerMock.AssertCalled(t, "GetNodeb", RanName)
testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus)
- assert.EqualValues(t, 0, nodebInfo.ConnectionAttempts)
assert.EqualValues(t, entities.Node_GNB, nodebInfo.NodeType)
assert.IsType(t, &entities.NodebInfo_Gnb{}, nodebInfo.Configuration)
testContext.readerMock.AssertCalled(t, "GetNodeb", RanName)
testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus)
- assert.EqualValues(t, 0, nodebInfo.ConnectionAttempts)
assert.EqualValues(t, entities.Failure_ENDC_X2_SETUP_FAILURE, nodebInfo.FailureType)
assert.NotNil(t, nodebInfo.SetupFailure)
testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg")
testContext := NewSetupResponseTestContext(nil)
handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, managers.NewX2SetupResponseManager(converters.NewX2SetupResponseConverter(logger)), testContext.ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP)
var rnibErr error
- testContext.readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, ConnectionAttempts: 1}, rnibErr)
+ testContext.readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING}, rnibErr)
handler.Handle(¬ificationRequest)
testContext.readerMock.AssertCalled(t, "GetNodeb", ranName)
testContext.writerMock.AssertNotCalled(t, "SaveNodeb")
testContext.readerMock.AssertCalled(t, "GetNodeb", RanName)
testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo)
assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus)
- assert.EqualValues(t, 0, nodebInfo.ConnectionAttempts)
assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType)
assert.IsType(t, &entities.NodebInfo_Enb{}, nodebInfo.Configuration)
rr.HandleFunc("/{ranName}", nodebController.GetNodeb).Methods(http.MethodGet)
rr.HandleFunc("/{ranName}/update", nodebController.UpdateGnb).Methods(http.MethodPut)
rr.HandleFunc("/shutdown", nodebController.Shutdown).Methods(http.MethodPut)
- rr.HandleFunc("/{ranName}/reset", nodebController.X2Reset).Methods(http.MethodPut)
- rr.HandleFunc("/x2-setup", nodebController.X2Setup).Methods(http.MethodPost)
- rr.HandleFunc("/endc-setup", nodebController.EndcSetup).Methods(http.MethodPost)
rrr := r.PathPrefix("/e2t").Subrouter()
rrr.HandleFunc("/list", e2tController.GetE2TInstances).Methods(http.MethodGet)
}
nodebControllerMock := &mocks.NodebControllerMock{}
nodebControllerMock.On("Shutdown").Return(nil)
- nodebControllerMock.On("X2Reset").Return(nil)
- nodebControllerMock.On("X2Setup").Return(nil)
- nodebControllerMock.On("EndcSetup").Return(nil)
nodebControllerMock.On("GetNodeb").Return(nil)
nodebControllerMock.On("GetNodebIdList").Return(nil)
return router, rootControllerMock, nodebControllerMock, e2tControllerMock
}
-func TestRoutePostEndcSetup(t *testing.T) {
- router, _, nodebControllerMock, _ := setupRouterAndMocks()
-
- req, err := http.NewRequest("POST", "/v1/nodeb/endc-setup", nil)
- if err != nil {
- t.Fatal(err)
- }
- rr := httptest.NewRecorder()
- router.ServeHTTP(rr, req)
-
- nodebControllerMock.AssertNumberOfCalls(t, "EndcSetup", 1)
-}
-
-func TestRoutePostX2Setup(t *testing.T) {
- router, _, nodebControllerMock, _ := setupRouterAndMocks()
-
- req, err := http.NewRequest("POST", "/v1/nodeb/x2-setup", nil)
- if err != nil {
- t.Fatal(err)
- }
- rr := httptest.NewRecorder()
- router.ServeHTTP(rr, req)
-
- nodebControllerMock.AssertNumberOfCalls(t, "X2Setup", 1)
-}
-
func TestRouteGetNodebIds(t *testing.T) {
router, _, nodebControllerMock, _ := setupRouterAndMocks()
nodebControllerMock.AssertNumberOfCalls(t, "Shutdown", 1)
}
-func TestRoutePutNodebResetRanName(t *testing.T) {
- router, _, nodebControllerMock, _ := setupRouterAndMocks()
-
- req, err := http.NewRequest("PUT", "/v1/nodeb/ran1/reset", nil)
- if err != nil {
- t.Fatal(err)
- }
- rr := httptest.NewRecorder()
- router.ServeHTTP(rr, req)
-
- assert.Equal(t, http.StatusOK, rr.Code, "handler returned wrong status code")
- assert.Equal(t, "ran1", rr.Body.String(), "handler returned wrong body")
- nodebControllerMock.AssertNumberOfCalls(t, "X2Reset", 1)
-}
-
func TestRouteNotFound(t *testing.T) {
router, _, _,_ := setupRouterAndMocks()
} else {
nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED
nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
- nodebInfo.ConnectionAttempts = 0
}
rNibErr := m.rnibDataService.UpdateNodebInfo(nodebInfo)
if rNibErr != nil {
func TestAssociateRanSuccess(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
updatedNb := *nb
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
func TestAssociateRanRoutingManagerError(t *testing.T) {
manager, _, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, false)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
writerMock.On("UpdateNodebInfo", nb).Return(nil)
err := manager.AssociateRan(E2TAddress, nb)
func TestAssociateRanUpdateNodebError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
updatedNb := *nb
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError())
func TestAssociateRanGetE2tInstanceError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
updatedNb := *nb
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
func TestAssociateRanSaveE2tInstanceError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
updatedNb := *nb
- updatedNb.ConnectionAttempts = 0
updatedNb.AssociatedE2TInstanceAddress = E2TAddress
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
func TestDissociateRanSuccess(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, true)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
readerMock.On("GetNodeb", RanName).Return(nb, nil)
updatedNb := *nb
updatedNb.AssociatedE2TInstanceAddress = ""
func TestDissociateRanUpdateNodebError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
readerMock.On("GetNodeb", RanName).Return(nb, nil)
updatedNb := *nb
updatedNb.AssociatedE2TInstanceAddress = ""
func TestDissociateRanGetE2tInstanceError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
readerMock.On("GetNodeb", RanName).Return(nb, nil)
updatedNb := *nb
updatedNb.AssociatedE2TInstanceAddress = ""
func TestDissociateRanSaveE2tInstanceError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
readerMock.On("GetNodeb", RanName).Return(nb, nil)
updatedNb := *nb
updatedNb.AssociatedE2TInstanceAddress = ""
func TestDissociateRanRoutingManagerError(t *testing.T) {
manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, false)
- nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
+ nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress}
readerMock.On("GetNodeb", RanName).Return(nb, nil)
updatedNb := *nb
updatedNb.AssociatedE2TInstanceAddress = ""
return nil
}
- nodebInfo.ConnectionAttempts = 0;
-
if connectionStatus == entities.ConnectionStatus_SHUTTING_DOWN {
return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_SHUT_DOWN)
}
func (m *RanSetupManager) updateConnectionStatus(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error {
// Update retries and connection status
nodebInfo.ConnectionStatus = status
- nodebInfo.ConnectionAttempts++
err := m.rnibDataService.UpdateNodebInfo(nodebInfo)
if err != nil {
m.logger.Errorf("#RanSetupManager.updateConnectionStatus - Ran name: %s - Failed updating RAN's connection status to %v : %s", nodebInfo.RanName, status, err)
} else {
- m.logger.Infof("#RanSetupManager.updateConnectionStatus - Ran name: %s - Successfully updated rNib. RAN's current connection status: %v, RAN's current connection attempts: %d", nodebInfo.RanName, status, nodebInfo.ConnectionAttempts)
+ m.logger.Infof("#RanSetupManager.updateConnectionStatus - Ran name: %s - Successfully updated rNib. RAN's current connection status: %v", nodebInfo.RanName, status)
}
return err
}
func (m *RanSetupManager) updateConnectionStatusDisconnected(nodebInfo *entities.NodebInfo) error {
// Update retries and connection status
nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
- nodebInfo.ConnectionAttempts--
err := m.rnibDataService.UpdateNodebInfo(nodebInfo)
if err != nil {
m.logger.Errorf("#RanSetupManager.updateConnectionStatusDisconnected - Ran name: %s - Failed updating RAN's connection status to DISCONNECTED : %s", nodebInfo.RanName, err)
} else {
- m.logger.Infof("#RanSetupManager.updateConnectionStatusDisconnected - Ran name: %s - Successfully updated rNib. RAN's current connection status: DISCONNECTED, RAN's current connection attempts: %d", nodebInfo.RanName, nodebInfo.ConnectionAttempts)
+ m.logger.Infof("#RanSetupManager.updateConnectionStatusDisconnected - Ran name: %s - Successfully updated rNib. RAN's current connection status: DISCONNECTED", nodebInfo.RanName)
}
return err
}
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
var rnibErr error
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST}
var rnibErr error
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
var rnibErr error
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr)
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
var rnibErr = common.NewInternalError(fmt.Errorf("DB error"))
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr)
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+ var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
var rnibErr error
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(common.NewInternalError(fmt.Errorf("DB error")))
ranName := "test1"
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 argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_UNKNOWN_E2_APPLICATION_PROTOCOL}
var rnibErr error
writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr)
baseUrl: http://10.0.2.15:12020/ric/v1/handles/
notificationResponseBuffer: 100
bigRedButtonTimeoutSec: 5
-maxConnectionAttempts: 3
maxRnibConnectionAttempts: 3
rnibRetryIntervalMs: 10
keepAliveResponseTimeoutMs: 4500