Skip to content

Commit beae25a

Browse files
committed
Allow passing trace/metric SDK options to componenttest.Telemetry
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent c6a0986 commit beae25a

File tree

13 files changed

+85
-24
lines changed

13 files changed

+85
-24
lines changed

.chloggen/main.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: breaking
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: cmd/mdatagen
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Allow passing OTel Metric SDK options to the generated `SetupTelemetry` function.
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [12160]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# Optional: The change log or logs in which this entry should be included.
21+
# e.g. '[user]' or '[user, api]'
22+
# Include 'user' if the change is relevant to end users.
23+
# Include 'api' if there is a change to a library API.
24+
# Default: '[user]'
25+
change_logs: [api]

cmd/mdatagen/internal/samplereceiver/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/internal/templates/telemetrytest.go.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ type Telemetry struct {
2424
componenttest.Telemetry
2525
}
2626

27-
func SetupTelemetry() Telemetry {
28-
return Telemetry{ Telemetry: componenttest.NewTelemetry() }
27+
func SetupTelemetry(opts ...componenttest.TelemetryOption) Telemetry {
28+
return Telemetry{ Telemetry: componenttest.NewTelemetry(opts...) }
2929
}
3030

3131
{{- if or isConnector isExporter isExtension isProcessor isReceiver isScraper }}

component/componenttest/obsreporttest.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ package componenttest // import "go.opentelemetry.io/collector/component/compone
55

66
import (
77
"go.opentelemetry.io/otel/attribute"
8+
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
9+
"go.opentelemetry.io/otel/sdk/resource"
10+
sdktrace "go.opentelemetry.io/otel/sdk/trace"
811

912
"go.opentelemetry.io/collector/component"
1013
)
@@ -90,7 +93,9 @@ func (tts *TestTelemetry) TelemetrySettings() component.TelemetrySettings {
9093
// The caller must defer a call to `Shutdown` on the returned TestTelemetry.
9194
func SetupTelemetry(id component.ID) (TestTelemetry, error) {
9295
return TestTelemetry{
93-
Telemetry: NewTelemetry(),
94-
id: id,
96+
Telemetry: NewTelemetry(
97+
WithMetricOptions(sdkmetric.WithResource(resource.Empty())),
98+
WithTraceOptions(sdktrace.WithResource(resource.Empty()))),
99+
id: id,
95100
}, nil
96101
}

component/componenttest/telemetry.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,60 @@ import (
88
"errors"
99

1010
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
11-
"go.opentelemetry.io/otel/sdk/resource"
1211
sdktrace "go.opentelemetry.io/otel/sdk/trace"
1312
"go.opentelemetry.io/otel/sdk/trace/tracetest"
1413

1514
"go.opentelemetry.io/collector/component"
1615
"go.opentelemetry.io/collector/config/configtelemetry"
1716
)
1817

18+
type TelemetryOption interface {
19+
apply(*telemetryOption)
20+
}
21+
22+
type telemetryOption struct {
23+
metricOpts []sdkmetric.Option
24+
traceOpts []sdktrace.TracerProviderOption
25+
}
26+
27+
type telemetryOptionFunc func(*telemetryOption)
28+
29+
func (f telemetryOptionFunc) apply(o *telemetryOption) { f(o) }
30+
31+
func WithMetricOptions(opts ...sdkmetric.Option) TelemetryOption {
32+
return telemetryOptionFunc(func(to *telemetryOption) {
33+
to.metricOpts = append(to.metricOpts, opts...)
34+
})
35+
}
36+
37+
func WithTraceOptions(opts ...sdktrace.TracerProviderOption) TelemetryOption {
38+
return telemetryOptionFunc(func(to *telemetryOption) {
39+
to.traceOpts = append(to.traceOpts, opts...)
40+
})
41+
}
42+
1943
type Telemetry struct {
2044
Reader *sdkmetric.ManualReader
2145
SpanRecorder *tracetest.SpanRecorder
2246
meterProvider *sdkmetric.MeterProvider
2347
traceProvider *sdktrace.TracerProvider
2448
}
2549

26-
func NewTelemetry() Telemetry {
50+
func NewTelemetry(opts ...TelemetryOption) Telemetry {
2751
reader := sdkmetric.NewManualReader()
2852
spanRecorder := new(tracetest.SpanRecorder)
53+
tOpts := telemetryOption{
54+
metricOpts: []sdkmetric.Option{sdkmetric.WithReader(reader)},
55+
traceOpts: []sdktrace.TracerProviderOption{sdktrace.WithSpanProcessor(spanRecorder)},
56+
}
57+
for _, opt := range opts {
58+
opt.apply(&tOpts)
59+
}
2960
return Telemetry{
3061
Reader: reader,
3162
SpanRecorder: spanRecorder,
32-
meterProvider: sdkmetric.NewMeterProvider(sdkmetric.WithResource(resource.Empty()), sdkmetric.WithReader(reader)),
33-
traceProvider: sdktrace.NewTracerProvider(sdktrace.WithResource(resource.Empty()), sdktrace.WithSpanProcessor(spanRecorder)),
63+
meterProvider: sdkmetric.NewMeterProvider(tOpts.metricOpts...),
64+
traceProvider: sdktrace.NewTracerProvider(tOpts.traceOpts...),
3465
}
3566
}
3667

exporter/exporterhelper/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/batchprocessor/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/memorylimiterprocessor/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

processor/processorhelper/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/receiverhelper/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scraper/scraperhelper/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/internal/metadatatest/generated_telemetrytest.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)