+++ /dev/null
-/*
- * Copyright (c) 2019 AT&T Intellectual Property.
- * Copyright (c) 2018-2019 Nokia.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This source code is part of the near-RT RIC (RAN Intelligent Controller)
- * platform project (RICP).
- *
- */
-
-package main
-
-import (
- "fmt"
- "net"
- "net/http"
- "net/url"
- "os"
- "sync"
- "testing"
- "time"
-
- "github.com/stretchr/testify/suite"
-)
-
-type do func(w http.ResponseWriter)
-
-type QueryXAppsConfigTestSuite struct {
- suite.Suite
- listener net.Listener
- xAppMgrFunc do
- mu sync.Mutex
-}
-
-// suite setup creates the HTTP server
-func (suite *QueryXAppsConfigTestSuite) SetupSuite() {
- os.Unsetenv("http_proxy")
- os.Unsetenv("HTTP_PROXY")
- var err error
- suite.listener, err = net.Listen("tcp", ":0")
- suite.Nil(err)
- go runXAppMgr(suite.listener, "/test_url/", suite)
-}
-
-func runXAppMgr(listener net.Listener, url string, suite *QueryXAppsConfigTestSuite) {
-
- http.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
- switch r.Method {
- case "GET":
- suite.mu.Lock()
- defer suite.mu.Unlock()
- suite.xAppMgrFunc(w)
- }
- })
-
- http.Serve(listener, nil)
-}
-
-func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigFailsWithTimeout() {
- doSleep := func(w http.ResponseWriter) {
- time.Sleep(time.Second * 2)
- }
-
- suite.mu.Lock()
- suite.xAppMgrFunc = doSleep
- suite.mu.Unlock()
-
- data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
- suite.Equal([]byte("{}"), data)
- suite.NotNil(err)
- e, ok := err.(*url.Error)
- suite.Equal(ok, true)
- suite.Equal(e.Timeout(), true)
-}
-
-func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigFailsWithAnErrorReply() {
- doReplyWithErr := func(w http.ResponseWriter) {
- http.Error(w, "405 method not allowed", http.StatusMethodNotAllowed)
- }
-
- suite.mu.Lock()
- suite.xAppMgrFunc = doReplyWithErr
- suite.mu.Unlock()
-
- data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
- suite.Equal([]byte("{}"), data)
- suite.NotNil(err)
- suite.Equal("405 Method Not Allowed", err.Error())
-}
-
-func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigOk() {
- doReply := func(w http.ResponseWriter) {
- fmt.Fprintf(w, "reply message")
- }
-
- suite.mu.Lock()
- suite.xAppMgrFunc = doReply
- suite.mu.Unlock()
-
- data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
- suite.NotNil(data)
- suite.Nil(err)
- suite.Equal(data, []byte("reply message"))
-}
-
-func TestQueryXAppsConfigTestSuite(t *testing.T) {
- suite.Run(t, new(QueryXAppsConfigTestSuite))
-}