Refactor the code
Multiple code refactorings to make the code
simpler and increase the unit testing coverage.
* Golint findings are fixed.
* Xapp query function name changed from status to
config.
The functionality is slightly changed so that
- Vespa is started only after the xapp notification
subscription is successful and the vesmgr has received
the current xapp configuration from the xapp manager.
- The vesmgr goes to the main loop after that.
Change-Id: Ie2675c0543d4e4ce0a60b92a6c06a79b9e2cb2cd
Signed-off-by: Roni Riska <roni.riska@nokia.com>
diff --git a/cmd/vesmgr/httpserver_test.go b/cmd/vesmgr/httpserver_test.go
index d52f4b2..c2946aa 100644
--- a/cmd/vesmgr/httpserver_test.go
+++ b/cmd/vesmgr/httpserver_test.go
@@ -17,42 +17,41 @@
package main
import (
- "github.com/stretchr/testify/suite"
"io/ioutil"
- "net"
"net/http"
"os"
"strings"
"testing"
+
+ "github.com/stretchr/testify/suite"
)
-type HttpServerTestSuite struct {
+type HTTPServerTestSuite struct {
suite.Suite
- listener net.Listener
- ch_notif chan []byte
- ch_supervision chan chan string
+ chNotif chan []byte
+ chSupervision chan chan string
+ server HTTPServer
}
// suite setup creates the HTTP server
-func (suite *HttpServerTestSuite) SetupSuite() {
+func (suite *HTTPServerTestSuite) SetupSuite() {
os.Unsetenv("http_proxy")
os.Unsetenv("HTTP_PROXY")
- var err error
- suite.listener, err = net.Listen("tcp", ":0")
- suite.Nil(err)
- suite.ch_notif = make(chan []byte)
- suite.ch_supervision = make(chan chan string)
- startHttpServer(suite.listener, "/vesmgr_notif/", suite.ch_notif, suite.ch_supervision)
+ suite.chNotif = make(chan []byte)
+ suite.chSupervision = make(chan chan string)
+ suite.server = HTTPServer{}
+ suite.server.init(":0")
+ suite.server.start("/vesmgr_notif/", suite.chNotif, suite.chSupervision)
}
-func (suite *HttpServerTestSuite) TestHtppServerSupervisionInvalidOperation() {
- resp, reply := suite.doPost("http://"+suite.listener.Addr().String()+SupervisionUrl, "supervision")
+func (suite *HTTPServerTestSuite) TestHtppServerSupervisionInvalidOperation() {
+ resp, reply := suite.doPost("http://"+suite.server.addr().String()+SupervisionURL, "supervision")
suite.Equal("405 method not allowed\n", reply)
suite.Equal(405, resp.StatusCode)
suite.Equal("405 Method Not Allowed", resp.Status)
}
-func (suite *HttpServerTestSuite) doGet(url string) (*http.Response, string) {
+func (suite *HTTPServerTestSuite) doGet(url string) (*http.Response, string) {
resp, err := http.Get(url)
suite.Nil(err)
@@ -62,8 +61,8 @@
return resp, string(contents)
}
-func (suite *HttpServerTestSuite) doPost(serverUrl string, msg string) (*http.Response, string) {
- resp, err := http.Post(serverUrl, "data", strings.NewReader(msg))
+func (suite *HTTPServerTestSuite) doPost(serverURL string, msg string) (*http.Response, string) {
+ resp, err := http.Post(serverURL, "data", strings.NewReader(msg))
suite.Nil(err)
defer resp.Body.Close()
@@ -72,41 +71,41 @@
return resp, string(contents)
}
-func replySupervision(ch_supervision chan chan string, reply string) {
- ch_supervision_ack := <-ch_supervision
- ch_supervision_ack <- reply
+func replySupervision(chSupervision chan chan string, reply string) {
+ chSupervisionAck := <-chSupervision
+ chSupervisionAck <- reply
}
-func (suite *HttpServerTestSuite) TestHttpServerSupervision() {
+func (suite *HTTPServerTestSuite) TestHttpServerSupervision() {
// start the "main loop" to reply to the supervision to the HTTPServer
- go replySupervision(suite.ch_supervision, "I'm just fine")
+ go replySupervision(suite.chSupervision, "I'm just fine")
- resp, reply := suite.doGet("http://" + suite.listener.Addr().String() + SupervisionUrl)
+ resp, reply := suite.doGet("http://" + suite.server.addr().String() + SupervisionURL)
suite.Equal("I'm just fine", reply)
suite.Equal(200, resp.StatusCode)
suite.Equal("200 OK", resp.Status)
}
-func (suite *HttpServerTestSuite) TestHttpServerInvalidUrl() {
- resp, reply := suite.doPost("http://"+suite.listener.Addr().String()+"/invalid_url", "foo")
+func (suite *HTTPServerTestSuite) TestHttpServerInvalidUrl() {
+ resp, reply := suite.doPost("http://"+suite.server.addr().String()+"/invalid_url", "foo")
suite.Equal("404 page not found\n", reply)
suite.Equal(404, resp.StatusCode)
suite.Equal("404 Not Found", resp.Status)
}
-func readXAppNotification(ch_notif chan []byte, ch chan []byte) {
- notification := <-ch_notif
+func readXAppNotification(chNotif chan []byte, ch chan []byte) {
+ notification := <-chNotif
ch <- notification
}
-func (suite *HttpServerTestSuite) TestHttpServerXappNotif() {
+func (suite *HTTPServerTestSuite) TestHttpServerXappNotif() {
// start the "main loop" to receive the xAppNotification message from the HTTPServer
ch := make(chan []byte)
- go readXAppNotification(suite.ch_notif, ch)
+ go readXAppNotification(suite.chNotif, ch)
- resp, reply := suite.doPost("http://"+suite.listener.Addr().String()+"/vesmgr_notif/", "test data")
+ resp, reply := suite.doPost("http://"+suite.server.addr().String()+"/vesmgr_notif/", "test data")
suite.Equal("", reply)
suite.Equal(200, resp.StatusCode)
suite.Equal("200 OK", resp.Status)
@@ -114,13 +113,13 @@
suite.Equal([]byte("test data"), notification)
}
-func (suite *HttpServerTestSuite) TestHttpServerXappNotifInvalidOperation() {
- resp, reply := suite.doGet("http://" + suite.listener.Addr().String() + "/vesmgr_notif/")
+func (suite *HTTPServerTestSuite) TestHttpServerXappNotifInvalidOperation() {
+ resp, reply := suite.doGet("http://" + suite.server.addr().String() + "/vesmgr_notif/")
suite.Equal("405 method not allowed\n", reply)
suite.Equal(405, resp.StatusCode)
suite.Equal("405 Method Not Allowed", resp.Status)
}
func TestHttpServerSuite(t *testing.T) {
- suite.Run(t, new(HttpServerTestSuite))
+ suite.Run(t, new(HTTPServerTestSuite))
}