Further UT improvements 40/6340/1
authorMohamed Abukar <abukar.mohamed@nokia.com>
Thu, 17 Jun 2021 05:15:08 +0000 (05:15 +0000)
committerMohamed Abukar <abukar.mohamed@nokia.com>
Thu, 17 Jun 2021 05:15:29 +0000 (05:15 +0000)
Change-Id: I0f99f3440cc40f8c0cbd86e8e1a520957de756b2
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
build/make.go.mk
pkg/xapp/restapi.go
pkg/xapp/rmr.go
pkg/xapp/subscription.go
pkg/xapp/subscription_test.go
pkg/xapp/utils_test.go
pkg/xapp/xapp.go
pkg/xapp/xapp_test.go

index fb20da3..35fc3a7 100755 (executable)
@@ -64,7 +64,7 @@ $(GO_CACHE_DIR)/%: $(GOFILES) $(GOMODFILES) $$(BUILDDEPS)
 .SECONDEXPANSION:
 $(GO_CACHE_DIR)/%_test: $(GOALLFILES) $(GOMODFILES) $$(BUILDDEPS) FORCE
        @echo "Testing:\t$*"
-       @eval GO111MODULE=on GOSUMDB=off GO_ENABLED=0 GOOS=linux $(BUILDARGS) $(GOTEST) -coverprofile $(COVEROUT) -c -o $@ ./$*
+       @eval GO111MODULE=on GOSUMDB=off GO_ENABLED=0 GOOS=linux $(BUILDARGS) $(GOTEST) -cover -coverprofile=coverage.out -c -o $@ ./$*
        @if test -e $@ ; then eval $(TESTENV) $@ -test.v -test.coverprofile $(COVEROUT); else true ; fi
        @if test -e $@ ; then go tool cover -html=$(COVEROUT) -o $(COVERHTML); else true ; fi
 
index b2ea7ad..205f5f6 100755 (executable)
@@ -104,9 +104,13 @@ func (r *Router) CheckStatus() (status bool) {
 }
 
 func (r *Router) GetSymptomDataParams(w http.ResponseWriter, req *http.Request) SymptomDataParams {
+       Logger.Info("GetSymptomDataParams ...")
+
        params := SymptomDataParams{}
        queryParams := req.URL.Query()
 
+       Logger.Info("GetSymptomDataParams: %+v", queryParams)
+
        for p := range queryParams {
                if p == "timeout" {
                        fmt.Sscanf(p, "%d", &params.Timeout)
index eeadfd9..9342828 100755 (executable)
@@ -67,10 +67,11 @@ import (
        "bytes"
        "crypto/md5"
        "fmt"
-       "github.com/spf13/viper"
        "strings"
        "time"
        "unsafe"
+
+       "github.com/spf13/viper"
 )
 
 var RMRCounterOpts = []CounterOpts{
@@ -279,19 +280,21 @@ func (m *RMRClient) parseMessage(rxBuffer *C.rmr_mbuf_t) {
                return
        }
 
-       // Special case for multiple consumers
-       for _, c := range m.consumers {
-               cptr := unsafe.Pointer(rxBuffer.payload)
-               params.Payload = C.GoBytes(cptr, C.int(rxBuffer.len))
-               params.PayloadLen = int(rxBuffer.len)
-               params.Mtype = int(rxBuffer.mtype)
-               params.SubId = int(rxBuffer.sub_id)
+       /*
+               // Special case for multiple consumers
+               for _, c := range m.consumers {
+                       cptr := unsafe.Pointer(rxBuffer.payload)
+                       params.Payload = C.GoBytes(cptr, C.int(rxBuffer.len))
+                       params.PayloadLen = int(rxBuffer.len)
+                       params.Mtype = int(rxBuffer.mtype)
+                       params.SubId = int(rxBuffer.sub_id)
 
-               err := c.Consume(params)
-               if err != nil {
-                       Logger.Warn("rmrClient: Consumer returned error: %v", err)
+                       err := c.Consume(params)
+                       if err != nil {
+                               Logger.Warn("rmrClient: Consumer returned error: %v", err)
+                       }
                }
-       }
+       */
 }
 
 func (m *RMRClient) Allocate(size int) *C.rmr_mbuf_t {
index 6a6983c..efaf0f8 100755 (executable)
@@ -23,15 +23,16 @@ import (
        "bytes"
        "encoding/json"
        "fmt"
+       "io/ioutil"
+       "net/http"
+       "os"
+       "time"
+
        "github.com/go-openapi/loads"
        httptransport "github.com/go-openapi/runtime/client"
        "github.com/go-openapi/runtime/middleware"
        "github.com/go-openapi/strfmt"
        "github.com/spf13/viper"
-       "io/ioutil"
-       "net/http"
-       "os"
-       "time"
 
        apiclient "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi"
        apicommon "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi/common"
@@ -236,32 +237,3 @@ func (r *Subscriber) QuerySubscriptions() (models.SubscriptionList, error) {
 func (r *Subscriber) CreateTransport() *apiclient.RICSubscription {
        return apiclient.New(httptransport.New(r.remoteHost, r.remoteUrl, r.remoteProt), strfmt.Default)
 }
-
-/*func (r *Subscriber) getXappConfig() (appconfig models.XappConfigList, err error) {
-
-    Logger.Error("Inside getXappConfig")
-
-               var metadata models.ConfigMetadata
-        var xappconfig models.XAppConfig
-        name := viper.GetString("name")
-        configtype := "json"
-               metadata.XappName = &name
-               metadata.ConfigType = &configtype
-
-        configFile, err := os.Open("/opt/ric/config/config-file.json")
-        if err != nil {
-                Logger.Error("Cannot open config file: %v", err)
-                return nil,errors.New("Could Not parse the config file")
-        }
-
-        body, err := ioutil.ReadAll(configFile)
-
-        defer configFile.Close()
-
-               xappconfig.Metadata = &metadata
-               xappconfig.Config = body
-
-        appconfig = append(appconfig,&xappconfig)
-
-               return appconfig,nil
-}*/
index c7b00cd..af8938c 100755 (executable)
@@ -7,7 +7,10 @@
 package xapp
 
 import (
+       "bytes"
        "fmt"
+       "net/http"
+       "net/http/httptest"
        "testing"
        "time"
 
@@ -130,7 +133,29 @@ func TestSubscriptionDeleteHandling(t *testing.T) {
        assert.Equal(t, err, nil)
 }
 
+func TestResponseHandler(t *testing.T) {
+       Subscription.SetResponseCB(SubscriptionRespHandler)
+
+       payload := []byte(`{"SubscriptionInstances":[{"tXappEventInstanceID": 1}]`)
+       req, err := http.NewRequest("POST", "/ric/v1/subscriptions/response", bytes.NewBuffer(payload))
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       handler := http.HandlerFunc(Subscription.ResponseHandler)
+       handler.ServeHTTP(rr, req)
+
+       if status := rr.Code; status != http.StatusOK {
+               t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
+       }
+       time.Sleep(time.Duration(2) * time.Second)
+}
+
 // Helper functions
+func SubscriptionRespHandler(resp *clientmodel.SubscriptionResponse) {
+}
+
 func processSubscriptions(subscriptionId string) {
        // Generate requestorId, instanceId
        xappInstanceId := int64(11)
index 358fbe2..21ae8b9 100644 (file)
@@ -20,7 +20,9 @@
 package xapp
 
 import (
+       "io/ioutil"
        "net/http"
+       "os"
        "testing"
 
        "github.com/stretchr/testify/assert"
@@ -36,58 +38,66 @@ func TestNewUtils(t *testing.T) {
        utils.FetchFiles("./", []string{"go.mod"})
        utils.FetchFiles("./", []string{"go.mod"})
 
+       tmpFile, err := ioutil.TempFile("", "symptom")
+       assert.Equal(t, err, nil)
+       defer os.Remove(tmpFile.Name())
+
+       err = utils.ZipFiles(tmpFile, "/tmp/abcd", []string{"/tmp/abcd/file.txt"})
+       assert.Equal(t, err, nil)
+
        utils.DeleteFile("/tmp/abcd")
 }
 
 func TestSymptomdata(t *testing.T) {
+       os.Setenv("RMR_STASH_RT", "config/uta_rtg.rt.stash.inc")
        assert.Equal(t, Resource.CollectDefaultSymptomData("abcd.tgz", "data"), "/tmp/xapp/")
 }
 
 func TestSymptomdataCollection(t *testing.T) {
-       var handler = func(w http.ResponseWriter, r *http.Request) {
+       var handler1 = func(w http.ResponseWriter, r *http.Request) {
                Resource.SendSymptomDataJson(w, r, "data", "aaaa")
                Resource.SendSymptomDataFile(w, r, "./config", "symptomdata.gz")
        }
 
-       Resource.InjectQueryRoute("/ric/v1/user", handler, "GET", "foo", "bar", "id", "mykey")
+       Resource.InjectQueryRoute("/ric/v1/user1", handler1, "GET", "foo", "bar", "id", "mykey")
 
-       req, _ := http.NewRequest("GET", "/ric/v1/user?foo=bar&id=mykey", nil)
+       req, _ := http.NewRequest("GET", "/ric/v1/user1?foo=bar&id=mykey", nil)
        resp := executeRequest(req, nil)
        checkResponseCode(t, http.StatusOK, resp.Code)
 }
 
 func TestSymptomdataCollectionError(t *testing.T) {
-       var handler = func(w http.ResponseWriter, r *http.Request) {
+       var handler2 = func(w http.ResponseWriter, r *http.Request) {
                Resource.SendSymptomDataError(w, r, "Error text")
        }
 
-       Resource.InjectQueryRoute("/ric/v1/user", handler, "GET", "foo", "bar", "id", "mykey")
+       Resource.InjectQueryRoute("/ric/v1/user2", handler2, "GET", "foo", "bar", "id", "mykey")
 
-       req, _ := http.NewRequest("GET", "/ric/v1/user?foo=bar&id=mykey", nil)
+       req, _ := http.NewRequest("GET", "/ric/v1/user2?foo=bar&id=mykey", nil)
        resp := executeRequest(req, nil)
-       checkResponseCode(t, http.StatusOK, resp.Code)
+       checkResponseCode(t, http.StatusInternalServerError, resp.Code)
 }
 
 func TestGetSymptomDataParams(t *testing.T) {
-       var handler = func(w http.ResponseWriter, r *http.Request) {
+       var handler3 = func(w http.ResponseWriter, r *http.Request) {
                Resource.GetSymptomDataParams(w, r)
        }
 
-       Resource.InjectQueryRoute("/ric/v1/user", handler, "GET", "foo", "bar", "id", "mykey")
+       Resource.InjectQueryRoute("/ric/v1/user3", handler3, "GET", "timeout", "10", "fromtime", "1", "totime", "2")
 
-       req, _ := http.NewRequest("GET", "/ric/v1/user?foo=bar&id=mykey", nil)
+       req, _ := http.NewRequest("GET", "/ric/v1/user3?timeout=10&fromtime=1&totime=2", nil)
        resp := executeRequest(req, nil)
        checkResponseCode(t, http.StatusOK, resp.Code)
 }
 
 func TestAppconfigHandler(t *testing.T) {
-       var handler = func(w http.ResponseWriter, r *http.Request) {
+       var handler4 = func(w http.ResponseWriter, r *http.Request) {
                appconfigHandler(w, r)
        }
 
-       Resource.InjectQueryRoute("/ric/v1/user", handler, "GET", "foo", "bar", "id", "mykey")
+       Resource.InjectQueryRoute("/ric/v1/user4", handler4, "GET", "foo", "bar", "id", "mykey")
 
-       req, _ := http.NewRequest("GET", "/ric/v1/user?foo=bar&id=mykey", nil)
+       req, _ := http.NewRequest("GET", "/ric/v1/user4?foo=bar&id=mykey", nil)
        resp := executeRequest(req, nil)
-       checkResponseCode(t, http.StatusOK, resp.Code)
+       checkResponseCode(t, http.StatusInternalServerError, resp.Code)
 }
index f778265..e8f47ef 100755 (executable)
@@ -23,7 +23,6 @@ import (
        "bytes"
        "encoding/json"
        "fmt"
-       "github.com/spf13/viper"
        "net/http"
        "os"
        "os/signal"
@@ -31,6 +30,8 @@ import (
        "sync/atomic"
        "syscall"
        "time"
+
+       "github.com/spf13/viper"
 )
 
 type ReadyCB func(interface{})
@@ -111,6 +112,8 @@ func getService(host, service string) string {
 
        svc := fmt.Sprintf(service, strings.ToUpper(appnamespace), strings.ToUpper(host))
        url := strings.Split(os.Getenv(strings.Replace(svc, "-", "_", -1)), "//")
+
+       Logger.Info("getService: %+v %+v", svc, url)
        if len(url) > 1 {
                return url[1]
        }
index 388d079..2c4c4fe 100755 (executable)
@@ -21,15 +21,16 @@ package xapp
 
 import (
        "bytes"
-       "github.com/gorilla/mux"
-       "github.com/spf13/viper"
-       "github.com/stretchr/testify/assert"
        "net/http"
        "net/http/httptest"
        "os"
        "strings"
        "testing"
        "time"
+
+       "github.com/gorilla/mux"
+       "github.com/spf13/viper"
+       "github.com/stretchr/testify/assert"
 )
 
 //var _ = func() bool {
@@ -46,6 +47,8 @@ func (m Consumer) Consume(params *RMRParams) (err error) {
 
 // Test cases
 func TestMain(m *testing.M) {
+       os.Setenv("SERVICE_RICXAPP_UEEC_HTTP_PORT", "tcp://localhost:8080")
+       os.Setenv("SERVICE_RICXAPP_UEEC_RMR_PORT", "tcp://localhost:4561")
        go RunWithParams(Consumer{}, viper.GetBool("controls.waitForSdl"))
        time.Sleep(time.Duration(5) * time.Second)
        code := m.Run()
@@ -377,6 +380,7 @@ func TestInjectStatusCb(t *testing.T) {
                return true
        }
        Resource.InjectStatusCb(f)
+       Resource.CheckStatus()
 }
 
 func TestSdlInterfaces(t *testing.T) {
@@ -442,11 +446,24 @@ func TestDeregisterXapp(t *testing.T) {
 
 func TestMisc(t *testing.T) {
        Logger.Info("CASE: TestMisc")
-
+       var cb = func() {}
        IsReady()
        SetReadyCB(func(interface{}) {}, "")
        XappReadyCb("")
-       SetShutdownCB(func() {})
+       SetShutdownCB(cb)
+       XappShutdownCb()
+       getService("ueec", SERVICE_HTTP)
+
+       Logger.SetFormat(1)
+       Logger.SetLevel(0)
+       Logger.Error("...")
+       Logger.Warn("...")
+       Logger.Info("...")
+
+       mb := Rmr.Allocate(100)
+       Rmr.ReAllocate(mb, 200)
+
+       NewMetrics("", "", Resource.router)
 }
 
 func TestTeardown(t *testing.T) {
@@ -455,6 +472,10 @@ func TestTeardown(t *testing.T) {
        Sdl.Clear()
        Sdl.IsReady()
        Sdl.GetStat()
+       Rnib.GetNodebByGlobalNbId(1, &RNIBGlobalNbId{})
+       Rnib.SaveNodeb(&RNIBNbIdentity{}, &RNIBNodebInfo{})
+       go Sdl.TestConnection()
+       time.Sleep(time.Duration(2) * time.Second)
 }
 
 // Helper functions