Update go.mod to 1.0.20
[ric-plt/nodeb-rnib.git] / reader / rNibReader_test.go
index 35e9cb9..270f27b 100644 (file)
 package reader
 
 import (
-       "errors"
+       "encoding/json"
        "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/golang/protobuf/proto"
+       "github.com/pkg/errors"
        "github.com/stretchr/testify/assert"
        "testing"
+       "time"
 )
 
 var namespace = "namespace"
@@ -72,7 +74,7 @@ func TestGetNodeB(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -86,8 +88,12 @@ func TestGetNodeB(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetNb - Failed to marshal ENB instance. Error: %v", err)
        }
-       ret := map[string]interface{}{"RAN:" + name: string(data)}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeB - failed to validate key parameter")
+       }
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        getNb, er := w.GetNodeb(name)
        assert.Nil(t, er)
        assert.Equal(t, getNb.Ip, nb.Ip)
@@ -101,47 +107,59 @@ func TestGetNodeBNotFoundFailure(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        var ret map[string]interface{}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBNotFoundFailure - failed to validate key parameter")
+       }
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        getNb, er := w.GetNodeb(name)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getNodeb - responding node not found. Key: RAN:name", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.NodebInfo not found. Key: RAN:name", er.Error())
 }
 
 func TestGetNodeBUnmarshalFailure(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        ret := make(map[string]interface{}, 1)
-       ret["RAN:"+name] = "data"
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBUnmarshalFailure - failed to validate key parameter")
+       }
+       ret[redisKey] = "data"
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        getNb, er := w.GetNodeb(name)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 2, er.GetCode())
-       assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetNodeBSdlgoFailure(t *testing.T) {
        name := "name"
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        e := errors.New(errMsg)
        var ret map[string]interface{}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBSdlgoFailure - failed to validate key parameter")
+       }
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        getNb, er := w.GetNodeb(name)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
@@ -149,7 +167,7 @@ func TestGetNodeBCellsListEnb(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -163,8 +181,12 @@ func TestGetNodeBCellsListEnb(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.GetNodeBCellsList - Failed to marshal ENB instance. Error: %v", err)
        }
-       ret := map[string]interface{}{"RAN:" + name: string(data)}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListEnb - failed to validate key parameter")
+       }
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        cells, er := w.GetCellList(name)
        assert.Nil(t, er)
        assert.NotNil(t, cells)
@@ -177,7 +199,7 @@ func TestGetNodeBCellsListGnb(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -192,8 +214,12 @@ func TestGetNodeBCellsListGnb(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.GetNodeBCellsList - Failed to marshal GNB instance. Error: %v", err)
        }
-       ret := map[string]interface{}{"RAN:" + name: string(data)}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListGnb - failed to validate key parameter")
+       }
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        cells, er := w.GetCellList(name)
        assert.Nil(t, er)
        assert.NotNil(t, cells)
@@ -206,38 +232,46 @@ func TestGetNodeBCellsListNodeUnmarshalFailure(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        ret := make(map[string]interface{}, 1)
-       ret["RAN:"+name] = "data"
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListNodeUnmarshalFailure - failed to validate key parameter")
+       }
+       ret[redisKey] = "data"
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        cells, er := w.GetCellList(name)
        assert.NotNil(t, er)
        assert.Nil(t, cells)
-       assert.Equal(t, 2, er.GetCode())
-       assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetNodeBCellsListNodeNotFoundFailure(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        var ret map[string]interface{}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListNodeNotFoundFailure - failed to validate key parameter")
+       }
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        cells, er := w.GetCellList(name)
        assert.NotNil(t, er)
        assert.Nil(t, cells)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getNodeb - responding node not found. Key: RAN:name", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.NodebInfo not found. Key: RAN:name", er.Error())
 }
 
 func TestGetNodeBCellsListNotFoundFailureEnb(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -249,18 +283,22 @@ func TestGetNodeBCellsListNotFoundFailureEnb(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetNbCellsListNotFoundFailure - Failed to marshal ENB instance. Error: %v", err)
        }
-       ret := map[string]interface{}{"RAN:" + name: string(data)}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListNotFoundFailureEnb - failed to validate key parameter")
+       }
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        _, er := w.GetCellList(name)
        assert.NotNil(t, er)
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
+       assert.EqualValues(t, "#rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
 }
 
 func TestGetNodeBCellsListNotFoundFailureGnb(t *testing.T) {
        name := "name"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -270,19 +308,27 @@ func TestGetNodeBCellsListNotFoundFailureGnb(t *testing.T) {
        var e error
        data, err := proto.Marshal(&nb)
        if err != nil {
-               t.Errorf("#rNibReader_test.TestGetNbCellsListNotFoundFailure - Failed to marshal ENB instance. Error: %v", err)
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListNotFoundFailureGnb - Failed to marshal ENB instance. Error: %v", err)
+       }
+       redisKey, rNibErr := common.ValidateAndBuildNodeBNameKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetNodeBCellsListNotFoundFailureGnb - failed to validate key parameter")
        }
-       ret := map[string]interface{}{"RAN:" + name: string(data)}
-       sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
        _, er := w.GetCellList(name)
        assert.NotNil(t, er)
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
+       assert.EqualValues(t, "#rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
 }
 
 func TestCloseOnClosedPoolFailure(t *testing.T) {
        readerPool = nil
        instanceMock := initSdlInstanceMock(namespace, 1)
-       w1 := GetRNibReader()
+       w1 := &rNibReaderInstance{}
+       _, err := w1.GetNodeb("")
+       if err == nil{
+               t.Errorf("#rNibReader_test.TestCloseOnClosedPoolFailure - failed to validate key parameter")
+       }
        readerPool.Put(w1)
        available, created := readerPool.Stats()
        assert.Equal(t, 1, available, "number of available objects in the readerPool should be 1")
@@ -296,10 +342,13 @@ func TestCloseOnClosedPoolFailure(t *testing.T) {
 func TestCloseFailure(t *testing.T) {
        readerPool = nil
        instanceMock := initSdlInstanceMock(namespace, 2)
-       w1 := GetRNibReader()
-       readerPool.Put(w1)
+       w1 := &rNibReaderInstance{}
+       _, err := w1.GetNodeb("")
+       if err == nil{
+               t.Errorf("#rNibReader_test.TestCloseFailure - failed to validate key parameter")
+       }
        available, created := readerPool.Stats()
-       assert.Equal(t, 1, available, "number of available objects in the readerPool should be 1")
+       assert.Equal(t, 1, available, "number of available objects in the readerPool should be 2")
        assert.Equal(t, 1, created, "number of created objects in the readerPool should be 1")
        e := errors.New("expected error")
        instanceMock.On("Close").Return(e)
@@ -312,29 +361,29 @@ func TestCloseFailure(t *testing.T) {
 func TestGetListGnbIdsUnmarshalFailure(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GetMembers", GnbType).Return([]string{"data"}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return([]string{"data"}, e)
        ids, er := w.GetListGnbIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
-       assert.Equal(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.Equal(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetListGnbIdsSdlgoFailure(t *testing.T) {
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        e := errors.New(errMsg)
        var data []string
-       sdlInstanceMock.On("GetMembers", GnbType).Return(data, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return(data, e)
        ids, er := w.GetListGnbIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
@@ -342,7 +391,7 @@ func TestGetListNodesIdsGnbSdlgoFailure(t *testing.T) {
 
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
 
        name := "name"
        plmnId := "02f829"
@@ -353,18 +402,18 @@ func TestGetListNodesIdsGnbSdlgoFailure(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetListNodesIdsGnbSdlgoFailure - Failed to marshal nodeb identity entity. Error: %v", err)
        }
-       sdlInstanceMock.On("GetMembers", EnbType).Return([]string{string(data)}, nilError)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return([]string{string(data)}, nilError)
 
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        expectedError := errors.New(errMsg)
        var nilData []string
-       sdlInstanceMock.On("GetMembers", GnbType).Return(nilData, expectedError)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return(nilData, expectedError)
 
        ids, er := w.GetListNodebIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
@@ -372,7 +421,7 @@ func TestGetListNodesIdsEnbSdlgoFailure(t *testing.T) {
 
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
 
        name := "name"
        plmnId := "02f829"
@@ -383,56 +432,74 @@ func TestGetListNodesIdsEnbSdlgoFailure(t *testing.T) {
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetListNodesIdsEnbSdlgoFailure - Failed to marshal nodeb identity entity. Error: %v", err)
        }
-       sdlInstanceMock.On("GetMembers", GnbType).Return([]string{string(data)}, nilError)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return([]string{string(data)}, nilError)
 
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        expectedError := errors.New(errMsg)
        var nilData []string
-       sdlInstanceMock.On("GetMembers", EnbType).Return(nilData, expectedError)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return(nilData, expectedError)
 
        ids, er := w.GetListNodebIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
-func TestGetListNodesIdsEnbSdlgoSuccess(t *testing.T) {
+func TestGetListNodesIdsSuccess(t *testing.T) {
 
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
+       var nilError error
 
        name := "name"
        plmnId := "02f829"
        nbId := "4a952a0a"
        nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}}
-       var nilError error
        data, err := proto.Marshal(nbIdentity)
        if err != nil {
-               t.Errorf("#rNibReader_test.TestGetListNodesIdsEnbSdlgoFailure - Failed to marshal nodeb identity entity. Error: %v", err)
+               t.Errorf("#rNibReader_test.TestGetListNodesIdsSuccess - Failed to marshal nodeb identity entity. Error: %v", err)
+       }
+
+       name1 := "name1"
+       plmnId1 := "02f845"
+       nbId1 := "4a952a75"
+       nbIdentity1 := &entities.NbIdentity{InventoryName: name1, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId1, NbId: nbId1}}
+       data1, err := proto.Marshal(nbIdentity1)
+       if err != nil {
+               t.Errorf("#rNibReader_test.TestGetListNodesIdsSuccess - Failed to marshal nodeb identity entity. Error: %v", err)
        }
-       sdlInstanceMock.On("GetMembers", GnbType).Return([]string{string(data)}, nilError)
-       sdlInstanceMock.On("GetMembers", EnbType).Return([]string{string(data)}, nilError)
+
+       name2 := "name2"
+       nbIdentity2 := &entities.NbIdentity{InventoryName: name2}
+       data2, err := proto.Marshal(nbIdentity2)
+       if err != nil {
+               t.Errorf("#rNibReader_test.TestGetListNodesIdsSuccess - Failed to marshal nodeb identity entity. Error: %v", err)
+       }
+
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return([]string{string(data)}, nilError)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return([]string{string(data1)}, nilError)
+       sdlInstanceMock.On("GetMembers", entities.Node_UNKNOWN.String()).Return([]string{string(data2)}, nilError)
 
        ids, er := w.GetListNodebIds()
        assert.Nil(t, er)
        assert.NotNil(t, ids)
-       assert.Len(t, ids, 2)
+       assert.Len(t, ids, 3)
 }
 
 func TestGetListEnbIdsUnmarshalFailure(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GetMembers", EnbType).Return([]string{"data"}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return([]string{"data"}, e)
        ids, er := w.GetListEnbIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
-       assert.Equal(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.Equal(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetListEnbIdsOneId(t *testing.T) {
@@ -441,31 +508,31 @@ func TestGetListEnbIdsOneId(t *testing.T) {
        nbId := "4a952a0a"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}}
        var e error
        data, err := proto.Marshal(nbIdentity)
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetListEnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
        }
-       sdlInstanceMock.On("GetMembers", EnbType).Return([]string{string(data)}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return([]string{string(data)}, e)
        ids, er := w.GetListEnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, 1)
-       assert.Equal(t, (*ids)[0].GetInventoryName(), name)
-       assert.Equal(t, (*ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
-       assert.Equal(t, (*ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
+       assert.Len(t, ids, 1)
+       assert.Equal(t, (ids)[0].GetInventoryName(), name)
+       assert.Equal(t, (ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
+       assert.Equal(t, (ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
 }
 
 func TestGetListEnbIdsNoIds(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GetMembers", EnbType).Return([]string{}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return([]string{}, e)
        ids, er := w.GetListEnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, 0)
+       assert.Len(t, ids, 0)
 }
 
 func TestGetListEnbIds(t *testing.T) {
@@ -475,7 +542,7 @@ func TestGetListEnbIds(t *testing.T) {
        listSize := 3
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        idsData := make([]string, listSize)
        idsEntities := make([]*entities.NbIdentity, listSize)
        for i := 0; i < listSize; i++ {
@@ -488,11 +555,11 @@ func TestGetListEnbIds(t *testing.T) {
                idsEntities[i] = nbIdentity
        }
        var e error
-       sdlInstanceMock.On("GetMembers", EnbType).Return(idsData, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return(idsData, e)
        ids, er := w.GetListEnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, listSize)
-       for i, id := range *ids {
+       assert.Len(t, ids, listSize)
+       for i, id := range ids {
                assert.Equal(t, id.GetInventoryName(), name)
                assert.Equal(t, id.GetGlobalNbId().GetPlmnId(), idsEntities[i].GetGlobalNbId().GetPlmnId())
                assert.Equal(t, id.GetGlobalNbId().GetNbId(), idsEntities[i].GetGlobalNbId().GetNbId())
@@ -505,31 +572,31 @@ func TestGetListGnbIdsOneId(t *testing.T) {
        nbId := "4a952a0a"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}}
        var e error
        data, err := proto.Marshal(nbIdentity)
        if err != nil {
                t.Errorf("#rNibReader_test.TestGetListGnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
        }
-       sdlInstanceMock.On("GetMembers", GnbType).Return([]string{string(data)}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return([]string{string(data)}, e)
        ids, er := w.GetListGnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, 1)
-       assert.Equal(t, (*ids)[0].GetInventoryName(), name)
-       assert.Equal(t, (*ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
-       assert.Equal(t, (*ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
+       assert.Len(t, ids, 1)
+       assert.Equal(t, (ids)[0].GetInventoryName(), name)
+       assert.Equal(t, (ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
+       assert.Equal(t, (ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
 }
 
 func TestGetListGnbIdsNoIds(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GetMembers", GnbType).Return([]string{}, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return([]string{}, e)
        ids, er := w.GetListGnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, 0)
+       assert.Len(t, ids, 0)
 }
 
 func TestGetListGnbIds(t *testing.T) {
@@ -539,7 +606,7 @@ func TestGetListGnbIds(t *testing.T) {
        listSize := 3
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        idsData := make([]string, listSize)
        idsEntities := make([]*entities.NbIdentity, listSize)
        for i := 0; i < listSize; i++ {
@@ -552,11 +619,11 @@ func TestGetListGnbIds(t *testing.T) {
                idsEntities[i] = nbIdentity
        }
        var e error
-       sdlInstanceMock.On("GetMembers", GnbType).Return(idsData, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_GNB.String()).Return(idsData, e)
        ids, er := w.GetListGnbIds()
        assert.Nil(t, er)
-       assert.Len(t, *ids, listSize)
-       for i, id := range *ids {
+       assert.Len(t, ids, listSize)
+       for i, id := range ids {
                assert.Equal(t, id.GetInventoryName(), name)
                assert.Equal(t, id.GetGlobalNbId().GetPlmnId(), idsEntities[i].GetGlobalNbId().GetPlmnId())
                assert.Equal(t, id.GetGlobalNbId().GetNbId(), idsEntities[i].GetGlobalNbId().GetNbId())
@@ -565,26 +632,26 @@ func TestGetListGnbIds(t *testing.T) {
 
 func TestGetListEnbIdsSdlgoFailure(t *testing.T) {
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        e := errors.New(errMsg)
        var data []string
-       sdlInstanceMock.On("GetMembers", EnbType).Return(data, e)
+       sdlInstanceMock.On("GetMembers", entities.Node_ENB.String()).Return(data, e)
        ids, er := w.GetListEnbIds()
        assert.NotNil(t, er)
        assert.Nil(t, ids)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
 func TestGetCountGnbListOneId(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GroupSize", GnbType).Return(1, e)
+       sdlInstanceMock.On("GroupSize", entities.Node_GNB.String()).Return(1, e)
        count, er := w.GetCountGnbList()
        assert.Nil(t, er)
        assert.Equal(t, count, 1)
@@ -593,9 +660,9 @@ func TestGetCountGnbListOneId(t *testing.T) {
 func TestGetCountGnbList(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
-       sdlInstanceMock.On("GroupSize", GnbType).Return(3, e)
+       sdlInstanceMock.On("GroupSize", entities.Node_GNB.String()).Return(3, e)
        count, er := w.GetCountGnbList()
        assert.Nil(t, er)
        assert.Equal(t, count, 3)
@@ -603,17 +670,17 @@ func TestGetCountGnbList(t *testing.T) {
 
 func TestGetCountGnbListSdlgoFailure(t *testing.T) {
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        e := errors.New(errMsg)
        var count int
-       sdlInstanceMock.On("GroupSize", GnbType).Return(count, e)
+       sdlInstanceMock.On("GroupSize", entities.Node_GNB.String()).Return(count, e)
        count, er := w.GetCountGnbList()
        assert.NotNil(t, er)
        assert.Equal(t, 0, count)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
@@ -622,7 +689,7 @@ func TestGetCell(t *testing.T) {
        var pci uint32 = 10
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        cellEntity := entities.Cell{Type: entities.Cell_LTE_CELL, Cell: &entities.Cell_ServedCellInfo{ServedCellInfo: &entities.ServedCellInfo{Pci: pci}}}
        cellData, err := proto.Marshal(&cellEntity)
        if err != nil {
@@ -648,7 +715,7 @@ func TestGetCellNotFoundFailure(t *testing.T) {
        var pci uint32
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        var ret map[string]interface{}
        key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
@@ -659,8 +726,8 @@ func TestGetCellNotFoundFailure(t *testing.T) {
        cell, er := w.GetCell(name, pci)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: PCI:name:00", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.Cell not found. Key: PCI:name:00", er.Error())
 }
 
 func TestGetCellUnmarshalFailure(t *testing.T) {
@@ -668,7 +735,7 @@ func TestGetCellUnmarshalFailure(t *testing.T) {
        var pci uint32
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        ret := make(map[string]interface{}, 1)
        key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
@@ -680,18 +747,18 @@ func TestGetCellUnmarshalFailure(t *testing.T) {
        cell, er := w.GetCell(name, pci)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 2, er.GetCode())
-       assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetCellSdlgoFailure(t *testing.T) {
        name := "name"
        var pci uint32
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        e := errors.New(errMsg)
        var ret map[string]interface{}
        key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
@@ -702,14 +769,14 @@ func TestGetCellSdlgoFailure(t *testing.T) {
        cell, er := w.GetCell(name, pci)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
 func TestGetNodebById(t *testing.T) {
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        nb := entities.NodebInfo{NodeType: entities.Node_ENB}
        nb.ConnectionStatus = 1
        nb.Ip = "localhost"
@@ -747,7 +814,7 @@ func TestGetNodebByIdNotFoundFailureEnb(t *testing.T) {
        nbId := "4a952a0a"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_ENB.String(), plmnId, nbId)
        if rNibErr != nil {
@@ -759,8 +826,8 @@ func TestGetNodebByIdNotFoundFailureEnb(t *testing.T) {
        getNb, er := w.GetNodebByGlobalNbId(entities.Node_ENB, globalNbId)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getNodeb - responding node not found. Key: ENB:02f829:4a952a0a", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.NodebInfo not found. Key: ENB:02f829:4a952a0a", er.Error())
 }
 
 func TestGetNodebByIdNotFoundFailureGnb(t *testing.T) {
@@ -768,7 +835,7 @@ func TestGetNodebByIdNotFoundFailureGnb(t *testing.T) {
        nbId := "4a952a0a"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_GNB.String(), plmnId, nbId)
        if rNibErr != nil {
@@ -780,8 +847,8 @@ func TestGetNodebByIdNotFoundFailureGnb(t *testing.T) {
        getNb, er := w.GetNodebByGlobalNbId(entities.Node_GNB, globalNbId)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getNodeb - responding node not found. Key: GNB:02f829:4a952a0a", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.NodebInfo not found. Key: GNB:02f829:4a952a0a", er.Error())
 }
 
 func TestGetNodeByIdUnmarshalFailure(t *testing.T) {
@@ -789,7 +856,7 @@ func TestGetNodeByIdUnmarshalFailure(t *testing.T) {
        nbId := "4a952a0a"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_ENB.String(), plmnId, nbId)
        if rNibErr != nil {
                t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
@@ -802,18 +869,18 @@ func TestGetNodeByIdUnmarshalFailure(t *testing.T) {
        getNb, er := w.GetNodebByGlobalNbId(entities.Node_ENB, globalNbId)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 2, er.GetCode())
-       assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, "proto: can't skip unknown wire type 4", er.Error())
 }
 
 func TestGetNodeByIdSdlgoFailure(t *testing.T) {
        plmnId := "02f829"
        nbId := "4a952a0a"
        errMsg := "expected Sdlgo error"
-       errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_GNB.String(), plmnId, nbId)
        if rNibErr != nil {
                t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
@@ -825,7 +892,7 @@ func TestGetNodeByIdSdlgoFailure(t *testing.T) {
        getNb, er := w.GetNodebByGlobalNbId(entities.Node_GNB, globalNbId)
        assert.NotNil(t, er)
        assert.Nil(t, getNb)
-       assert.Equal(t, 2, er.GetCode())
+       assert.IsType(t, &common.InternalError{}, er)
        assert.EqualValues(t, errMsgExpected, er.Error())
 }
 
@@ -834,7 +901,7 @@ func TestGetCellById(t *testing.T) {
        var pci uint32 = 10
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        cellEntity := entities.Cell{Type: entities.Cell_LTE_CELL, Cell: &entities.Cell_ServedCellInfo{ServedCellInfo: &entities.ServedCellInfo{Pci: pci}}}
        cellData, err := proto.Marshal(&cellEntity)
        if err != nil {
@@ -859,7 +926,7 @@ func TestGetCellByIdNotFoundFailureEnb(t *testing.T) {
        cellId := "bbbb"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        var ret map[string]interface{}
        key, rNibErr := common.ValidateAndBuildCellIdKey(cellId)
@@ -870,15 +937,15 @@ func TestGetCellByIdNotFoundFailureEnb(t *testing.T) {
        cell, er := w.GetCellById(entities.Cell_LTE_CELL, cellId)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: CELL:bbbb", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.Cell not found. Key: CELL:bbbb", er.Error())
 }
 
 func TestGetCellByIdNotFoundFailureGnb(t *testing.T) {
        cellId := "bbbb"
        readerPool = nil
        sdlInstanceMock := initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        var e error
        var ret map[string]interface{}
        key, rNibErr := common.ValidateAndBuildNrCellIdKey(cellId)
@@ -889,52 +956,228 @@ func TestGetCellByIdNotFoundFailureGnb(t *testing.T) {
        cell, er := w.GetCellById(entities.Cell_NR_CELL, cellId)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 1, er.GetCode())
-       assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: NRCELL:bbbb", er.Error())
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.Cell not found. Key: NRCELL:bbbb", er.Error())
 }
 
 func TestGetCellByIdTypeValidationFailure(t *testing.T) {
        cellId := "dddd"
        readerPool = nil
        initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        cell, er := w.GetCellById(5, cellId)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 3, er.GetCode())
-       assert.EqualValues(t, "3 VALIDATION_ERROR - #rNibReader.GetCellById - invalid cell type: 5", er.Error())
+       assert.IsType(t, &common.ValidationError{}, er)
+       assert.EqualValues(t, "#rNibReader.GetCellById - invalid cell type: 5", er.Error())
 }
 
 func TestGetCellByIdValidationFailureGnb(t *testing.T) {
        cellId := ""
        readerPool = nil
        initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        cell, er := w.GetCellById(entities.Cell_NR_CELL, cellId)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 3, er.GetCode())
-       assert.EqualValues(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildNrCellIdKey - an empty cell id received", er.Error())
+       assert.IsType(t, &common.ValidationError{}, er)
+       assert.EqualValues(t, "#utils.ValidateAndBuildNrCellIdKey - an empty cell id received", er.Error())
 }
 
 func TestGetCellByIdValidationFailureEnb(t *testing.T) {
        cellId := ""
        readerPool = nil
        initSdlInstanceMock(namespace, 1)
-       w := GetRNibReader()
+       w := &rNibReaderInstance{}
        cell, er := w.GetCellById(entities.Cell_LTE_CELL, cellId)
        assert.NotNil(t, er)
        assert.Nil(t, cell)
-       assert.Equal(t, 3, er.GetCode())
-       assert.EqualValues(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildCellIdKey - an empty cell id received", er.Error())
+       assert.IsType(t, &common.ValidationError{}, er)
+       assert.EqualValues(t, "#utils.ValidateAndBuildCellIdKey - an empty cell id received", er.Error())
 }
 
-//integration tests
+func TestGetRanLoadInformation(t *testing.T) {
+       name := "name"
+       readerPool = nil
+       sdlInstanceMock := initSdlInstanceMock(namespace, 1)
+       w := &rNibReaderInstance{}
+       loadInfo := generateRanLoadInformation()
+       var e error
+       data, err := proto.Marshal(loadInfo)
+       if err != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err)
+       }
+       redisKey, rNibErr := common.ValidateAndBuildRanLoadInformationKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformationNotFoundFailure - failed to validate key parameter")
+       }
+       ret := map[string]interface{}{redisKey: string(data)}
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
+       getLoadInfo, er := w.GetRanLoadInformation(name)
+       assert.Nil(t, er)
+       assert.NotNil(t, getLoadInfo)
+       expected, err := json.Marshal(loadInfo)
+       if err != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err)
+       }
+       actual, err := json.Marshal(getLoadInfo)
+       if err != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err)
+       }
+       assert.EqualValues(t, expected, actual)
+}
+
+func TestGetRanLoadInformationValidationFailure(t *testing.T) {
+       name := ""
+       readerPool = nil
+       initSdlInstanceMock(namespace, 1)
+       w := &rNibReaderInstance{}
+       getNb, er := w.GetRanLoadInformation(name)
+       assert.NotNil(t, er)
+       assert.Nil(t, getNb)
+       assert.IsType(t, &common.ValidationError{}, er)
+       assert.EqualValues(t, "#utils.ValidateAndBuildRanLoadInformationKey - an empty inventory name received", er.Error())
+}
+
+func TestGetRanLoadInformationNotFoundFailure(t *testing.T) {
+       name := "name"
+       readerPool = nil
+       sdlInstanceMock := initSdlInstanceMock(namespace, 1)
+       w := &rNibReaderInstance{}
+       var e error
+       var ret map[string]interface{}
+       redisKey, rNibErr := common.ValidateAndBuildRanLoadInformationKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformationNotFoundFailure - failed to validate key parameter")
+       }
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
+       getNb, er := w.GetRanLoadInformation(name)
+       assert.NotNil(t, er)
+       assert.Nil(t, getNb)
+       assert.IsType(t, &common.ResourceNotFoundError{}, er)
+       assert.EqualValues(t, "#rNibReader.getByKeyAndUnmarshal - entity of type *entities.RanLoadInformation not found. Key: LOAD:name", er.Error())
+}
 
+func TestGetRanLoadInformationUnmarshalFailure(t *testing.T) {
+       name := "name"
+       readerPool = nil
+       sdlInstanceMock := initSdlInstanceMock(namespace, 1)
+       w := &rNibReaderInstance{}
+       var e error
+       ret := make(map[string]interface{}, 1)
+       redisKey, rNibErr := common.ValidateAndBuildRanLoadInformationKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformationUnmarshalFailure - failed to validate key parameter")
+       }
+       ret[redisKey] = "data"
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
+       getNb, er := w.GetRanLoadInformation(name)
+       assert.NotNil(t, er)
+       assert.Nil(t, getNb)
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, "proto: can't skip unknown wire type 4", er.Error())
+}
+
+func TestGetRanLoadInformationSdlgoFailure(t *testing.T) {
+       name := "name"
+       errMsg := "expected Sdlgo error"
+       errMsgExpected := "expected Sdlgo error"
+       readerPool = nil
+       sdlInstanceMock := initSdlInstanceMock(namespace, 1)
+       w := &rNibReaderInstance{}
+       e := errors.New(errMsg)
+       var ret map[string]interface{}
+       redisKey, rNibErr := common.ValidateAndBuildRanLoadInformationKey(name)
+       if rNibErr != nil {
+               t.Errorf("#rNibReader_test.TestGetRanLoadInformationSdlgoFailure - failed to validate key parameter")
+       }
+       sdlInstanceMock.On("Get", []string{redisKey}).Return(ret, e)
+       getNb, er := w.GetRanLoadInformation(name)
+       assert.NotNil(t, er)
+       assert.Nil(t, getNb)
+       assert.IsType(t, &common.InternalError{}, er)
+       assert.EqualValues(t, errMsgExpected, er.Error())
+}
+
+func generateCellLoadInformation() *entities.CellLoadInformation {
+       cellLoadInformation := entities.CellLoadInformation{}
+
+       cellLoadInformation.CellId = "123"
+
+       ulInterferenceOverloadIndication := entities.UlInterferenceOverloadIndication_HIGH_INTERFERENCE
+       cellLoadInformation.UlInterferenceOverloadIndications = []entities.UlInterferenceOverloadIndication{ulInterferenceOverloadIndication}
+
+       ulHighInterferenceInformation := entities.UlHighInterferenceInformation{
+               TargetCellId:"456",
+               UlHighInterferenceIndication:"xxx",
+       }
+
+       cellLoadInformation.UlHighInterferenceInfos = []*entities.UlHighInterferenceInformation{&ulHighInterferenceInformation }
+
+       cellLoadInformation.RelativeNarrowbandTxPower = &entities.RelativeNarrowbandTxPower{
+               RntpPerPrb:"xxx",
+               RntpThreshold:entities.RntpThreshold_NEG_4,
+               NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V1_ANT_PRT,
+               PB: 1,
+               PdcchInterferenceImpact:2,
+               EnhancedRntp: &entities.EnhancedRntp{
+                       EnhancedRntpBitmap:"xxx",
+                       RntpHighPowerThreshold:entities.RntpThreshold_NEG_2,
+                       EnhancedRntpStartTime: &entities.StartTime{StartSfn:500,StartSubframeNumber:5},
+               },
+       }
+
+       cellLoadInformation.AbsInformation = &entities.AbsInformation{
+               Mode: entities.AbsInformationMode_ABS_INFO_FDD,
+               AbsPatternInfo:"xxx",
+               NumberOfCellSpecificAntennaPorts:entities.NumberOfCellSpecificAntennaPorts_V2_ANT_PRT,
+               MeasurementSubset:"xxx",
+       }
+
+       cellLoadInformation.InvokeIndication = entities.InvokeIndication_ABS_INFORMATION
+
+       cellLoadInformation.ExtendedUlInterferenceOverloadInfo = &entities.ExtendedUlInterferenceOverloadInfo{
+               AssociatedSubframes:"xxx",
+               ExtendedUlInterferenceOverloadIndications:cellLoadInformation.UlInterferenceOverloadIndications,
+       }
+
+       compInformationItem := &entities.CompInformationItem{
+               CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "789", CompHypothesis: "xxx"}},
+               BenefitMetric:50,
+       }
+
+       cellLoadInformation.CompInformation = &entities.CompInformation{
+               CompInformationItems:[]*entities.CompInformationItem{compInformationItem},
+               CompInformationStartTime:&entities.StartTime{StartSfn:123,StartSubframeNumber:456},
+       }
+
+       cellLoadInformation.DynamicDlTransmissionInformation = &entities.DynamicDlTransmissionInformation{
+               State: entities.NaicsState_NAICS_ACTIVE,
+               TransmissionModes:"xxx",
+               PB: 2,
+               PAList:[]entities.PA{entities.PA_DB_NEG_3},
+       }
+
+       return &cellLoadInformation
+}
+
+func generateRanLoadInformation() *entities.RanLoadInformation {
+       ranLoadInformation := entities.RanLoadInformation{}
+
+       ranLoadInformation.LoadTimestamp = uint64(time.Now().UnixNano())
+
+       cellLoadInformation := generateCellLoadInformation()
+       ranLoadInformation.CellLoadInfos = []*entities.CellLoadInformation{cellLoadInformation}
+
+       return &ranLoadInformation
+}
+
+//integration tests
+//
 //func TestGetEnbInteg(t *testing.T){
 //     name := "nameEnb1"
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     nb, err := w.GetNodeb(name)
 //     if err != nil{
 //             fmt.Println(err)
@@ -946,7 +1189,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //func TestGetEnbCellsInteg(t *testing.T){
 //     name := "nameEnb1"
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     cells, err := w.GetCellList(name)
 //     if err != nil{
 //             fmt.Println(err)
@@ -960,7 +1203,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //func TestGetGnbInteg(t *testing.T){
 //     name := "nameGnb1"
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     nb, err := w.GetNodeb(name)
 //     if err != nil{
 //             fmt.Println(err)
@@ -972,7 +1215,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //func TestGetGnbCellsInteg(t *testing.T){
 //     name := "nameGnb1"
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     cells, err := w.GetCellList(name)
 //     if err != nil{
 //             fmt.Println(err)
@@ -985,12 +1228,12 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //
 //func TestGetListEnbIdsInteg(t *testing.T) {
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     ids, err := w.GetListEnbIds()
 //     if err != nil{
 //             fmt.Println(err)
 //     } else {
-//             for _, id := range *ids{
+//             for _, id := range ids{
 //                     fmt.Printf("#TestGetListEnbIdsInteg - ENB ID: %s\n", id)
 //             }
 //     }
@@ -998,12 +1241,12 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //
 //func TestGetListGnbIdsInteg(t *testing.T) {
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     ids, err := w.GetListGnbIds()
 //     if err != nil{
 //             fmt.Println(err)
 //     } else {
-//             for _, id := range *ids{
+//             for _, id := range ids{
 //                     fmt.Printf("#TestGetListGnbIdsInteg - GNB ID: %s\n", id)
 //             }
 //     }
@@ -1011,7 +1254,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //
 //func TestGetCountGnbListInteg(t *testing.T) {
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     count, err := w.GetCountGnbList()
 //     if err != nil{
 //             fmt.Println(err)
@@ -1024,7 +1267,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //     name := "nameGnb7"
 //     pci := 0x0a
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     cell, err := w.GetCell(name, uint32(pci))
 //     if err != nil{
 //             fmt.Println(err)
@@ -1037,7 +1280,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //     name := "nameEnb1"
 //     pci := 0x22
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     cell, err := w.GetCell(name, uint32(pci))
 //     if err != nil {
 //             fmt.Println(err)
@@ -1048,7 +1291,7 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //
 //func TestGetEnbCellByIdInteg(t *testing.T){
 //     Init("namespace", 1)
-//     w := GetRNibReader()
+//     w := &rNibReaderInstance{}
 //     cell, err := w.GetCellById(entities.Cell_NR_CELL, "45d")
 //     if err != nil{
 //             fmt.Println(err)
@@ -1056,3 +1299,27 @@ func TestGetCellByIdValidationFailureEnb(t *testing.T) {
 //             fmt.Printf("responding node type NR Cell: %v\n", cell.GetServedNrCell())
 //     }
 //}
+//
+//func TestGetListNbIdsInteg(t *testing.T) {
+//     Init("e2Manager", 1)
+//     w := &rNibReaderInstance{}
+//     ids, err := w.GetListNodebIds()
+//     if err != nil{
+//             fmt.Println(err)
+//     } else {
+//             for _, id := range ids{
+//                     fmt.Printf("#TestGetListGnbIdsInteg - NB ID: %s\n", id)
+//             }
+//     }
+//}
+//
+//func TestGetRanLoadInformationInteg(t *testing.T){
+//     Init("e2Manager", 1)
+//     w := &rNibReaderInstance{}
+//     ranLoadInformation, err := w.GetRanLoadInformation("ran_integ")
+//     if err != nil{
+//             t.Errorf("#rNibReader_test.TestGetRanLoadInformationInteg - Failed to get RanLoadInformation entity. Error: %v", err)
+//     }
+//     assert.NotNil(t, ranLoadInformation)
+//     fmt.Printf("#rNibReader_test.TestGetRanLoadInformationInteg - GNB ID: %s\n", ranLoadInformation)
+//}
\ No newline at end of file