Taking xapp-frame v0.8.2 and the adaptation for subscription query
[ric-plt/rtmgr.git] / pkg / nbi / httprestful_test.go
index bebc4f7..aece2b0 100644 (file)
@@ -32,6 +32,10 @@ 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"
        "net/http"
@@ -40,11 +44,12 @@ import (
        "routing-manager/pkg/models"
        "routing-manager/pkg/rpe"
        "routing-manager/pkg/rtmgr"
+       "routing-manager/pkg/sbi"
        "routing-manager/pkg/sdl"
        "routing-manager/pkg/stub"
-       "testing"
        "sync"
-       "github.com/go-openapi/swag"
+       "testing"
+       "time"
 )
 
 var BasicXAppLists = []byte(`[
@@ -71,6 +76,21 @@ var SubscriptionList = []byte(`[{"SubscriptionId":11,"Meid":"Test-Gnb","Endpoint
 
 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
+}
+
+// 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)
+}
+
 func TestValidateXappCallbackData_1(t *testing.T) {
        data := models.XappCallbackData{
                XApps:   *swag.String("[]"),
@@ -84,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)
@@ -120,29 +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")
-       _ = 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)
 
 }
 
@@ -150,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"),
        }
@@ -191,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"),
@@ -244,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"),
@@ -278,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"),
@@ -296,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)
        }
 
@@ -329,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) {
@@ -401,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) {
@@ -455,13 +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")
        httpinstance := NewHttpRestful()
        err := httpinstance.Terminate()
        t.Log(err)
+       fmt.Printf("sbiEngine = %v", sbiEngine)
 
        createMockPlatformComponents()
        //ts := createMockAppmgrWithData("127.0.0.1:3000", BasicXAppLists, nil)
@@ -477,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) {
@@ -503,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 {
@@ -568,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)
 }
 
@@ -625,7 +648,6 @@ func TestHttpGetXAppsWithValidData(t *testing.T) {
        }
 }
 
-
 func TestRetrieveStartupDataTimeout(t *testing.T) {
        sdlEngine, _ := sdl.GetSdl("file")
        createMockPlatformComponents()
@@ -642,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()
 
@@ -678,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) {
@@ -688,38 +710,113 @@ 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")
+       rmrmeid.RanName = "gnb1"
+       c := Control{make(chan *xapp.RMRParams)}
+       params.Payload = []byte{1, 2, 3, 4}
+       params.Mtype = 1234
+       params.SubId = -1
+       params.Meid = &rmrmeid
+       params.Src = "sender"
+       params.PayloadLen = 4
+       c.handleUpdateToRoutingManagerRequest(&params)
+}
+
+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")
+       rmrmeid.RanName = "gnb1"
+
+       params.Payload = []byte{1, 2, 3, 4}
+       params.SubId = -1
+       params.Meid = &rmrmeid
+       params.Src = "sender"
+       params.PayloadLen = 4
+
+       c := Control{make(chan *xapp.RMRParams)}
+       params.Mtype = xapp.RICMessageTypes["RMRRM_REQ_TABLE"]
+       c.recievermr(&params)
+       params.Mtype = xapp.RICMessageTypes["RMRRM_TABLE_STATE"]
+       c.recievermr(&params)
+       params.Mtype = 1234
+       c.recievermr(&params)
+
+       rtmgr.Rtmgr_ready = true
+       params.Mtype = xapp.RICMessageTypes["RMRRM_REQ_TABLE"]
+       c.recievermr(&params)
+       time.Sleep(time.Duration(5) * time.Second)
+}
+
+func TestAddDelRmr(t *testing.T) {
+       sdlEngine, _ = sdl.GetSdl("file")
+       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)
 
+       Adddelrmrroute(routelist, false)
+}
+
+func TestPopulateSubscription(t *testing.T) {
+       var sublist xfmodel.SubscriptionList
+
+       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)
+
+}