Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/receiver/opencensus/opencensus_test.go
4096 views
1
package opencensus_test
2
3
import (
4
"fmt"
5
"testing"
6
"time"
7
8
"github.com/grafana/agent/component/otelcol/receiver/opencensus"
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/opencensusreceiver"
13
"github.com/phayes/freeport"
14
"github.com/stretchr/testify/require"
15
)
16
17
// Test ensures that otelcol.receiver.opencensus can start successfully.
18
func Test(t *testing.T) {
19
httpAddr := getFreeAddr(t)
20
21
ctx := componenttest.TestContext(t)
22
l := util.TestLogger(t)
23
24
ctrl, err := componenttest.NewControllerFromID(l, "otelcol.receiver.opencensus")
25
require.NoError(t, err)
26
27
cfg := fmt.Sprintf(`
28
endpoint = "%s"
29
transport = "tcp"
30
31
output { /* no-op */ }
32
`, httpAddr)
33
34
var args opencensus.Arguments
35
require.NoError(t, river.Unmarshal([]byte(cfg), &args))
36
37
go func() {
38
err := ctrl.Run(ctx, args)
39
require.NoError(t, err)
40
}()
41
42
require.NoError(t, ctrl.WaitRunning(time.Second))
43
}
44
45
func TestDefaultArguments_UnmarshalRiver(t *testing.T) {
46
in := `output { /* no-op */ }`
47
48
var args opencensus.Arguments
49
require.NoError(t, river.Unmarshal([]byte(in), &args))
50
ext, err := args.Convert()
51
require.NoError(t, err)
52
otelArgs, ok := (ext).(*opencensusreceiver.Config)
53
54
require.True(t, ok)
55
56
// Check the gRPC arguments
57
require.Equal(t, opencensus.DefaultArguments.GRPC.Endpoint, otelArgs.NetAddr.Endpoint)
58
require.Equal(t, opencensus.DefaultArguments.GRPC.Transport, otelArgs.NetAddr.Transport)
59
require.Equal(t, int(opencensus.DefaultArguments.GRPC.ReadBufferSize), otelArgs.ReadBufferSize)
60
}
61
62
func TestArguments_UnmarshalRiver(t *testing.T) {
63
httpAddr := getFreeAddr(t)
64
in := fmt.Sprintf(`
65
cors_allowed_origins = ["https://*.test.com", "https://test.com"]
66
67
endpoint = "%s"
68
transport = "tcp"
69
70
output { /* no-op */ }
71
`, httpAddr)
72
73
var args opencensus.Arguments
74
require.NoError(t, river.Unmarshal([]byte(in), &args))
75
args.Convert()
76
ext, err := args.Convert()
77
require.NoError(t, err)
78
otelArgs, ok := (ext).(*opencensusreceiver.Config)
79
80
require.True(t, ok)
81
82
// Check the gRPC arguments
83
require.Equal(t, otelArgs.NetAddr.Endpoint, httpAddr)
84
require.Equal(t, otelArgs.NetAddr.Transport, "tcp")
85
86
// Check the CORS arguments
87
require.Equal(t, len(otelArgs.CorsOrigins), 2)
88
require.Equal(t, otelArgs.CorsOrigins[0], "https://*.test.com")
89
require.Equal(t, otelArgs.CorsOrigins[1], "https://test.com")
90
}
91
92
func getFreeAddr(t *testing.T) string {
93
t.Helper()
94
95
portNumber, err := freeport.GetFreePort()
96
require.NoError(t, err)
97
98
return fmt.Sprintf("localhost:%d", portNumber)
99
}
100
101