From: Mohamed Abukar Date: Thu, 17 Jun 2021 05:15:08 +0000 (+0000) Subject: Further UT improvements X-Git-Tag: v0.8.4~1 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=dba83dfb6f135fb2f6987e55beec8552c6a8b74e;p=ric-plt%2Fxapp-frame.git Further UT improvements Change-Id: I0f99f3440cc40f8c0cbd86e8e1a520957de756b2 Signed-off-by: Mohamed Abukar --- diff --git a/build/make.go.mk b/build/make.go.mk index fb20da3..35fc3a7 100755 --- a/build/make.go.mk +++ b/build/make.go.mk @@ -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 diff --git a/pkg/xapp/restapi.go b/pkg/xapp/restapi.go index b2ea7ad..205f5f6 100755 --- a/pkg/xapp/restapi.go +++ b/pkg/xapp/restapi.go @@ -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", ¶ms.Timeout) diff --git a/pkg/xapp/rmr.go b/pkg/xapp/rmr.go index eeadfd9..9342828 100755 --- a/pkg/xapp/rmr.go +++ b/pkg/xapp/rmr.go @@ -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 { diff --git a/pkg/xapp/subscription.go b/pkg/xapp/subscription.go index 6a6983c..efaf0f8 100755 --- a/pkg/xapp/subscription.go +++ b/pkg/xapp/subscription.go @@ -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 -}*/ diff --git a/pkg/xapp/subscription_test.go b/pkg/xapp/subscription_test.go index c7b00cd..af8938c 100755 --- a/pkg/xapp/subscription_test.go +++ b/pkg/xapp/subscription_test.go @@ -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) diff --git a/pkg/xapp/utils_test.go b/pkg/xapp/utils_test.go index 358fbe2..21ae8b9 100644 --- a/pkg/xapp/utils_test.go +++ b/pkg/xapp/utils_test.go @@ -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) } diff --git a/pkg/xapp/xapp.go b/pkg/xapp/xapp.go index f778265..e8f47ef 100755 --- a/pkg/xapp/xapp.go +++ b/pkg/xapp/xapp.go @@ -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] } diff --git a/pkg/xapp/xapp_test.go b/pkg/xapp/xapp_test.go index 388d079..2c4c4fe 100755 --- a/pkg/xapp/xapp_test.go +++ b/pkg/xapp/xapp_test.go @@ -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