2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
21 "gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/common"
22 "gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities"
23 "github.com/golang/protobuf/proto"
24 "github.com/stretchr/testify/assert"
28 var namespace = "namespace"
30 func TestInit(t *testing.T) {
33 assert.NotNil(t, readerPool)
34 assert.NotNil(t, readerPool.New)
35 assert.NotNil(t, readerPool.Destroy)
36 available, created := readerPool.Stats()
37 assert.Equal(t, 0, available, "number of available objects in the readerPool should be 0")
38 assert.Equal(t, 0, created, "number of created objects in the readerPool should be 0")
41 func TestInitPool(t *testing.T) {
43 sdlInstanceMock := new(MockSdlInstance)
44 initPool(1, func() interface{} {
45 sdlI := common.ISdlInstance(sdlInstanceMock)
46 return &rNibReaderInstance{sdl: &sdlI, namespace: namespace}
48 func(obj interface{}) {
51 assert.NotNil(t, readerPool)
52 assert.NotNil(t, readerPool.New)
53 assert.NotNil(t, readerPool.Destroy)
54 available, created := readerPool.Stats()
55 assert.Equal(t, 0, available, "number of available objects in the readerPool should be 0")
56 assert.Equal(t, 0, created, "number of created objects in the readerPool should be 0")
59 func initSdlInstanceMock(namespace string, poolSize int) * MockSdlInstance {
60 sdlInstanceMock := new( MockSdlInstance)
61 initPool(poolSize, func() interface{} {
62 sdlI := common.ISdlInstance(sdlInstanceMock)
63 return &rNibReaderInstance{sdl: &sdlI, namespace: namespace}
65 func(obj interface{}) {
68 return sdlInstanceMock
71 func TestGetNodeB(t *testing.T) {
74 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
76 nb := entities.NodebInfo{}
77 nb.ConnectionStatus = 1
81 cell := entities.ServedCellInfo{Tac:"tac"}
82 enb.ServedCells = []*entities.ServedCellInfo{&cell}
83 nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
85 data, err := proto.Marshal(&nb)
87 t.Errorf("#rNibReader_test.TestGetNb - Failed to marshal ENB instance. Error: %v", err)
89 ret := map[string]interface{}{"RAN:" + name:string(data)}
90 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
91 getNb, er := w.GetNodeb(name)
93 assert.Equal(t, getNb.Ip, nb.Ip)
94 assert.Equal(t, getNb.Port, nb.Port)
95 assert.Equal(t, getNb.ConnectionStatus, nb.ConnectionStatus)
96 assert.Len(t, getNb.GetEnb().GetServedCells(), 1)
97 assert.Equal(t, getNb.GetEnb().GetServedCells()[0].Tac, nb.GetEnb().GetServedCells()[0].Tac)
100 func TestGetNodeBNotFoundFailure(t *testing.T) {
103 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
106 var ret map[string]interface{}
107 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
108 getNb, er := w.GetNodeb(name)
111 assert.Equal(t, 1, er.GetCode())
112 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetNodeb - responding node name not found", er.Error())
115 func TestGetNodeBUnmarshalFailure(t *testing.T) {
118 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
121 ret := make( map[string]interface{}, 1)
122 ret["RAN:" + name] = "data"
123 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
124 getNb, er := w.GetNodeb(name)
127 assert.Equal(t, 2, er.GetCode())
128 assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
131 func TestGetNodeBSdlgoFailure(t *testing.T) {
133 errMsg := "expected Sdlgo error"
134 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
136 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
138 e := errors.New(errMsg)
139 var ret map[string]interface{}
140 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
141 getNb, er := w.GetNodeb(name)
144 assert.Equal(t, 2, er.GetCode())
145 assert.EqualValues(t, errMsgExpected, er.Error())
148 func TestGetNodeBCellsListEnb(t *testing.T) {
151 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
153 nb := entities.NodebInfo{}
154 nb.ConnectionStatus = 1
157 enb := entities.Enb{}
158 cell := entities.ServedCellInfo{Tac:"tac"}
159 enb.ServedCells = []*entities.ServedCellInfo{&cell}
160 nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
162 data, err := proto.Marshal(&nb)
164 t.Errorf("#rNibReader_test.GetNodeBCellsList - Failed to marshal ENB instance. Error: %v", err)
166 ret := map[string]interface{}{"RAN:" + name:string(data)}
167 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
168 cells, er := w.GetCellList(name)
170 assert.NotNil(t, cells)
171 assert.Len(t, cells.GetServedCellInfos().GetServedCells(), 1)
172 retCell := cells.GetServedCellInfos().GetServedCells()[0]
173 assert.Equal(t, retCell.Tac, "tac")
176 func TestGetNodeBCellsListGnb(t *testing.T) {
179 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
181 nb := entities.NodebInfo{}
182 nb.ConnectionStatus = 1
185 nb.NodeType = entities.Node_GNB
186 gnb := entities.Gnb{}
187 cell := entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{NrPci:10}}
188 gnb.ServedNrCells = []*entities.ServedNRCell{&cell}
189 nb.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb}
191 data, err := proto.Marshal(&nb)
193 t.Errorf("#rNibReader_test.GetNodeBCellsList - Failed to marshal GNB instance. Error: %v", err)
195 ret := map[string]interface{}{"RAN:" + name:string(data)}
196 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
197 cells, er := w.GetCellList(name)
199 assert.NotNil(t, cells)
200 assert.Len(t, cells.GetServedNrCells().GetServedCells(), 1)
201 retCell := cells.GetServedNrCells().GetServedCells()[0]
202 assert.Equal(t, retCell.GetServedNrCellInformation().GetNrPci(), uint32(10))
205 func TestGetNodeBCellsListNodeUnmarshalFailure(t *testing.T) {
208 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
211 ret := make( map[string]interface{}, 1)
212 ret["RAN:" + name] = "data"
213 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
214 cells, er := w.GetCellList(name)
217 assert.Equal(t, 2, er.GetCode())
218 assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
221 func TestGetNodeBCellsListNodeNotFoundFailure(t *testing.T) {
224 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
227 var ret map[string]interface{}
228 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
229 cells, er := w.GetCellList(name)
232 assert.Equal(t, 1, er.GetCode())
233 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetNodeb - responding node name not found", er.Error())
236 func TestGetNodeBCellsListNotFoundFailureEnb(t *testing.T) {
239 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
241 nb := entities.NodebInfo{}
242 nb.ConnectionStatus = 1
245 enb := entities.Enb{}
246 nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
248 data, err := proto.Marshal(&nb)
250 t.Errorf("#rNibReader_test.TestGetNbCellsListNotFoundFailure - Failed to marshal ENB instance. Error: %v", err)
252 ret := map[string]interface{}{"RAN:" + name:string(data)}
253 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
254 _, er := w.GetCellList(name)
256 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
259 func TestGetNodeBCellsListNotFoundFailureGnb(t *testing.T) {
262 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
264 nb := entities.NodebInfo{}
265 nb.ConnectionStatus = 1
268 gnb := entities.Gnb{}
269 nb.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb}
271 data, err := proto.Marshal(&nb)
273 t.Errorf("#rNibReader_test.TestGetNbCellsListNotFoundFailure - Failed to marshal ENB instance. Error: %v", err)
275 ret := map[string]interface{}{"RAN:" + name:string(data)}
276 sdlInstanceMock.On("Get", []string{"RAN:" + name}).Return(ret, e)
277 _, er := w.GetCellList(name)
279 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetCellList - served cells not found. Responding node RAN name: name.", er.Error())
282 func TestCloseOnClosedPoolFailure(t *testing.T) {
284 instanceMock := initSdlInstanceMock(namespace, 1)
285 w1 := GetRNibReader()
287 available, created := readerPool.Stats()
288 assert.Equal(t, 1, available, "number of available objects in the readerPool should be 1")
289 assert.Equal(t, 1, created, "number of created objects in the readerPool should be 1")
291 instanceMock.On("Close").Return(e)
293 assert.Panics(t, func(){Close()})
296 func TestCloseFailure(t *testing.T) {
298 instanceMock := initSdlInstanceMock(namespace, 2)
299 w1 := GetRNibReader()
301 available, created := readerPool.Stats()
302 assert.Equal(t, 1, available, "number of available objects in the readerPool should be 1")
303 assert.Equal(t, 1, created, "number of created objects in the readerPool should be 1")
304 e := errors.New("expected error")
305 instanceMock.On("Close").Return(e)
307 available, created = readerPool.Stats()
308 assert.Equal(t, 0, available, "number of available objects in the readerPool should be 0")
309 assert.Equal(t, 0, created, "number of created objects in the readerPool should be 0")
312 func TestGetListGnbIdsUnmarshalFailure(t *testing.T) {
314 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
317 sdlInstanceMock.On("GetMembers", "GNB").Return([]string{"data"}, e)
318 ids, er := w.GetListGnbIds()
321 assert.Equal(t, 2, er.GetCode())
322 assert.Equal(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
325 func TestGetListGnbIdsSdlgoFailure(t *testing.T) {
326 errMsg := "expected Sdlgo error"
327 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
329 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
331 e := errors.New(errMsg)
333 sdlInstanceMock.On("GetMembers", "GNB").Return(data, e)
334 ids, er := w.GetListGnbIds()
337 assert.Equal(t, 2, er.GetCode())
338 assert.EqualValues(t, errMsgExpected,er.Error())
341 func TestGetListEnbIdsUnmarshalFailure(t *testing.T) {
343 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
346 sdlInstanceMock.On("GetMembers", "ENB").Return([]string{"data"}, e)
347 ids, er := w.GetListEnbIds()
350 assert.Equal(t, 2, er.GetCode())
351 assert.Equal(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
354 func TestGetListEnbIdsOneId(t *testing.T) {
359 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
361 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}}
363 data, err := proto.Marshal(nbIdentity)
365 t.Errorf("#rNibReader_test.TestGetListEnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
367 sdlInstanceMock.On("GetMembers", "ENB").Return([]string{string(data)}, e)
368 ids, er := w.GetListEnbIds()
370 assert.Len(t, *ids, 1)
371 assert.Equal(t, (*ids)[0].GetInventoryName(), name)
372 assert.Equal(t, (*ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
373 assert.Equal(t, (*ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
376 func TestGetListEnbIdsNoIds(t *testing.T) {
378 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
381 sdlInstanceMock.On("GetMembers", "ENB").Return([]string{}, e)
382 ids, er := w.GetListEnbIds()
384 assert.Len(t, *ids, 0)
387 func TestGetListEnbIds(t *testing.T) {
393 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
395 idsData := make([]string, listSize)
396 idsEntities := make([]*entities.NbIdentity, listSize)
397 for i:=0; i< listSize ;i++{
398 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:string(plmnId + i), NbId:string(nbId + i)}}
399 data, err := proto.Marshal(nbIdentity)
401 t.Errorf("#rNibReader_test.TestGetListEnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
403 idsData[i] = string(data)
404 idsEntities[i] = nbIdentity
407 sdlInstanceMock.On("GetMembers", "ENB").Return(idsData, e)
408 ids, er := w.GetListEnbIds()
410 assert.Len(t, *ids, listSize)
411 for i, id :=range *ids{
412 assert.Equal(t, id.GetInventoryName(), name)
413 assert.Equal(t, id.GetGlobalNbId().GetPlmnId(), idsEntities[i].GetGlobalNbId().GetPlmnId())
414 assert.Equal(t, id.GetGlobalNbId().GetNbId(), idsEntities[i].GetGlobalNbId().GetNbId())
418 func TestGetListGnbIdsOneId(t *testing.T) {
423 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
425 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}}
427 data, err := proto.Marshal(nbIdentity)
429 t.Errorf("#rNibReader_test.TestGetListGnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
431 sdlInstanceMock.On("GetMembers", "GNB").Return([]string{string(data)}, e)
432 ids, er := w.GetListGnbIds()
434 assert.Len(t, *ids, 1)
435 assert.Equal(t, (*ids)[0].GetInventoryName(), name)
436 assert.Equal(t, (*ids)[0].GetGlobalNbId().GetPlmnId(), nbIdentity.GetGlobalNbId().GetPlmnId())
437 assert.Equal(t, (*ids)[0].GetGlobalNbId().GetNbId(), nbIdentity.GetGlobalNbId().GetNbId())
440 func TestGetListGnbIdsNoIds(t *testing.T) {
442 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
445 sdlInstanceMock.On("GetMembers", "GNB").Return([]string{}, e)
446 ids, er := w.GetListGnbIds()
448 assert.Len(t, *ids, 0)
451 func TestGetListGnbIds(t *testing.T) {
457 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
459 idsData := make([]string, listSize)
460 idsEntities := make([]*entities.NbIdentity, listSize)
461 for i:=0; i< listSize ;i++{
462 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:string(plmnId + i), NbId:string(nbId + i)}}
463 data, err := proto.Marshal(nbIdentity)
465 t.Errorf("#rNibReader_test.TestGetListGnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
467 idsData[i] = string(data)
468 idsEntities[i] = nbIdentity
471 sdlInstanceMock.On("GetMembers", "GNB").Return(idsData, e)
472 ids, er := w.GetListGnbIds()
474 assert.Len(t, *ids, listSize)
475 for i, id :=range *ids{
476 assert.Equal(t, id.GetInventoryName(), name)
477 assert.Equal(t, id.GetGlobalNbId().GetPlmnId(), idsEntities[i].GetGlobalNbId().GetPlmnId())
478 assert.Equal(t, id.GetGlobalNbId().GetNbId(), idsEntities[i].GetGlobalNbId().GetNbId())
482 func TestGetListEnbIdsSdlgoFailure(t *testing.T) {
483 errMsg := "expected Sdlgo error"
484 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
486 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
488 e := errors.New(errMsg)
490 sdlInstanceMock.On("GetMembers", "ENB").Return(data, e)
491 ids, er := w.GetListEnbIds()
494 assert.Equal(t, 2, er.GetCode())
495 assert.EqualValues(t, errMsgExpected, er.Error())
498 func TestGetCountGnbListOneId(t *testing.T) {
503 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
505 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}}
507 data, err := proto.Marshal(nbIdentity)
509 t.Errorf("#rNibReader_test.TestGetCountGnbList - Failed to marshal nodeb identity entity. Error: %v", err)
511 sdlInstanceMock.On("GetMembers", "GNB").Return([]string{string(data)}, e)
512 count, er := w.GetCountGnbList()
514 assert.Equal(t, count, 1)
517 func TestGetCountGnbList(t *testing.T) {
523 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
526 idsData := make([]string, listSize)
527 idsEntities := make([]*entities.NbIdentity, listSize)
528 for i:=0; i< listSize ;i++{
529 nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:string(plmnId + i), NbId:string(nbId + i)}}
530 data, err := proto.Marshal(nbIdentity)
532 t.Errorf("#rNibReader_test.TestGetListGnbIds - Failed to marshal nodeb identity entity. Error: %v", err)
534 idsData[i] = string(data)
535 idsEntities[i] = nbIdentity
537 sdlInstanceMock.On("GetMembers", "GNB").Return(idsData, e)
538 count, er := w.GetCountGnbList()
540 assert.Equal(t, count, 3)
543 func TestGetCountGnbListSdlgoFailure(t *testing.T) {
544 errMsg := "expected Sdlgo error"
545 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
547 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
549 e := errors.New(errMsg)
551 sdlInstanceMock.On("GetMembers", "GNB").Return(data, e)
552 count, er := w.GetCountGnbList()
554 assert.Equal(t, 0, count)
555 assert.Equal(t, 2, er.GetCode())
556 assert.EqualValues(t, errMsgExpected, er.Error())
559 func TestGetCell(t *testing.T) {
564 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
566 cellEntity := entities.Cell{Type:entities.Cell_LTE_CELL, Cell:&entities.Cell_ServedCellInfo{ServedCellInfo:&entities.ServedCellInfo{Pci:pci}}}
567 cellData, err := proto.Marshal(&cellEntity)
569 t.Errorf("#rNibReader_test.TestGetCell - Failed to marshal Cell entity. Error: %v", err)
572 key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
574 t.Errorf("#rNibReader_test.TestGetCell - failed to validate key parameter")
576 ret := map[string]interface{}{key:string(cellData)}
577 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
578 cell, er := w.GetCell(name, pci)
580 assert.NotNil(t, cell)
581 assert.Equal(t, cell.Type, entities.Cell_LTE_CELL)
582 assert.NotNil(t, cell.GetServedCellInfo())
583 assert.Equal(t, cell.GetServedCellInfo().GetPci(), pci)
586 func TestGetCellNotFoundFailure(t *testing.T) {
590 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
593 var ret map[string]interface{}
594 key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
596 t.Errorf("#rNibReader_test.TestGetCellNotFoundFailure - failed to validate key parameter")
598 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
599 cell, er := w.GetCell(name, pci)
602 assert.Equal(t, 1, er.GetCode())
603 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: PCI:name:00", er.Error())
606 func TestGetCellUnmarshalFailure(t *testing.T) {
610 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
613 ret := make( map[string]interface{}, 1)
614 key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
616 t.Errorf("#rNibReader_test.TestGetCellUnmarshalFailure - failed to validate key parameter")
619 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
620 cell, er := w.GetCell(name, pci)
623 assert.Equal(t, 2, er.GetCode())
624 assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
627 func TestGetCellSdlgoFailure(t *testing.T) {
630 errMsg := "expected Sdlgo error"
631 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
633 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
635 e := errors.New(errMsg)
636 var ret map[string]interface{}
637 key, rNibErr := common.ValidateAndBuildCellNamePciKey(name, pci)
639 t.Errorf("#rNibReader_test.TestGetCellSdlgoFailure - failed to validate key parameter")
641 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
642 cell, er := w.GetCell(name, pci)
645 assert.Equal(t, 2, er.GetCode())
646 assert.EqualValues(t, errMsgExpected, er.Error())
649 func TestGetNodebById(t *testing.T) {
651 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
653 nb := entities.NodebInfo{NodeType:entities.Node_ENB}
654 nb.ConnectionStatus = 1
657 enb := entities.Enb{}
658 cell := entities.ServedCellInfo{Tac:"tac"}
659 enb.ServedCells = []*entities.ServedCellInfo{&cell}
660 nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb}
662 data, err := proto.Marshal(&nb)
664 t.Errorf("#rNibReader_test.TestGetNodebById - Failed to marshal ENB instance. Error: %v", err)
669 key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_ENB.String(), plmnId, nbId)
671 t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
673 ret := map[string]interface{}{key:string(data)}
674 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
675 globalNbId := &entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}
676 getNb, er := w.GetNodebByGlobalNbId(entities.Node_ENB, globalNbId)
678 assert.Equal(t, getNb.Ip, nb.Ip)
679 assert.Equal(t, getNb.Port, nb.Port)
680 assert.Equal(t, getNb.ConnectionStatus, nb.ConnectionStatus)
681 assert.Len(t, getNb.GetEnb().GetServedCells(), 1)
682 assert.Equal(t, getNb.GetEnb().GetServedCells()[0].Tac, nb.GetEnb().GetServedCells()[0].Tac)
685 func TestGetNodebByIdNotFoundFailureEnb(t *testing.T) {
689 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
692 key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_ENB.String(), plmnId, nbId)
694 t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
696 var ret map[string]interface{}
697 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
698 globalNbId := &entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}
699 getNb, er := w.GetNodebByGlobalNbId(entities.Node_ENB, globalNbId)
702 assert.Equal(t, 1, er.GetCode())
703 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetNodebByGlobalNbId - responding node not found, global nodeb Id: ENB:02f829:4a952a0a", er.Error())
706 func TestGetNodebByIdNotFoundFailureGnb(t *testing.T) {
710 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
713 key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_GNB.String(), plmnId, nbId)
715 t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
717 var ret map[string]interface{}
718 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
719 globalNbId := &entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}
720 getNb, er := w.GetNodebByGlobalNbId(entities.Node_GNB, globalNbId)
723 assert.Equal(t, 1, er.GetCode())
724 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.GetNodebByGlobalNbId - responding node not found, global nodeb Id: GNB:02f829:4a952a0a", er.Error())
727 func TestGetNodeByIdUnmarshalFailure(t *testing.T) {
731 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
733 key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_ENB.String(), plmnId, nbId)
735 t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
738 ret := make( map[string]interface{}, 1)
740 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
741 globalNbId := &entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}
742 getNb, er := w.GetNodebByGlobalNbId(entities.Node_ENB, globalNbId)
745 assert.Equal(t, 2, er.GetCode())
746 assert.EqualValues(t, "2 INTERNAL_ERROR - proto: can't skip unknown wire type 4", er.Error())
749 func TestGetNodeByIdSdlgoFailure(t *testing.T) {
752 errMsg := "expected Sdlgo error"
753 errMsgExpected := "2 INTERNAL_ERROR - expected Sdlgo error"
755 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
757 key, rNibErr := common.ValidateAndBuildNodeBIdKey(entities.Node_GNB.String(), plmnId, nbId)
759 t.Errorf("Failed to validate nodeb identity, plmnId: %s, nbId: %s", plmnId, nbId)
761 e := errors.New(errMsg)
762 var ret map[string]interface{}
763 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
764 globalNbId := &entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}
765 getNb, er := w.GetNodebByGlobalNbId(entities.Node_GNB, globalNbId)
768 assert.Equal(t, 2, er.GetCode())
769 assert.EqualValues(t, errMsgExpected, er.Error())
772 func TestGetCellById(t *testing.T) {
777 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
779 cellEntity := entities.Cell{Type:entities.Cell_LTE_CELL, Cell:&entities.Cell_ServedCellInfo{ServedCellInfo:&entities.ServedCellInfo{Pci:pci}}}
780 cellData, err := proto.Marshal(&cellEntity)
782 t.Errorf("#rNibReader_test.TestGetCellById - Failed to marshal Cell entity. Error: %v", err)
785 key, rNibErr := common.ValidateAndBuildCellIdKey(cellId)
787 t.Errorf("#rNibReader_test.TestGetCellById - failed to validate key parameter")
789 ret := map[string]interface{}{key:string(cellData)}
790 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
791 cell, er := w.GetCellById(entities.Cell_LTE_CELL, cellId)
793 assert.NotNil(t, cell)
794 assert.Equal(t, cell.Type, entities.Cell_LTE_CELL)
795 assert.NotNil(t, cell.GetServedCellInfo())
796 assert.Equal(t, cell.GetServedCellInfo().GetPci(), pci)
799 func TestGetCellByIdNotFoundFailureEnb(t *testing.T) {
802 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
805 var ret map[string]interface{}
806 key, rNibErr := common.ValidateAndBuildCellIdKey(cellId)
808 t.Errorf("#rNibReader_test.TestGetCellByIdNotFoundFailure - failed to validate key parameter")
810 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
811 cell, er := w.GetCellById(entities.Cell_LTE_CELL, cellId)
814 assert.Equal(t, 1, er.GetCode())
815 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: CELL:bbbb", er.Error())
818 func TestGetCellByIdNotFoundFailureGnb(t *testing.T) {
821 sdlInstanceMock := initSdlInstanceMock(namespace, 1)
824 var ret map[string]interface{}
825 key, rNibErr := common.ValidateAndBuildNrCellIdKey(cellId)
827 t.Errorf("#rNibReader_test.TestGetCellByIdNotFoundFailure - failed to validate key parameter")
829 sdlInstanceMock.On("Get", []string{key}).Return(ret, e)
830 cell, er := w.GetCellById(entities.Cell_NR_CELL, cellId)
833 assert.Equal(t, 1, er.GetCode())
834 assert.EqualValues(t, "1 RESOURCE_NOT_FOUND - #rNibReader.getCellByKey - cell not found, key: NRCELL:bbbb", er.Error())
837 func TestGetCellByIdTypeValidationFailure(t *testing.T) {
840 initSdlInstanceMock(namespace, 1)
842 cell, er := w.GetCellById(5, cellId)
845 assert.Equal(t, 3, er.GetCode())
846 assert.EqualValues(t, "3 VALIDATION_ERROR - #rNibReader.GetCellById - invalid cell type: 5", er.Error())
849 func TestGetCellByIdValidationFailureGnb(t *testing.T) {
852 initSdlInstanceMock(namespace, 1)
854 cell, er := w.GetCellById(entities.Cell_NR_CELL, cellId)
857 assert.Equal(t, 3, er.GetCode())
858 assert.EqualValues(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildNrCellIdKey - an empty cell id received", er.Error())
861 func TestGetCellByIdValidationFailureEnb(t *testing.T) {
864 initSdlInstanceMock(namespace, 1)
866 cell, er := w.GetCellById(entities.Cell_LTE_CELL, cellId)
869 assert.Equal(t, 3, er.GetCode())
870 assert.EqualValues(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildCellIdKey - an empty cell id received", er.Error())
875 //func TestGetEnbInteg(t *testing.T){
876 // name := "nameEnb1"
877 // Init("namespace", 1)
878 // w := GetRNibReader()
879 // nb, err := w.GetNodeb(name)
883 // fmt.Printf("#TestGetEnbInteg - responding node type: %v\n", nb)
887 //func TestGetEnbCellsInteg(t *testing.T){
888 // name := "nameEnb1"
889 // Init("namespace", 1)
890 // w := GetRNibReader()
891 // cells, err := w.GetCellList(name)
894 // } else if cells != nil{
895 // for _, cell := range cells.GetServedCellInfos().ServedCells{
896 // fmt.Printf("responding node type Cell: %v\n", *cell)
901 //func TestGetGnbInteg(t *testing.T){
902 // name := "nameGnb1"
903 // Init("namespace", 1)
904 // w := GetRNibReader()
905 // nb, err := w.GetNodeb(name)
909 // fmt.Printf("#TestGetGnbInteg - responding node type: %v\n", nb)
913 //func TestGetGnbCellsInteg(t *testing.T){
914 // name := "nameGnb1"
915 // Init("namespace", 1)
916 // w := GetRNibReader()
917 // cells, err := w.GetCellList(name)
920 // } else if cells != nil{
921 // for _, cell := range cells.GetServedNrCells().ServedCells{
922 // fmt.Printf("responding node type NR Cell: %v\n", *cell)
927 //func TestGetListEnbIdsInteg(t *testing.T) {
928 // Init("namespace", 1)
929 // w := GetRNibReader()
930 // ids, err := w.GetListEnbIds()
934 // for _, id := range *ids{
935 // fmt.Printf("#TestGetListEnbIdsInteg - ENB ID: %s\n", id)
940 //func TestGetListGnbIdsInteg(t *testing.T) {
941 // Init("namespace", 1)
942 // w := GetRNibReader()
943 // ids, err := w.GetListGnbIds()
947 // for _, id := range *ids{
948 // fmt.Printf("#TestGetListGnbIdsInteg - GNB ID: %s\n", id)
953 //func TestGetCountGnbListInteg(t *testing.T) {
954 // Init("namespace", 1)
955 // w := GetRNibReader()
956 // count, err := w.GetCountGnbList()
960 // fmt.Printf("#TestGetCountGnbListInteg - count Gnb list: %d\n", count)
964 //func TestGetGnbCellInteg(t *testing.T){
965 // name := "nameGnb7"
967 // Init("namespace", 1)
968 // w := GetRNibReader()
969 // cell, err := w.GetCell(name, uint32(pci))
972 // } else if cell != nil{
973 // fmt.Printf("responding node type NR Cell: %v\n", cell.GetServedNrCell())
977 //func TestGetEnbCellInteg(t *testing.T) {
978 // name := "nameEnb1"
980 // Init("namespace", 1)
981 // w := GetRNibReader()
982 // cell, err := w.GetCell(name, uint32(pci))
985 // } else if cell != nil {
986 // fmt.Printf("responding node type LTE Cell: %v\n", cell.GetServedCellInfo())
990 //func TestGetEnbCellByIdInteg(t *testing.T){
991 // Init("namespace", 1)
992 // w := GetRNibReader()
993 // cell, err := w.GetCellById(entities.Cell_NR_CELL, "45d")
996 // } else if cell != nil{
997 // fmt.Printf("responding node type NR Cell: %v\n", cell.GetServedNrCell())