diff --git a/Makefile b/Makefile index 3b0361a..31d0ab3 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ test: @echo Integration tests docker-compose up --build --exit-code-from=rove-tests --abort-on-container-exit rove-tests + docker-compose down go tool cover -html=/tmp/coverage-data/c.out -o /tmp/coverage.html @echo Done, coverage data can be found in /tmp/coverage.html diff --git a/cmd/rove-reverse-proxy/http_test.go b/cmd/rove-reverse-proxy/http_test.go index e8d64c3..4f6b5ce 100644 --- a/cmd/rove-reverse-proxy/http_test.go +++ b/cmd/rove-reverse-proxy/http_test.go @@ -7,42 +7,23 @@ import ( "encoding/json" "fmt" "io/ioutil" + "log" "net/http" "net/url" "os" "testing" + + "github.com/mdiluz/rove/pkg/rove" ) // Server is a simple wrapper to a server path type Server string -// Get performs a Get request -func (s Server) Get(path string, out interface{}) error { +// Request performs a HTTP +func (s Server) Request(method, path string, in, out interface{}) error { u := url.URL{ Scheme: "http", - Host: string(s), - Path: path, - } - if resp, err := http.Get(u.String()); err != nil { - return err - - } else if resp.StatusCode != http.StatusOK { - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return fmt.Errorf("failed to read response body to code %d", resp.StatusCode) - } - return fmt.Errorf("http returned status %d: %s", resp.StatusCode, string(body)) - - } else { - return json.NewDecoder(resp.Body).Decode(out) - } -} - -// Post performs a Post request -func (s Server) Post(path string, in, out interface{}) error { - u := url.URL{ - Scheme: "http", - Host: string(s), + Host: fmt.Sprintf("%s:8080", string(s)), Path: path, } client := &http.Client{} @@ -54,7 +35,7 @@ func (s Server) Post(path string, in, out interface{}) error { } // Set up the request - req, err := http.NewRequest("POST", u.String(), bytes.NewReader(marshalled)) + req, err := http.NewRequest(method, u.String(), bytes.NewReader(marshalled)) if err != nil { return err } @@ -76,9 +57,14 @@ func (s Server) Post(path string, in, out interface{}) error { } } -var serv = Server(os.Getenv("ROVE_GRPC")) +var serv = Server(os.Getenv("ROVE_HTTP")) func TestServer_Status(t *testing.T) { + req := &rove.StatusRequest{} + resp := &rove.StatusResponse{} + if err := serv.Request("GET", "status", req, resp); err != nil { + log.Fatal(err) + } } func TestServer_Register(t *testing.T) { diff --git a/docker-compose.yml b/docker-compose.yml index bacbfd4..3c45612 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,18 +18,6 @@ services: - persistent-data:/mnt/rove-server:rw command: [ ./rove-accountant ] - rove-reverse-proxy: - build: - context: . - dockerfile: Dockerfile - image: rove:latest - ports: - - "8080:8080" - environment: - - PORT=8080 - - ROVE_GRPC=rove-server:9090 - command: [ ./rove-reverse-proxy ] - rove-docs: build: context: . @@ -41,7 +29,7 @@ services: - PORT=80 rove-server: - depends_on: [ rove-accountant, rove-reverse-proxy, rove-docs] + depends_on: [ rove-accountant ] build: context: . dockerfile: Dockerfile @@ -54,17 +42,32 @@ services: - ROVE_ACCOUNTANT_GRPC=rove-accountant:9091 volumes: - persistent-data:/mnt/rove-server:rw + command: [ "./script/wait-for-it.sh", "rove-accountant:9091", "--", "./rove-server"] + + rove: + depends_on: [ rove-server, rove-docs ] + build: + context: . + dockerfile: Dockerfile + image: rove:latest + ports: + - "8080:8080" + environment: + - PORT=8080 + - ROVE_GRPC=rove-server:9090 + command: [ "./script/wait-for-it.sh", "rove-server:9090", "--", "./rove-reverse-proxy" ] rove-tests: - depends_on: [ rove-server ] + depends_on: [ rove ] build: context: . dockerfile: Dockerfile image: rove:latest environment: - ROVE_ACCOUNTANT_GRPC=rove-accountant:9091 + - ROVE_HTTP=rove - ROVE_GRPC=rove-server - command: [ "go", "test", "-v", "./...", "--tags=integration", "-cover", "-coverprofile=/mnt/coverage-data/c.out", "-count", "1" ] + command: [ "./script/wait-for-it.sh", "rove:8080", "--", "go", "test", "-v", "./...", "--tags=integration", "-cover", "-coverprofile=/mnt/coverage-data/c.out", "-count", "1" ] volumes: - /tmp/coverage-data:/mnt/coverage-data:rw