56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package prometheus
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/influxdata/telegraf/testutil"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
const sampleTextFormat = `# HELP go_gc_duration_seconds A summary of the GC invocation durations.
|
|
# TYPE go_gc_duration_seconds summary
|
|
go_gc_duration_seconds{quantile="0"} 0.00010425500000000001
|
|
go_gc_duration_seconds{quantile="0.25"} 0.000139108
|
|
go_gc_duration_seconds{quantile="0.5"} 0.00015749400000000002
|
|
go_gc_duration_seconds{quantile="0.75"} 0.000331463
|
|
go_gc_duration_seconds{quantile="1"} 0.000667154
|
|
go_gc_duration_seconds_sum 0.0018183950000000002
|
|
go_gc_duration_seconds_count 7
|
|
# HELP go_goroutines Number of goroutines that currently exist.
|
|
# TYPE go_goroutines gauge
|
|
go_goroutines 15
|
|
`
|
|
|
|
func TestPrometheusGeneratesMetrics(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintln(w, sampleTextFormat)
|
|
}))
|
|
defer ts.Close()
|
|
|
|
p := &Prometheus{
|
|
Urls: []string{ts.URL},
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
|
|
err := p.Gather(&acc)
|
|
require.NoError(t, err)
|
|
|
|
expected := []struct {
|
|
name string
|
|
value float64
|
|
tags map[string]string
|
|
}{
|
|
{"prometheus_go_gc_duration_seconds_count", 7, map[string]string{}},
|
|
{"prometheus_go_goroutines", 15, map[string]string{}},
|
|
}
|
|
|
|
for _, e := range expected {
|
|
assert.True(t, acc.HasFloatField(e.name, "value"))
|
|
}
|
|
}
|