X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fnbi%2Fhttprestful_test.go;h=aece2b0c67ec8c31f3f7d1d280ab8c476b35c6fe;hb=1433f4d8e1022cdc6ffd505a9b18130c66f1101d;hp=2bece664a0865bc0a26857782e161c1862bced1d;hpb=82c726627010dca2467989ec36cac6626ae9943a;p=ric-plt%2Frtmgr.git diff --git a/pkg/nbi/httprestful_test.go b/pkg/nbi/httprestful_test.go index 2bece66..aece2b0 100644 --- a/pkg/nbi/httprestful_test.go +++ b/pkg/nbi/httprestful_test.go @@ -32,23 +32,23 @@ package nbi import ( "encoding/json" "fmt" + xfmodel "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "github.com/go-openapi/swag" + "github.com/spf13/viper" "io/ioutil" "net" - "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" - xfmodel "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models" "net/http" "net/http/httptest" "os" "routing-manager/pkg/models" "routing-manager/pkg/rpe" "routing-manager/pkg/rtmgr" - "routing-manager/pkg/sdl" "routing-manager/pkg/sbi" + "routing-manager/pkg/sdl" "routing-manager/pkg/stub" - "testing" "sync" - "github.com/go-openapi/swag" - "github.com/spf13/viper" + "testing" "time" ) @@ -79,19 +79,18 @@ var InvalidSubResp = []byte(`{"Version":0, "EventType":all}`) type Consumer struct{} func (m Consumer) Consume(params *xapp.RMRParams) (err error) { - xapp.Sdl.Store("myKey", params.Payload) - return nil + xapp.Sdl.Store("myKey", params.Payload) + return nil } // Test cases func TestMain(m *testing.M) { - go xapp.RunWithParams(Consumer{}, viper.GetBool("db.waitForSdl")) - time.Sleep(time.Duration(5) * time.Second) - code := m.Run() - os.Exit(code) + go xapp.RunWithParams(Consumer{}, viper.GetBool("db.waitForSdl")) + time.Sleep(time.Duration(5) * time.Second) + code := m.Run() + os.Exit(code) } - func TestValidateXappCallbackData_1(t *testing.T) { data := models.XappCallbackData{ XApps: *swag.String("[]"), @@ -105,15 +104,15 @@ func TestValidateXappCallbackData_1(t *testing.T) { } } -func TestValidateXappCallbackDataInvalid (t *testing.T) { +func TestValidateXappCallbackDataInvalid(t *testing.T) { data := models.XappCallbackData{} err := validateXappCallbackData(&data) t.Log(err) } - func TestValidateXappSubscriptionsData(t *testing.T) { + rtmgr.RMRConnStatus = make(map[string]bool) ep := make(map[string]*rtmgr.Endpoint) ep["dummy"] = &rtmgr.Endpoint{Uuid: "10.0.0.1:0", Name: "E2TERM", XAppType: "app1", Ip: "", Port: 0, TxMessages: []string{"", ""}, RxMessages: []string{"", ""}, Socket: nil, IsReady: true, Keepalive: true} p := uint16(1234) @@ -141,31 +140,31 @@ func TestValidateXappSubscriptionsData(t *testing.T) { /*err = validateE2tData(&data2)*/ //e2tchannel := make(chan *models.E2tData, 10) - _ = createNewE2tHandleHandlerImpl(&data2) + _ = CreateNewE2tHandleHandlerImpl(&data2) //defer close(e2tchannel) //test case for provideXappSubscriptionHandleImp //datachannel := make(chan *models.XappSubscriptionData, 10) sdlEngine, _ = sdl.GetSdl("file") - sbiEngine, _ = sbi.GetSbi("rmrpush") - rpeEngine, _ = rpe.GetRpe ("rmrpush") - _ = provideXappSubscriptionHandleImpl( &data1) + sbiEngine, _ = sbi.GetSbi("rmrpush") + rpeEngine, _ = rpe.GetRpe("rmrpush") + _ = ProvideXappSubscriptionHandleImpl(&data1) //defer close(datachannel) //test case for deleteXappSubscriptionHandleImpl - _ = deleteXappSubscriptionHandleImpl(&data1) + _ = DeleteXappSubscriptionHandleImpl(&data1) data3 := models.XappSubscriptionData{ Address: swag.String("10.55.55.5"), Port: &p, SubscriptionID: swag.Int32(123456)} //test case for deleteXappSubscriptionHandleImpl - _ = deleteXappSubscriptionHandleImpl(&data3) + _ = DeleteXappSubscriptionHandleImpl(&data3) data4 := models.XappSubscriptionData{ Address: swag.String("1.5.5.5"), Port: &p, SubscriptionID: swag.Int32(1236)} - _ = deleteXappSubscriptionHandleImpl(&data4) + _ = DeleteXappSubscriptionHandleImpl(&data4) } @@ -173,40 +172,43 @@ func TestValidateE2tDataEmpty(t *testing.T) { data := models.E2tData{ E2TAddress: swag.String(""), } - err := validateE2tData(&data) + err, _ := validateE2tData(&data) t.Log(err) } func TestValidateE2tDataDNSLookUPfails(t *testing.T) { + rtmgr.RMRConnStatus = make(map[string]bool) data := models.E2tData{ E2TAddress: swag.String("e2t.1com:1234"), } - err := validateE2tData(&data) + err, _ := validateE2tData(&data) t.Log(err) } func TestValidateE2tDataInvalid(t *testing.T) { + rtmgr.RMRConnStatus = make(map[string]bool) data := models.E2tData{ E2TAddress: swag.String("10.101.01.1"), } - err := validateE2tData(&data) + err, _ := validateE2tData(&data) t.Log(err) } func TestValidateE2tDatavalid(t *testing.T) { + rtmgr.RMRConnStatus = make(map[string]bool) data := models.E2tData{ E2TAddress: swag.String("10.101.01.1:8098"), } - - err := validateE2tData(&data) + err, _ := validateE2tData(&data) t.Log(err) - _ = createNewE2tHandleHandlerImpl(&data) + _ = CreateNewE2tHandleHandlerImpl(&data) } func TestValidateE2tDatavalidEndpointPresent(t *testing.T) { + rtmgr.RMRConnStatus = make(map[string]bool) data := models.E2tData{ E2TAddress: swag.String("10.101.01.1:8098"), } @@ -214,50 +216,49 @@ func TestValidateE2tDatavalidEndpointPresent(t *testing.T) { // insert endpoint for testing purpose uuid := "10.101.01.1:8098" ep := &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep - err := validateE2tData(&data) + err, _ := validateE2tData(&data) t.Log(err) - // delete endpoint for at end of test case - delete(rtmgr.Eps, uuid); + // delete endpoint for at end of test case + delete(rtmgr.Eps, uuid) } - func TestValidateDeleteE2tData(t *testing.T) { -// test-1 + rtmgr.RMRConnStatus = make(map[string]bool) + // test-1 data := models.E2tDeleteData{ E2TAddress: swag.String(""), } err := validateDeleteE2tData(&data) - if (err.Error() != "E2TAddress is empty!!!") { + if err.Error() != "E2TAddress is empty!!!" { t.Log(err) } - -// test-2 + // test-2 data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01.1:8098"), } err = validateDeleteE2tData(&data) - if (err != nil ) { + if err != nil { t.Log(err) } -// test-3 -//################ Create End Point dummy entry + // test-3 + //################ Create End Point dummy entry uuid := "10.101.01.1:8098" ep := &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep -//##################### + //##################### data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01.1:8098"), @@ -267,30 +268,30 @@ func TestValidateDeleteE2tData(t *testing.T) { } err = validateDeleteE2tData(&data) - if (err != nil ) { + if err != nil { t.Log(err) } - // delete endpoint for at end of test case -//################ Delete End Point dummy entry - delete(rtmgr.Eps, uuid); -//##################### + // delete endpoint for at end of test case + //################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid) + //##################### -// test-4 + // test-4 -//################ Create End Point dummy entry + //################ Create End Point dummy entry uuid = "10.101.01.1:9991" ep = &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep uuid = "10.101.01.1:9992" ep = &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep -//##################### + //##################### data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01:8098"), @@ -301,15 +302,15 @@ func TestValidateDeleteE2tData(t *testing.T) { } err = validateDeleteE2tData(&data) - if (err != nil ) { + if err != nil { t.Log(err) } -//################ Delete End Point dummy entry - delete(rtmgr.Eps, "10.101.01.1:9991") - delete(rtmgr.Eps, "10.101.01.1:9992") -//##################### + //################ Delete End Point dummy entry + delete(rtmgr.Eps, "10.101.01.1:9991") + delete(rtmgr.Eps, "10.101.01.1:9992") + //##################### -// test-5 + // test-5 data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01:8098"), @@ -319,31 +320,30 @@ func TestValidateDeleteE2tData(t *testing.T) { } err = validateDeleteE2tData(&data) - if ( err.Error() != "E2T Delete - RanAssocList E2TAddress is not a proper format like ip:port, 10.101.01.19991") { + if err.Error() != "E2T Delete - RanAssocList E2TAddress is not a proper format like ip:port, 10.101.01.19991" { t.Log(err) } } - func TestValidateE2TAddressRANListData(t *testing.T) { data := models.RanE2tMap{ - { - E2TAddress: swag.String(""), - }, + { + E2TAddress: swag.String(""), + }, } err := validateE2TAddressRANListData(data) - if (err != nil ) { + if err != nil { t.Log(err) } data = models.RanE2tMap{ - { - E2TAddress: swag.String("10.101.01.1:8098"), - }, + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, } err = validateE2TAddressRANListData(data) - if (err != nil ) { + if err != nil { t.Log(err) } @@ -352,71 +352,70 @@ func TestValidateE2TAddressRANListData(t *testing.T) { func TestAssociateRanToE2THandlerImpl(t *testing.T) { data := models.RanE2tMap{ - { - E2TAddress: swag.String("10.101.01.1:8098"), - }, + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, } - err := associateRanToE2THandlerImpl( data) - if (err != nil ) { + err := AssociateRanToE2THandlerImpl(data) + if err != nil { t.Log(err) } -//################ Create End Point dummy entry + //################ Create End Point dummy entry uuid := "10.101.01.1:8098" ep := &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep -//##################### + //##################### data = models.RanE2tMap{ - { - E2TAddress: swag.String("10.101.01.1:8098"), - }, + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, } - err = associateRanToE2THandlerImpl(data) - if (err != nil ) { + err = AssociateRanToE2THandlerImpl(data) + if err != nil { t.Log(err) } -//################ Delete End Point dummy entry - delete(rtmgr.Eps, uuid); -//##################### + //################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid) + //##################### } func TestDisassociateRanToE2THandlerImpl(t *testing.T) { - data := models.RanE2tMap{ - { - E2TAddress: swag.String("10.101.01.1:8098"), - }, + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, } - err := disassociateRanToE2THandlerImpl(data) - if (err != nil ) { + err := DisassociateRanToE2THandlerImpl(data) + if err != nil { t.Log(err) } -//################ Create End Point dummy entry + //################ Create End Point dummy entry uuid := "10.101.01.1:8098" ep := &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep -//##################### + //##################### data = models.RanE2tMap{ - { - E2TAddress: swag.String("10.101.01.1:8098"), - }, + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, } - err = disassociateRanToE2THandlerImpl(data) - if (err != nil ) { + err = DisassociateRanToE2THandlerImpl(data) + if err != nil { t.Log(err) } -//################ Delete End Point dummy entry - delete(rtmgr.Eps, uuid); -//##################### + //################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid) + //##################### } func TestDeleteE2tHandleHandlerImpl(t *testing.T) { @@ -424,29 +423,29 @@ func TestDeleteE2tHandleHandlerImpl(t *testing.T) { data := models.E2tDeleteData{ E2TAddress: swag.String(""), } - err := deleteE2tHandleHandlerImpl(&data) - if (err != nil ) { + err := DeleteE2tHandleHandlerImpl(&data) + if err != nil { t.Log(err) } -//################ Create End Point dummy entry + //################ Create End Point dummy entry uuid := "10.101.01.1:8098" ep := &rtmgr.Endpoint{ - Uuid: uuid, + Uuid: uuid, } rtmgr.Eps[uuid] = ep -//##################### + //##################### data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01.1:8098"), } - err = deleteE2tHandleHandlerImpl(&data) - if (err != nil ) { + err = DeleteE2tHandleHandlerImpl(&data) + if err != nil { t.Log(err) } -//################ Delete End Point dummy entry - delete(rtmgr.Eps, uuid); -//##################### + //################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid) + //##################### } func TestSubscriptionExists(t *testing.T) { @@ -478,15 +477,14 @@ func TestAddSubscriptions(t *testing.T) { t.Log(yes_no) } - func TestHttpInstance(t *testing.T) { sdlEngine, _ := sdl.GetSdl("file") rpeEngine, _ := rpe.GetRpe("rmrpush") - sbiEngine,_ := sbi.GetSbi("rmrpush") + sbiEngine, _ := sbi.GetSbi("rmrpush") httpinstance := NewHttpRestful() err := httpinstance.Terminate() t.Log(err) - fmt.Printf("sbiEngine = %v",sbiEngine) + fmt.Printf("sbiEngine = %v", sbiEngine) createMockPlatformComponents() //ts := createMockAppmgrWithData("127.0.0.1:3000", BasicXAppLists, nil) @@ -502,24 +500,24 @@ func TestXappCallbackWithData(t *testing.T) { Version: *swag.Int64(1), Event: *swag.String("someevent"), ID: *swag.String("123456")} - _, _ = recvXappCallbackData(&data) + _, _ = recvXappCallbackData(&data) } func TestXappCallbackNodata(t *testing.T) { //data := *models.XappCallbackData - _, _ = recvXappCallbackData(nil) + _, _ = recvXappCallbackData(nil) } func TestE2TwithData(t *testing.T) { - data2 := models.E2tData{ - E2TAddress: swag.String("1.2.3.4"), - RanNamelist: []string{"ran1","ran2"}, - } - _, _,_ = recvNewE2Tdata(&data2) + data2 := models.E2tData{ + E2TAddress: swag.String("1.2.3.4"), + RanNamelist: []string{"ran1", "ran2"}, + } + _, _, _ = recvNewE2Tdata(&data2) } func TestE2TwithNoData(t *testing.T) { - _, _,_ = recvNewE2Tdata(nil) + _, _, _ = recvNewE2Tdata(nil) } func TestProvideXappSubscriptionHandleImpl(t *testing.T) { @@ -528,7 +526,7 @@ func TestProvideXappSubscriptionHandleImpl(t *testing.T) { Address: swag.String("10.0.0.0"), Port: &p, SubscriptionID: swag.Int32(1234)} - _ = provideXappSubscriptionHandleImpl(&data) + _ = ProvideXappSubscriptionHandleImpl(&data) } func createMockAppmgrWithData(url string, g []byte, p []byte, t []byte) *httptest.Server { @@ -593,11 +591,11 @@ func TestProvideXappHandleHandlerImpl(t *testing.T) { Version: *swag.Int64(1), Event: *swag.String("someevent"), ID: *swag.String("123456")} - err := provideXappHandleHandlerImpl( &data) + err := ProvideXappHandleHandlerImpl(&data) //Empty XappCallbackdata data1 := models.XappCallbackData{} - err = provideXappHandleHandlerImpl(&data1) + err = ProvideXappHandleHandlerImpl(&data1) t.Log(err) } @@ -650,7 +648,6 @@ func TestHttpGetXAppsWithValidData(t *testing.T) { } } - func TestRetrieveStartupDataTimeout(t *testing.T) { sdlEngine, _ := sdl.GetSdl("file") createMockPlatformComponents() @@ -667,7 +664,7 @@ func TestRetrieveStartupData(t *testing.T) { ts.Start() defer ts.Close() - ts1 := createMockAppmgrWithData("127.0.0.1:8080", nil, nil, E2TListResp) + ts1 := createMockAppmgrWithData("127.0.0.1:8085", nil, nil, E2TListResp) ts1.Start() defer ts1.Close() @@ -703,8 +700,8 @@ func TestRetrieveStartupDataWithInvalidSubResp(t *testing.T) { } func TestInvalidarguments(t *testing.T) { - _ = PostSubReq("\n","nbifinterface") - _ = PostSubReq("xmurl","\n") + _ = PostSubReq("\n", "nbifinterface") + _ = PostSubReq("xmurl", "\n") } func TestInitEngine(t *testing.T) { @@ -713,49 +710,47 @@ func TestInitEngine(t *testing.T) { func TestUpdateXappSubscription(t *testing.T) { ep := make(map[string]*rtmgr.Endpoint) - ep["dummy"] = &rtmgr.Endpoint{Uuid: "10.0.0.1:0", Name: "E2TERM", XAppType: "app1", Ip: "10.1.1.1", Port: 1234, TxMessages: []string{"", ""}, RxMessages: []string{"", ""}, Socket: nil, IsReady: true, Keepalive: true} - - rtmgr.Eps = ep + ep["dummy"] = &rtmgr.Endpoint{Uuid: "10.0.0.1:0", Name: "E2TERM", XAppType: "app1", Ip: "10.1.1.1", Port: 1234, TxMessages: []string{"", ""}, RxMessages: []string{"", ""}, Socket: nil, IsReady: true, Keepalive: true} + rtmgr.Eps = ep p := uint16(1234) xapp := models.XappElement{ - Address: swag.String("10.1.1.1"), - Port: &p, + Address: swag.String("10.1.1.1"), + Port: &p, } var b models.XappList - b = append(b,&xapp) - _ = updateXappSubscriptionHandleImpl(&b, 10) + b = append(b, &xapp) + _ = UpdateXappSubscriptionHandleImpl(&b, 10) //Test case when subscriptions already exist - data := models.XappSubscriptionData{ - Address: swag.String("10.0.0.0"), - Port: &p, - SubscriptionID: swag.Int32(12345)} - - rtmgr.Subs = *stub.ValidSubscriptions + data := models.XappSubscriptionData{ + Address: swag.String("10.0.0.0"), + Port: &p, + SubscriptionID: swag.Int32(12345)} - subscriptionExists(&data) - addSubscription(&rtmgr.Subs, &data) - _ = updateXappSubscriptionHandleImpl(&b, 10) + rtmgr.Subs = *stub.ValidSubscriptions + subscriptionExists(&data) + addSubscription(&rtmgr.Subs, &data) + _ = UpdateXappSubscriptionHandleImpl(&b, 10) } func TestDumpDebugdata(t *testing.T) { - _,_ = dumpDebugData() + _, _ = DumpDebugData() } func TestManagerRequest(t *testing.T) { var params xapp.RMRParams var rmrmeid xapp.RMRMeid sdlEngine, _ = sdl.GetSdl("file") - sbiEngine, _ = sbi.GetSbi("rmrpush") - rpeEngine, _ = rpe.GetRpe ("rmrpush") + sbiEngine, _ = sbi.GetSbi("rmrpush") + rpeEngine, _ = rpe.GetRpe("rmrpush") rmrmeid.RanName = "gnb1" c := Control{make(chan *xapp.RMRParams)} - params.Payload = []byte{1, 2,3,4} + params.Payload = []byte{1, 2, 3, 4} params.Mtype = 1234 params.SubId = -1 params.Meid = &rmrmeid @@ -768,11 +763,11 @@ func TestRecievermr(t *testing.T) { var params xapp.RMRParams var rmrmeid xapp.RMRMeid sdlEngine, _ = sdl.GetSdl("file") - sbiEngine, _ = sbi.GetSbi("rmrpush") - rpeEngine, _ = rpe.GetRpe ("rmrpush") + sbiEngine, _ = sbi.GetSbi("rmrpush") + rpeEngine, _ = rpe.GetRpe("rmrpush") rmrmeid.RanName = "gnb1" - params.Payload = []byte{1, 2,3,4} + params.Payload = []byte{1, 2, 3, 4} params.SubId = -1 params.Meid = &rmrmeid params.Src = "sender" @@ -789,37 +784,38 @@ func TestRecievermr(t *testing.T) { rtmgr.Rtmgr_ready = true params.Mtype = xapp.RICMessageTypes["RMRRM_REQ_TABLE"] c.recievermr(¶ms) + time.Sleep(time.Duration(5) * time.Second) } func TestAddDelRmr(t *testing.T) { sdlEngine, _ = sdl.GetSdl("file") - sbiEngine, _ = sbi.GetSbi("rmrpush") - rpeEngine, _ = rpe.GetRpe ("rmrpush") + sbiEngine, _ = sbi.GetSbi("rmrpush") + rpeEngine, _ = rpe.GetRpe("rmrpush") var routelist models.Routelist mtype := uint32(1234) tendpoint := "goofle.com" - listofroutes := models.AddRmrRoute { SubscriptionID: 0, SenderEndPoint: "nokia.com", MessageType: &mtype, TargetEndPoint: &tendpoint} - listofroutes2 := models.AddRmrRoute { SubscriptionID: 1, SenderEndPoint: "", MessageType: &mtype, TargetEndPoint: &tendpoint} - listofroutes3 := models.AddRmrRoute { MessageType: &mtype, TargetEndPoint: &tendpoint} - adddelrmrroute(routelist,false) - routelist = append(routelist,&listofroutes) - routelist = append(routelist,&listofroutes2) - routelist = append(routelist,&listofroutes3) - routelist = append(routelist,&listofroutes3) - adddelrmrroute(routelist,true) + listofroutes := models.AddRmrRoute{SubscriptionID: 0, SenderEndPoint: "nokia.com", MessageType: &mtype, TargetEndPoint: &tendpoint} + listofroutes2 := models.AddRmrRoute{SubscriptionID: 1, SenderEndPoint: "", MessageType: &mtype, TargetEndPoint: &tendpoint} + listofroutes3 := models.AddRmrRoute{MessageType: &mtype, TargetEndPoint: &tendpoint} + Adddelrmrroute(routelist, false) + routelist = append(routelist, &listofroutes) + routelist = append(routelist, &listofroutes2) + routelist = append(routelist, &listofroutes3) + routelist = append(routelist, &listofroutes3) + Adddelrmrroute(routelist, true) - adddelrmrroute(routelist,false) + Adddelrmrroute(routelist, false) } func TestPopulateSubscription(t *testing.T) { var sublist xfmodel.SubscriptionList - subdata := xfmodel.SubscriptionData { Endpoint: []string{"xapp1.com:3800"}, SubscriptionID: -1, Meid: "" } - subdata2 := xfmodel.SubscriptionData { Endpoint: []string{"xapp2.com:3800"}, SubscriptionID: 11, Meid: "" } - subdata3 := xfmodel.SubscriptionData { Endpoint: []string{"xapp3.com:3800"}, SubscriptionID: 221, Meid: "" } - sublist = append(sublist,&subdata) - sublist = append(sublist,&subdata2) - sublist = append(sublist,&subdata3) + subdata := xfmodel.SubscriptionData{ClientEndpoint: []string{"xapp1.com:3800"}, SubscriptionID: -1, Meid: ""} + subdata2 := xfmodel.SubscriptionData{ClientEndpoint: []string{"xapp2.com:3800"}, SubscriptionID: 11, Meid: ""} + subdata3 := xfmodel.SubscriptionData{ClientEndpoint: []string{"xapp3.com:3800"}, SubscriptionID: 221, Meid: ""} + sublist = append(sublist, &subdata) + sublist = append(sublist, &subdata2) + sublist = append(sublist, &subdata3) PopulateSubscription(sublist)