From: wahidw Date: Wed, 8 Jul 2020 13:29:53 +0000 (+0530) Subject: Adding Unit Tests X-Git-Tag: 0.6.10~13 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=8f7ca65ce6b2691e08bb3496c14fae88e32ad973;p=ric-plt%2Frtmgr.git Adding Unit Tests Change-Id: Idaf703dd89c85198f2a640698a7245b9c6a8b939 Signed-off-by: wahidw --- diff --git a/build-rtmgr-ubuntu.sh b/build-rtmgr-ubuntu.sh index c822551..adb04ab 100755 --- a/build-rtmgr-ubuntu.sh +++ b/build-rtmgr-ubuntu.sh @@ -63,16 +63,16 @@ go build ./cmd/rtmgr.go export RMR_SEED_RT=/tmp/go/src/routing-manager/uta_rtg_ric.rt cd $currnewdir/pkg/sbi -go-acc . -- -f "/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.yaml" +go-acc . -- -f "/tmp/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.json" cd $currnewdir/pkg/rpe -go-acc $(go list ./...) -- -f "/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.yaml" +go-acc $(go list ./...) -- -f "/tmp/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.json" cd $currnewdir/pkg/sdl -go-acc $(go list ./...) -- -f "/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.yaml" +go-acc $(go list ./...) -- -f "/tmp/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.json" cd $currnewdir/pkg/nbi -go-acc $(go list ./...) -- -f "/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.yaml" +go-acc $(go list ./...) -- -f "/tmp/go/src/routing-manager/manifests/rtmgr/rtmgr-cfg.json" cd $currnewdir diff --git a/container-tag.yaml b/container-tag.yaml index fb1cfa5..41de17d 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -2,4 +2,4 @@ # By default this file is in the docker build directory, # but the location can configured in the JJB template. --- -tag: 0.6.3 +tag: 0.6.4 diff --git a/manifests/rtmgr/rtmgr-cfg.json b/manifests/rtmgr/rtmgr-cfg.json new file mode 100755 index 0000000..5d38df6 --- /dev/null +++ b/manifests/rtmgr/rtmgr-cfg.json @@ -0,0 +1,23 @@ +{ + "apiVersion": "v1", + "data": { + "rtmgrcfg": "{\n \"PlatformComponents\":\n [\n {\n \"name\": \"E2TERM\",\n \"fqdn\": \"e2term\",\n \"port\": 4561\n },\n {\n \"name\": \"SUBMAN\",\n \"fqdn\": \"subman\",\n \"port\": 4561\n },\n {\n \"name\": \"E2MAN\",\n \"fqdn\": \"e2man\",\n \"port\": 4561\n },\n {\n \"name\": \"UEMAN\",\n \"fqdn\": \"ueman\",\n \"port\": 4561\n }\n ]\n \"local\":\n \"host\": \":8080\"\n \"logger\":\n \"level\": 3\n \"rmr\":\n \"protPort\": \"tcp:4560\"\n \"maxSize\": 2072\n \"numWorkers\": 1\n \"RTFILE\":\n \"/db/rt.json\"\n \"NBIURL\":\n \"http://localhost:3800\"\n\n}\n" + }, + "kind": "ConfigMap", + "metadata": { + "name": "rtmgrcfg" + }, + "rtfile": "/db/rt.json", + "sdl" : "file", + "sbi": "rmrpush", + "rpe": "rmrpush", + "nbi": "httpRESTful", + "xmurl": "http://127.0.0.1:4560/ric/v1/xapps", + "e2murl": "http://127.0.0.1:3800/v1/e2t/list", + "nbiurl": "http://127.0.0.1:3800", + "subscription": { + "host": "127.0.0.1:8089" + }, + "PlatformRoutes": [ {"messagetype" : "RIC_SUB_REQ", "senderendpoint": "SUBMAN", "subscriptionid": -1, "endpoint": "", "meid": "%meid"} ] + +} diff --git a/pkg/nbi/control.go b/pkg/nbi/control.go index 5483aba..5cde1b0 100644 --- a/pkg/nbi/control.go +++ b/pkg/nbi/control.go @@ -35,6 +35,7 @@ import ( "sync" "time" "os" + "fmt" ) var m sync.Mutex @@ -76,6 +77,7 @@ func initRtmgr() (nbiEngine Engine, sbiEngine sbi.Engine, sdlEngine sdl.Engine, if sbiEngine, err = sbi.GetSbi(xapp.Config.GetString("sbi")); err == nil && sbiEngine != nil { if sdlEngine, err = sdl.GetSdl(xapp.Config.GetString("sdl")); err == nil && sdlEngine != nil { if rpeEngine, err = rpe.GetRpe(xapp.Config.GetString("rpe")); err == nil && rpeEngine != nil { + fmt.Printf("%v,%v,%v,%v",nbiEngine, sbiEngine, sdlEngine, rpeEngine) return nbiEngine, sbiEngine, sdlEngine, rpeEngine, nil } } @@ -87,6 +89,8 @@ func initRtmgr() (nbiEngine Engine, sbiEngine sbi.Engine, sdlEngine sdl.Engine, func (c *Control) controlLoop() { for { msg := <-c.rcChan + c.recievermr(msg) + /* xapp_msg := sbi.RMRParams{msg} switch msg.Mtype { case xapp.RICMessageTypes["RMRRM_REQ_TABLE"]: @@ -103,10 +107,29 @@ func (c *Control) controlLoop() { err := errors.New("Message Type " + strconv.Itoa(msg.Mtype) + " is discarded") xapp.Logger.Error("Unknown message type: %v", err) } - xapp.Rmr.Free(msg.Mbuf) + xapp.Rmr.Free(msg.Mbuf)*/ } } +func (c *Control) recievermr(msg *xapp.RMRParams) { + xapp_msg := sbi.RMRParams{msg} + switch msg.Mtype { + case xapp.RICMessageTypes["RMRRM_REQ_TABLE"]: + if rtmgr.Rtmgr_ready == false { + xapp.Logger.Info("Update Route Table Request(RMR to RM), message discarded as routing manager is not ready") + } else { + xapp.Logger.Info("Update Route Table Request(RMR to RM)") + go c.handleUpdateToRoutingManagerRequest(msg) + } + case xapp.RICMessageTypes["RMRRM_TABLE_STATE"]: + xapp.Logger.Info("state of table to route mgr %s,payload %s", xapp_msg.String(), msg.Payload) + default: + err := errors.New("Message Type " + strconv.Itoa(msg.Mtype) + " is discarded") + xapp.Logger.Error("Unknown message type: %v", err) + } + xapp.Rmr.Free(msg.Mbuf) +} + func (c *Control) handleUpdateToRoutingManagerRequest(params *xapp.RMRParams) { msg := sbi.RMRParams{params} @@ -140,10 +163,14 @@ func sendRoutesToAll() (err error) { m.Lock() data, err := sdlEngine.ReadAll(xapp.Config.GetString("rtfile")) + fmt.Printf("data = %v,%v,%v",data,sdlEngine,sbiEngine) m.Unlock() if err != nil || data == nil { return errors.New("Cannot get data from sdl interface due to: " + err.Error()) } + if sbiEngine == nil { + fmt.Printf("SBI is nil") + } sbiEngine.UpdateEndpoints(data) policies := rpeEngine.GeneratePolicies(rtmgr.Eps, data) err = sbiEngine.DistributeAll(policies) diff --git a/pkg/nbi/httprestful_test.go b/pkg/nbi/httprestful_test.go index bebc4f7..438b617 100644 --- a/pkg/nbi/httprestful_test.go +++ b/pkg/nbi/httprestful_test.go @@ -34,6 +34,7 @@ import ( "fmt" "io/ioutil" "net" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "net/http" "net/http/httptest" "os" @@ -41,10 +42,13 @@ import ( "routing-manager/pkg/rpe" "routing-manager/pkg/rtmgr" "routing-manager/pkg/sdl" + "routing-manager/pkg/sbi" "routing-manager/pkg/stub" "testing" "sync" "github.com/go-openapi/swag" + "github.com/spf13/viper" + "time" ) var BasicXAppLists = []byte(`[ @@ -71,6 +75,22 @@ 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("[]"), @@ -126,6 +146,8 @@ func TestValidateXappSubscriptionsData(t *testing.T) { //test case for provideXappSubscriptionHandleImp //datachannel := make(chan *models.XappSubscriptionData, 10) sdlEngine, _ = sdl.GetSdl("file") + sbiEngine, _ = sbi.GetSbi("rmrpush") + rpeEngine, _ = rpe.GetRpe ("rmrpush") _ = provideXappSubscriptionHandleImpl( &data1) //defer close(datachannel) @@ -459,9 +481,11 @@ func TestAddSubscriptions(t *testing.T) { 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) @@ -722,4 +746,66 @@ func TestDumpDebugdata(t *testing.T) { _,_ = 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(¶ms) +} + +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(¶ms) + params.Mtype = xapp.RICMessageTypes["RMRRM_TABLE_STATE"] + c.recievermr(¶ms) + params.Mtype = 1234 + c.recievermr(¶ms) + + rtmgr.Rtmgr_ready = true + params.Mtype = xapp.RICMessageTypes["RMRRM_REQ_TABLE"] + c.recievermr(¶ms) +} + +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) +} diff --git a/pkg/rpe/rpe.go b/pkg/rpe/rpe.go index 39c2bb1..4097ae0 100644 --- a/pkg/rpe/rpe.go +++ b/pkg/rpe/rpe.go @@ -244,6 +244,10 @@ func (r *Rpe) generatePlatformRoutes(e2TermEp []rtmgr.Endpoint, subManEp *rtmgr. xapp.Logger.Debug("rpe.generatePlatformRoutes invoked") //Platform Routes --- Subscription Routes //Subscription Manager -> E2 Termination + if rtmgr.PrsCfg == nil { + xapp.Logger.Info("No static routes configuration") + return + } for _, routes := range *rtmgr.PrsCfg { var sendEp *rtmgr.Endpoint var Ep *rtmgr.Endpoint diff --git a/pkg/sbi/sbi.go b/pkg/sbi/sbi.go index dca7278..6a878bb 100644 --- a/pkg/sbi/sbi.go +++ b/pkg/sbi/sbi.go @@ -75,7 +75,9 @@ func (s *Sbi) pruneEndpointList(sbi Engine) { sbi.DeleteEndpoint(ep) delete(rtmgr.Eps, ep.Uuid) } else { - rtmgr.Eps[ep.Uuid].Keepalive = false + if rtmgr.Eps[ep.Uuid] != nil { + rtmgr.Eps[ep.Uuid].Keepalive = false + } } } }