mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package http_test
|
|
|
|
import (
|
|
"fmt"
|
|
netHTTP "net/http"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"akvorado/common/helpers"
|
|
"akvorado/common/http"
|
|
"akvorado/common/reporter"
|
|
)
|
|
|
|
func TestHandler(t *testing.T) {
|
|
r := reporter.NewMock(t)
|
|
h := http.NewMock(t, r)
|
|
defer func() {
|
|
h.Stop()
|
|
runtime.Gosched()
|
|
resp, err := netHTTP.Get(fmt.Sprintf("http://%s/", h.Address))
|
|
if err == nil {
|
|
t.Errorf("Still able to connect to expvar server after stop")
|
|
resp.Body.Close()
|
|
}
|
|
}()
|
|
|
|
h.AddHandler("/test",
|
|
netHTTP.HandlerFunc(func(w netHTTP.ResponseWriter, r *netHTTP.Request) {
|
|
fmt.Fprintf(w, "Hello !")
|
|
}))
|
|
|
|
// Check the HTTP server is running and answering metrics
|
|
resp, err := netHTTP.Get(fmt.Sprintf("http://%s/test", h.Address))
|
|
if err != nil {
|
|
t.Fatalf("GET /test:\n%+v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
if resp.StatusCode != 200 {
|
|
t.Fatalf("GET /test: got status code %d, not 200", resp.StatusCode)
|
|
}
|
|
|
|
gotMetrics := r.GetMetrics("akvorado_common_http_", "inflight_", "requests_total", "response_size")
|
|
expectedMetrics := map[string]string{
|
|
`inflight_requests`: "0",
|
|
`requests_total{code="200",handler="/test",method="get"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="+Inf"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="1000"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="1500"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="200"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="500"}`: "1",
|
|
`response_size_bytes_bucket{handler="/test",method="get",le="5000"}`: "1",
|
|
`response_size_bytes_count{handler="/test",method="get"}`: "1",
|
|
`response_size_bytes_sum{handler="/test",method="get"}`: "7",
|
|
}
|
|
if diff := helpers.Diff(gotMetrics, expectedMetrics); diff != "" {
|
|
t.Fatalf("Metrics (-got, +want):\n%s", diff)
|
|
}
|
|
}
|