diff --git a/component/componenttest/nop_receiver.go b/component/componenttest/nop_receiver.go index 3bc2993fdf4..839e97de797 100644 --- a/component/componenttest/nop_receiver.go +++ b/component/componenttest/nop_receiver.go @@ -16,7 +16,6 @@ package componenttest import ( "context" - "errors" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenthelper" @@ -39,24 +38,10 @@ func (f *nopReceiverFactory) Type() config.Type { return "nop" } -// TODO: Consider to remove this or move it to configtest. -type NopConfig struct { - config.ReceiverSettings -} - -func (nc *NopConfig) Validate() error { - if nc.TypeVal != "nop" { - return errors.New("invalid receiver config") - } - return nil -} - // CreateDefaultConfig creates the default configuration for the Receiver. func (f *nopReceiverFactory) CreateDefaultConfig() config.Receiver { - return &NopConfig{ - ReceiverSettings: config.ReceiverSettings{ - TypeVal: f.Type(), - }, + return &config.ReceiverSettings{ + TypeVal: f.Type(), } } diff --git a/component/componenttest/nop_receiver_test.go b/component/componenttest/nop_receiver_test.go index db29340d5ad..0e9904c6107 100644 --- a/component/componenttest/nop_receiver_test.go +++ b/component/componenttest/nop_receiver_test.go @@ -31,7 +31,7 @@ func TestNewNopReceiverFactory(t *testing.T) { require.NotNil(t, factory) assert.Equal(t, config.Type("nop"), factory.Type()) cfg := factory.CreateDefaultConfig() - assert.Equal(t, &NopConfig{ReceiverSettings: config.ReceiverSettings{TypeVal: factory.Type()}}, cfg) + assert.Equal(t, &config.ReceiverSettings{TypeVal: factory.Type()}, cfg) traces, err := factory.CreateTracesReceiver(context.Background(), component.ReceiverCreateParams{}, cfg, consumertest.NewTracesNop()) require.NoError(t, err) diff --git a/config/receiver.go b/config/receiver.go index 95e530cac93..155fa3455b3 100644 --- a/config/receiver.go +++ b/config/receiver.go @@ -27,12 +27,13 @@ type Receivers map[string]Receiver // ReceiverSettings defines common settings for a receiver configuration. // Specific receivers can embed this struct and extend it with more fields if needed. +// It is highly recommended to "override" the Validate() function. type ReceiverSettings struct { TypeVal Type `mapstructure:"-"` NameVal string `mapstructure:"-"` } -var _ NamedEntity = (*ReceiverSettings)(nil) +var _ Receiver = (*ReceiverSettings)(nil) // Name gets the receiver name. func (rs *ReceiverSettings) Name() string { @@ -48,3 +49,8 @@ func (rs *ReceiverSettings) SetName(name string) { func (rs *ReceiverSettings) Type() Type { return rs.TypeVal } + +// Validate validates the configuration and returns an error if invalid. +func (rs *ReceiverSettings) Validate() error { + return nil +} diff --git a/internal/testcomponents/example_receiver.go b/internal/testcomponents/example_receiver.go index aa90b9f4c85..7f5a76e14c2 100644 --- a/internal/testcomponents/example_receiver.go +++ b/internal/testcomponents/example_receiver.go @@ -36,10 +36,6 @@ type ExampleReceiver struct { ExtraListSetting []string `mapstructure:"extra_list"` } -func (ecfg *ExampleReceiver) Validate() error { - return nil -} - const recvType = "examplereceiver" // ExampleReceiverFactory is factory for ExampleReceiver. diff --git a/receiver/receiverhelper/factory_test.go b/receiver/receiverhelper/factory_test.go index d28db0e2177..22b39a6bab9 100644 --- a/receiver/receiverhelper/factory_test.go +++ b/receiver/receiverhelper/factory_test.go @@ -23,18 +23,15 @@ import ( "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" ) const typeStr = "test" -var defaultCfg = &componenttest.NopConfig{ - ReceiverSettings: config.ReceiverSettings{ - TypeVal: typeStr, - NameVal: typeStr, - }, +var defaultCfg = &config.ReceiverSettings{ + TypeVal: typeStr, + NameVal: typeStr, } func TestNewFactory(t *testing.T) { diff --git a/service/internal/builder/factories_test.go b/service/internal/builder/factories_test.go index f25a375feb9..c5787cc1c17 100644 --- a/service/internal/builder/factories_test.go +++ b/service/internal/builder/factories_test.go @@ -18,7 +18,6 @@ import ( "context" "go.opentelemetry.io/collector/component" - componenttest "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/extension/extensionhelper" @@ -59,9 +58,7 @@ func createTestFactories() component.Factories { func newBadReceiverFactory() component.ReceiverFactory { return receiverhelper.NewFactory("bf", func() config.Receiver { - return &componenttest.NopConfig{ - ReceiverSettings: config.ReceiverSettings{TypeVal: "bf"}, - } + return &config.ReceiverSettings{TypeVal: "bf"} }) } @@ -85,7 +82,7 @@ func newBadExtensionFactory() component.ExtensionFactory { return extensionhelper.NewFactory( "bf", func() config.Extension { - return &config.ExporterSettings{ + return &config.ExtensionSettings{ TypeVal: "bf", } }, diff --git a/service/internal/builder/receivers_builder_test.go b/service/internal/builder/receivers_builder_test.go index 425f889fa7b..c2558d3b0a8 100644 --- a/service/internal/builder/receivers_builder_test.go +++ b/service/internal/builder/receivers_builder_test.go @@ -334,7 +334,8 @@ func TestBuildReceivers_NotSupportedDataType(t *testing.T) { t.Run(test.configFile, func(t *testing.T) { cfg, err := configtest.LoadConfigFile(t, path.Join("testdata", test.configFile), factories) - assert.Error(t, err) + assert.NoError(t, err) + require.NotNil(t, cfg) allExporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters) assert.NoError(t, err)