Added simple http handler for route updates into unittests 25/2125/1
authorJuha Hyttinen <juha.hyttinen@nokia.com>
Mon, 30 Dec 2019 12:24:04 +0000 (14:24 +0200)
committerJuha Hyttinen <juha.hyttinen@nokia.com>
Mon, 30 Dec 2019 12:24:29 +0000 (14:24 +0200)
Change-Id: Ia8711a773063b5dccf24aa5a312ebd7ab6074e27
Signed-off-by: Juha Hyttinen <juha.hyttinen@nokia.com>
pkg/control/control.go
pkg/control/main_test.go
test/config-file.json

index fc45f6f..b398daa 100644 (file)
@@ -38,13 +38,12 @@ var subReqTime time.Duration = 5 * time.Second
 var SubDelReqTime time.Duration = 5 * time.Second
 
 type Control struct {
-       e2ap            *E2ap
-       registry        *Registry
-       rtmgrClient     *RtmgrClient
-       tracker         *Tracker
-       timerMap        *TimerMap
-       rmrSendMutex    sync.Mutex
-       skipRouteUpdate bool // temp solution to skip routeupdate in unittests
+       e2ap         *E2ap
+       registry     *Registry
+       rtmgrClient  *RtmgrClient
+       tracker      *Tracker
+       timerMap     *TimerMap
+       rmrSendMutex sync.Mutex
 }
 
 type RMRMeid struct {
@@ -95,11 +94,10 @@ func NewControl() *Control {
        rtmgrClient := RtmgrClient{client, handle, deleteHandle}
 
        return &Control{e2ap: new(E2ap),
-               registry:        registry,
-               rtmgrClient:     &rtmgrClient,
-               tracker:         tracker,
-               timerMap:        timerMap,
-               skipRouteUpdate: false,
+               registry:    registry,
+               rtmgrClient: &rtmgrClient,
+               tracker:     tracker,
+               timerMap:    timerMap,
        }
 }
 
@@ -188,12 +186,10 @@ func (c *Control) handleSubscriptionRequest(params *xapp.RMRParams) {
        subRouteAction := SubRouteInfo{CREATE, *srcAddr, *srcPort, newSubId}
        xapp.Logger.Info("SubReq: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
 
-       if c.skipRouteUpdate == false {
-               err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
-               if err != nil {
-                       xapp.Logger.Error("SubReq: Failed to update routing manager. Dropping this SubReq msg. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
-                       return
-               }
+       err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
+       if err != nil {
+               xapp.Logger.Error("SubReq: Failed to update routing manager. Dropping this SubReq msg. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
+               return
        }
 
        // Setting new subscription ID in the RMR header
@@ -288,13 +284,11 @@ func (c *Control) handleSubscriptionFailure(params *xapp.RMRParams) {
 
        time.Sleep(3 * time.Second)
 
-       if c.skipRouteUpdate == false {
-               xapp.Logger.Info("SubFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
-               subRouteAction := SubRouteInfo{CREATE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
-               err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
-               if err != nil {
-                       xapp.Logger.Error("SubFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
-               }
+       xapp.Logger.Info("SubFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
+       subRouteAction := SubRouteInfo{CREATE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
+       err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
+       if err != nil {
+               xapp.Logger.Error("SubFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
        }
 
        xapp.Logger.Info("SubFail: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid)
@@ -479,14 +473,12 @@ func (c *Control) handleSubscriptionDeleteResponse(params *xapp.RMRParams) (err
 
        time.Sleep(3 * time.Second)
 
-       if c.skipRouteUpdate == false {
-               xapp.Logger.Info("SubDelResp: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
-               subRouteAction := SubRouteInfo{DELETE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
-               err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
-               if err != nil {
-                       xapp.Logger.Error("SubDelResp: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
-                       return
-               }
+       xapp.Logger.Info("SubDelResp: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
+       subRouteAction := SubRouteInfo{DELETE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
+       err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
+       if err != nil {
+               xapp.Logger.Error("SubDelResp: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
+               return
        }
 
        xapp.Logger.Info("SubDelResp: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid)
@@ -536,14 +528,12 @@ func (c *Control) handleSubscriptionDeleteFailure(params *xapp.RMRParams) {
 
        time.Sleep(3 * time.Second)
 
-       if c.skipRouteUpdate == false {
-               xapp.Logger.Info("SubDelFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
-               subRouteAction := SubRouteInfo{DELETE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
-               c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
-               if err != nil {
-                       xapp.Logger.Error("SubDelFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
-                       return
-               }
+       xapp.Logger.Info("SubDelFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid)
+       subRouteAction := SubRouteInfo{DELETE, transaction.XappInstanceAddress, transaction.XappPort, payloadSeqNum}
+       c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
+       if err != nil {
+               xapp.Logger.Error("SubDelFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid)
+               return
        }
 
        xapp.Logger.Info("SubDelFail: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid)
index 3f1284c..f74339e 100644 (file)
@@ -24,6 +24,7 @@ import (
        "fmt"
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
        "io/ioutil"
+       "net/http"
        "os"
        "testing"
        "time"
@@ -130,30 +131,35 @@ func TestMain(m *testing.M) {
        //Cfg creation won't work like this as xapp-frame reads it during init.
        //
        /*
-            cfgstr:=`{
-              "local": {
-                  "host": ":8080"
-              },
-              "logger": {
-                  "level": 4
-              },
-              "rmr": {
-                 "protPort": "tcp:14560",
-                 "maxSize": 4096,
-                 "numWorkers": 1,
-                 "txMessages": ["RIC_SUB_REQ", "RIC_SUB_DEL_REQ"],
-                 "rxMessages": ["RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE", "RIC_INDICATION"]
-              },
-              "db": {
-                  "host": "localhost",
-                  "port": 6379,
-                  "namespaces": ["sdl", "rnib"]
-              }
-          }`
-
-            cfgfilename,_ := testCreateTmpFile(cfgstr)
-            defer os.Remove(cfgfilename)
-            os.Setenv("CFG_FILE", cfgfilename)
+           cfgstr:=`{
+             "local": {
+                 "host": ":8080"
+             },
+             "logger": {
+                 "level": 4
+             },
+             "rmr": {
+                "protPort": "tcp:14560",
+                "maxSize": 4096,
+                "numWorkers": 1,
+                "txMessages": ["RIC_SUB_REQ", "RIC_SUB_DEL_REQ"],
+                "rxMessages": ["RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE", "RIC_INDICATION"]
+             },
+             "db": {
+                 "host": "localhost",
+                 "port": 6379,
+                 "namespaces": ["sdl", "rnib"]
+             },
+                "rtmgr" : {
+                  "HostAddr" : "localhost",
+                  "port" : "8989",
+                  "baseUrl" : "/"
+                }
+          `
+
+          cfgfilename,_ := testCreateTmpFile(cfgstr)
+          defer os.Remove(cfgfilename)
+          os.Setenv("CFG_FILE", cfgfilename)
        */
        xapp.Logger.Info("Using cfg file %s", os.Getenv("CFG_FILE"))
 
@@ -189,7 +195,6 @@ newrt|end
 
        os.Setenv("RMR_SRC_ID", "localhost:14560")
        c := NewControl()
-       c.skipRouteUpdate = true
        xapp.SetReadyCB(mainCtrl.ReadyCB, nil)
        go xapp.RunWithParams(c, false)
        <-mainCtrl.syncChan
@@ -232,6 +237,22 @@ newrt|end
        defer os.Remove(e2termrtfilename)
        e2termConn = createNewRmrControl("e2termConn", e2termrtfilename, "15560", "RMRE2TERMSTUB")
 
+       //---------------------------------
+       //
+       //---------------------------------
+       http_handler := func(w http.ResponseWriter, r *http.Request) {
+               xapp.Logger.Info("(http handler) handling")
+               w.WriteHeader(200)
+       }
+
+       go func() {
+               http.HandleFunc("/", http_handler)
+               http.ListenAndServe("localhost:8989", nil)
+       }()
+
+       //---------------------------------
+       //
+       //---------------------------------
        code := m.Run()
        os.Exit(code)
 }
index ab0079a..1ff0070 100644 (file)
         "host": "localhost",
         "port": 6379,
         "namespaces": ["sdl", "rnib"]
+    },
+    "rtmgr" : {
+      "HostAddr" : "localhost",
+      "port" : "8989",
+      "baseUrl" : "/"
     }
 }