Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/receiver/zipkin/zipkin_test.go
4096 views
1
package zipkin_test
2
3
import (
4
"fmt"
5
"testing"
6
"time"
7
8
"github.com/grafana/agent/component/otelcol/receiver/zipkin"
9
"github.com/grafana/agent/pkg/flow/componenttest"
10
"github.com/grafana/agent/pkg/river"
11
"github.com/grafana/agent/pkg/util"
12
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver"
13
"github.com/phayes/freeport"
14
"github.com/stretchr/testify/require"
15
)
16
17
func TestRun(t *testing.T) {
18
httpAddr := getFreeAddr(t)
19
20
ctx := componenttest.TestContext(t)
21
l := util.TestLogger(t)
22
23
ctrl, err := componenttest.NewControllerFromID(l, "otelcol.receiver.zipkin")
24
require.NoError(t, err)
25
26
cfg := fmt.Sprintf(`
27
endpoint = "%s"
28
29
output { /* no-op */ }
30
`, httpAddr)
31
32
var args zipkin.Arguments
33
require.NoError(t, river.Unmarshal([]byte(cfg), &args))
34
35
go func() {
36
err := ctrl.Run(ctx, args)
37
require.NoError(t, err)
38
}()
39
40
require.NoError(t, ctrl.WaitRunning(time.Second))
41
}
42
43
func TestArguments_UnmarshalRiver(t *testing.T) {
44
t.Run("grpc", func(t *testing.T) {
45
httpAddr := getFreeAddr(t)
46
in := fmt.Sprintf(`
47
endpoint = "%s"
48
cors {
49
allowed_origins = ["https://*.test.com", "https://test.com"]
50
}
51
52
parse_string_tags = true
53
54
output { /* no-op */ }
55
`, httpAddr)
56
57
var args zipkin.Arguments
58
require.NoError(t, river.Unmarshal([]byte(in), &args))
59
ext, err := args.Convert()
60
require.NoError(t, err)
61
otelArgs, ok := (ext).(*zipkinreceiver.Config)
62
63
require.True(t, ok)
64
65
// Check the arguments
66
require.Equal(t, otelArgs.HTTPServerSettings.Endpoint, httpAddr)
67
require.Equal(t, len(otelArgs.HTTPServerSettings.CORS.AllowedOrigins), 2)
68
require.Equal(t, otelArgs.HTTPServerSettings.CORS.AllowedOrigins[0], "https://*.test.com")
69
require.Equal(t, otelArgs.HTTPServerSettings.CORS.AllowedOrigins[1], "https://test.com")
70
require.Equal(t, otelArgs.ParseStringTags, true)
71
})
72
}
73
74
func getFreeAddr(t *testing.T) string {
75
t.Helper()
76
77
portNumber, err := freeport.GetFreePort()
78
require.NoError(t, err)
79
80
return fmt.Sprintf("localhost:%d", portNumber)
81
}
82
83