Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/common/net/server_test.go
4096 views
1
package net
2
3
import (
4
"fmt"
5
"net/http"
6
"strings"
7
"testing"
8
9
"github.com/gorilla/mux"
10
"github.com/grafana/agent/pkg/util"
11
"github.com/prometheus/client_golang/prometheus"
12
"github.com/stretchr/testify/require"
13
)
14
15
func TestTargetServer(t *testing.T) {
16
// dependencies
17
reg := prometheus.NewRegistry()
18
ts, err := NewTargetServer(util.TestLogger(t), "test_namespace", reg, &ServerConfig{})
19
require.NoError(t, err)
20
21
err = ts.MountAndRun(func(router *mux.Router) {
22
router.Methods("GET").Path("/hello").Handler(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
23
w.WriteHeader(http.StatusOK)
24
}))
25
})
26
require.NoError(t, err)
27
defer ts.StopAndShutdown()
28
29
// test mounted endpoint
30
req, err := http.NewRequest("GET", fmt.Sprintf("http://%s/hello", ts.HTTPListenAddr()), nil)
31
require.NoError(t, err)
32
res, err := http.DefaultClient.Do(req)
33
require.NoError(t, err)
34
require.Equal(t, 200, res.StatusCode)
35
36
// assert all metrics have the prefix applied
37
metrics, err := reg.Gather()
38
require.NoError(t, err)
39
for _, m := range metrics {
40
require.True(t, strings.HasPrefix(m.GetName(), "test_namespace"))
41
}
42
}
43
44
func TestTargetServer_NilConfig(t *testing.T) {
45
reg := prometheus.NewRegistry()
46
ts, err := NewTargetServer(util.TestLogger(t), "test_namespace", reg, nil)
47
require.NoError(t, err)
48
49
err = ts.MountAndRun(func(router *mux.Router) {})
50
require.NoError(t, err)
51
defer ts.StopAndShutdown()
52
53
require.Equal(t, "[::]:8080", ts.HTTPListenAddr())
54
require.Equal(t, "[::]:8081", ts.GRPCListenAddr())
55
}
56
57