Skip to content

Commit

Permalink
Merge branch 'main' into sili-bytes-based-batching-logs-2
Browse files Browse the repository at this point in the history
  • Loading branch information
dmitryax authored Feb 26, 2025
2 parents e0b2906 + b3b28ed commit 6a063b0
Show file tree
Hide file tree
Showing 15 changed files with 158 additions and 29 deletions.
25 changes: 25 additions & 0 deletions .chloggen/configauth-omitempty.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: enhancement

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: configauth

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Add the `omitempty` mapstructure tag to struct fields

# One or more tracking issues or pull requests related to the change
issues: [12191]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext: This results in unset fields not being rendered when marshaling.

# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: [api]
9 changes: 5 additions & 4 deletions cmd/builder/internal/builder/templates/main.go.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,17 @@ func main() {
DefaultScheme: "{{ .ConfResolver.DefaultURIScheme }}",
{{- end }}
},
}, ProviderModules: map[string]string{
},
ProviderModules: map[string]string{
{{- range .ConfmapProviders}}
{{.Name}}.NewFactory().Create(confmap.ProviderSettings{}).Scheme(): "{{.GoMod}}",
{{- end}}
}, ConverterModules: []string{
{{- range .ConfmapConverters}}
},
ConverterModules: []string{
{{- range .ConfmapConverters}}
"{{.GoMod}}",
{{- end}}
},

}

if err := run(set); err != nil {
Expand Down
2 changes: 0 additions & 2 deletions cmd/mdatagen/metadata-schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,6 @@ tests:
# Optional: map of metric names with the key being the metric name and value
# being described below.
telemetry:
# Optional: level allows components to specify the minimum telemetry level for metrics to be produced. defaults to basic if not set.
level: string
metrics:
<metric.name>:
# Required: whether the metric is collected by default.
Expand Down
6 changes: 4 additions & 2 deletions cmd/otelcorecol/main.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion config/configauth/configauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ var (
// Authentication defines the auth settings for the receiver.
type Authentication struct {
// AuthenticatorID specifies the name of the extension to use in order to authenticate the incoming data point.
AuthenticatorID component.ID `mapstructure:"authenticator"`
AuthenticatorID component.ID `mapstructure:"authenticator,omitempty"`
}

// GetServerAuthenticator attempts to select the appropriate extensionauth.Server from the list of extensions,
Expand Down
4 changes: 2 additions & 2 deletions exporter/exporterbatcher/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ func (c *Config) Unmarshal(conf *confmap.Conf) error {
return err
}

if c.MinSizeItems != nil {
if c.MinSizeItems != nil && !conf.IsSet("min_size") {
c.SizeConfig.MinSize = *c.MinSizeItems
}

if c.MaxSizeItems != nil {
if c.MaxSizeItems != nil && !conf.IsSet("max_size") {
c.SizeConfig.MaxSize = *c.MaxSizeItems
}

Expand Down
71 changes: 71 additions & 0 deletions exporter/exporterbatcher/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"testing"

"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/confmap"
)

func TestValidateConfig(t *testing.T) {
Expand Down Expand Up @@ -40,3 +42,72 @@ func TestValidateSizeConfig(t *testing.T) {
}
require.EqualError(t, cfg.Validate(), "`max_size` must be greater than or equal to mix_size")
}

func TestUnmarshalDeprecatedFields(t *testing.T) {
p111 := 111
p222 := 222
tests := []struct {
name string
input map[string]any
expected Config
}{
{
name: "only_deprecated_fields_used",
input: map[string]any{
"enabled": true,
"flush_timeout": 200,
"min_size_items": 111,
"max_size_items": 222,
},
expected: Config{
Enabled: true,
FlushTimeout: 200,
SizeConfig: SizeConfig{
Sizer: SizerTypeItems,
MinSize: 111,
MaxSize: 222,
},
MinSizeConfig: MinSizeConfig{
MinSizeItems: &p111,
},
MaxSizeConfig: MaxSizeConfig{
MaxSizeItems: &p222,
},
},
},
{
name: "both_new_and_deprecated_fields_used",
input: map[string]any{
"enabled": true,
"flush_timeout": 200,
"min_size_items": 111,
"max_size_items": 222,
"min_size": 11,
"max_size": 22,
},
expected: Config{
Enabled: true,
FlushTimeout: 200,
SizeConfig: SizeConfig{
Sizer: SizerTypeItems,
MinSize: 11,
MaxSize: 22,
},
MinSizeConfig: MinSizeConfig{
MinSizeItems: &p111,
},
MaxSizeConfig: MaxSizeConfig{
MaxSizeItems: &p222,
},
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
cfg := NewDefaultConfig()
require.NoError(t, cfg.Unmarshal(confmap.NewFromStringMap(test.input)))
require.Equal(t, test.expected, cfg)
require.NoError(t, cfg.Validate())
})
}
}
13 changes: 0 additions & 13 deletions exporter/exporterhelper/internal/base_exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@ package internal // import "go.opentelemetry.io/collector/exporter/exporterhelpe
import (
"context"
"errors"
"testing"

"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/codes"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.uber.org/multierr"
"go.uber.org/zap"

Expand Down Expand Up @@ -284,12 +280,3 @@ func WithUnmarshaler(unmarshaler exporterqueue.Unmarshaler[request.Request]) Opt
return nil
}
}

func CheckStatus(t *testing.T, sd sdktrace.ReadOnlySpan, err error) {
if err != nil {
require.Equal(t, codes.Error, sd.Status().Code, "SpanData %v", sd)
require.EqualError(t, err, sd.Status().Description, "SpanData %v", sd)
} else {
require.Equal(t, codes.Unset, sd.Status().Code, "SpanData %v", sd)
}
}
21 changes: 21 additions & 0 deletions exporter/exporterhelper/internal/oteltest/tracetest.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package oteltest // import "go.opentelemetry.io/collector/exporter/exporterhelper/internal/oteltest"

import (
"testing"

"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/codes"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

func CheckStatus(t *testing.T, sd sdktrace.ReadOnlySpan, err error) {
if err != nil {
require.Equal(t, codes.Error, sd.Status().Code)
require.EqualError(t, err, sd.Status().Description)
} else {
require.Equal(t, codes.Unset, sd.Status().Code)
}
}
3 changes: 2 additions & 1 deletion exporter/exporterhelper/logs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"go.opentelemetry.io/collector/exporter"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadatatest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/oteltest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/exporter/internal/storagetest"
Expand Down Expand Up @@ -421,7 +422,7 @@ func checkWrapSpanForLogs(t *testing.T, sr *tracetest.SpanRecorder, tracer trace
require.Equalf(t, fakeLogsParentSpanName, parentSpan.Name(), "SpanData %v", parentSpan)
for _, sd := range gotSpanData[:numRequests] {
require.Equalf(t, parentSpan.SpanContext(), sd.Parent(), "Exporter span not a child\nSpanData %v", sd)
internal.CheckStatus(t, sd, wantError)
oteltest.CheckStatus(t, sd, wantError)

sentLogRecords := int64(1)
failedToSendLogRecords := int64(0)
Expand Down
3 changes: 2 additions & 1 deletion exporter/exporterhelper/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"go.opentelemetry.io/collector/exporter"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadatatest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/oteltest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/exporter/internal/storagetest"
Expand Down Expand Up @@ -428,7 +429,7 @@ func checkWrapSpanForMetrics(t *testing.T, sr *tracetest.SpanRecorder, tracer tr
require.Equalf(t, fakeMetricsParentSpanName, parentSpan.Name(), "SpanData %v", parentSpan)
for _, sd := range gotSpanData[:numRequests] {
require.Equalf(t, parentSpan.SpanContext(), sd.Parent(), "Exporter span not a child\nSpanData %v", sd)
internal.CheckStatus(t, sd, wantError)
oteltest.CheckStatus(t, sd, wantError)

sentMetricPoints := int64(2)
failedToSendMetricPoints := int64(0)
Expand Down
3 changes: 2 additions & 1 deletion exporter/exporterhelper/traces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"go.opentelemetry.io/collector/exporter"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadatatest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/oteltest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/exporter/internal/storagetest"
Expand Down Expand Up @@ -430,7 +431,7 @@ func checkWrapSpanForTraces(t *testing.T, sr *tracetest.SpanRecorder, tracer tra

for _, sd := range gotSpanData[:numRequests] {
require.Equalf(t, parentSpan.SpanContext(), sd.Parent(), "Exporter span not a child\nSpanData %v", sd)
internal.CheckStatus(t, sd, wantError)
oteltest.CheckStatus(t, sd, wantError)

sentSpans := int64(1)
failedToSendSpans := int64(0)
Expand Down
3 changes: 2 additions & 1 deletion exporter/exporterhelper/xexporterhelper/profiles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"go.opentelemetry.io/collector/exporter"
"go.opentelemetry.io/collector/exporter/exporterhelper"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/oteltest"
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/exporter/internal/storagetest"
Expand Down Expand Up @@ -312,7 +313,7 @@ func checkWrapSpanForProfilesExporter(t *testing.T, sr *tracetest.SpanRecorder,
require.Equalf(t, fakeProfilesParentSpanName, parentSpan.Name(), "SpanData %v", parentSpan)
for _, sd := range gotSpanData[:numRequests] {
require.Equalf(t, parentSpan.SpanContext(), sd.Parent(), "Exporter span not a child\nSpanData %v", sd)
internal.CheckStatus(t, sd, wantError)
oteltest.CheckStatus(t, sd, wantError)

sentSampleRecords := int64(1)
failedToSendSampleRecords := int64(0)
Expand Down
20 changes: 20 additions & 0 deletions internal/e2e/configauth_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package e2e

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/config/configauth"
"go.opentelemetry.io/collector/confmap"
)

func TestConfmapMarshalConfigAuth(t *testing.T) {
conf := confmap.New()
require.NoError(t, conf.Marshal(configauth.Authentication{}))
assert.Equal(t, map[string]any{}, conf.ToStringMap())
}
2 changes: 1 addition & 1 deletion internal/e2e/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ require (
go.opentelemetry.io/collector/component v0.120.0
go.opentelemetry.io/collector/component/componentstatus v0.120.0
go.opentelemetry.io/collector/component/componenttest v0.120.0
go.opentelemetry.io/collector/config/configauth v0.120.0
go.opentelemetry.io/collector/config/configgrpc v0.120.0
go.opentelemetry.io/collector/config/confighttp v0.120.0
go.opentelemetry.io/collector/config/confignet v1.26.0
Expand Down Expand Up @@ -80,7 +81,6 @@ require (
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/client v1.26.0 // indirect
go.opentelemetry.io/collector/config/configauth v0.120.0 // indirect
go.opentelemetry.io/collector/config/configcompression v1.26.0 // indirect
go.opentelemetry.io/collector/connector/xconnector v0.120.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror v0.120.0 // indirect
Expand Down

0 comments on commit 6a063b0

Please sign in to comment.