From e2106fcc32fdf85909eee9184f081f707e93e884 Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Sun, 20 Feb 2022 11:35:49 -0800 Subject: [PATCH] Move everything from receiverhelper to component. Updates https://github.com/open-telemetry/opentelemetry-collector/issues/4681 Signed-off-by: Bogdan Drutu --- CHANGELOG.md | 6 + component/componenttest/nop_receiver.go | 55 +++------ component/receiver.go | 107 +++++++++++++++++ component/receiver_test.go | 106 ++++++++++++----- internal/testcomponents/example_receiver.go | 11 +- receiver/otlpreceiver/factory.go | 9 +- receiver/receiverhelper/factory.go | 122 +++----------------- receiver/receiverhelper/factory_test.go | 81 ------------- service/internal/builder/factories_test.go | 3 +- 9 files changed, 231 insertions(+), 269 deletions(-) delete mode 100644 receiver/receiverhelper/factory_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 311ba1147e0..e5ddc17587b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,12 @@ - Deprecated `extensionhelper.CreateDefaultConfig` in favour of `component.ExtensionDefaultConfigFunc` - Deprecated `extensionhelper.CreateServiceExtension` in favour of `component.CreateExtensionFunc` - Deprecated `extensionhelper.NewFactory` in favour of `component.NewExtensionFactory` +- Move helpers from receiverhelper to component (#4891) + - Deprecated `receiverhelper.CreateDefaultConfig` in favour of `component.ReceiverDefaultConfigFunc` + - Deprecated `receiverhelper.WithTraces` in favour of `component.WithTracesReceiver` + - Deprecated `receiverhelper.WithMetrics` in favour of `component.WithMetricsReceiver` + - Deprecated `receiverhelper.WithLogs` in favour of `component.WithLogsReceiver` + - Deprecated `receiverhelper.NewFactory` in favour of `component.NewReceiverFactory` ### 💡 Enhancements 💡 diff --git a/component/componenttest/nop_receiver.go b/component/componenttest/nop_receiver.go index f4eb64c23f9..fd574aa4fa4 100644 --- a/component/componenttest/nop_receiver.go +++ b/component/componenttest/nop_receiver.go @@ -20,7 +20,6 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/internal/internalinterface" ) // NewNopReceiverCreateSettings returns a new nop settings for Create*Receiver functions. @@ -35,57 +34,31 @@ type nopReceiverConfig struct { config.ReceiverSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct } -// nopReceiverFactory is factory for nopReceiver. -type nopReceiverFactory struct { - internalinterface.BaseInternal -} - -var nopReceiverFactoryInstance = &nopReceiverFactory{} +var nopReceiverFactory = component.NewReceiverFactory( + "nop", + func() config.Receiver { + return &nopReceiverConfig{ + ReceiverSettings: config.NewReceiverSettings(config.NewComponentID("nop")), + } + }, + component.WithTracesReceiver(createTracesReceiver), + component.WithMetricsReceiver(createMetricsReceiver), + component.WithLogsReceiver(createLogsReceiver)) // NewNopReceiverFactory returns a component.ReceiverFactory that constructs nop receivers. func NewNopReceiverFactory() component.ReceiverFactory { - return nopReceiverFactoryInstance -} - -// Type gets the type of the Receiver config created by this factory. -func (f *nopReceiverFactory) Type() config.Type { - return config.NewComponentID("nop").Type() -} - -// CreateDefaultConfig creates the default configuration for the Receiver. -func (f *nopReceiverFactory) CreateDefaultConfig() config.Receiver { - return &nopReceiverConfig{ - ReceiverSettings: config.NewReceiverSettings(config.NewComponentID("nop")), - } + return nopReceiverFactory } -// CreateTracesReceiver implements component.ReceiverFactory interface. -func (f *nopReceiverFactory) CreateTracesReceiver( - _ context.Context, - _ component.ReceiverCreateSettings, - _ config.Receiver, - _ consumer.Traces, -) (component.TracesReceiver, error) { +func createTracesReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Traces) (component.TracesReceiver, error) { return nopReceiverInstance, nil } -// CreateMetricsReceiver implements component.ReceiverFactory interface. -func (f *nopReceiverFactory) CreateMetricsReceiver( - _ context.Context, - _ component.ReceiverCreateSettings, - _ config.Receiver, - _ consumer.Metrics, -) (component.MetricsReceiver, error) { +func createMetricsReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Metrics) (component.MetricsReceiver, error) { return nopReceiverInstance, nil } -// CreateLogsReceiver implements component.ReceiverFactory interface. -func (f *nopReceiverFactory) CreateLogsReceiver( - _ context.Context, - _ component.ReceiverCreateSettings, - _ config.Receiver, - _ consumer.Logs, -) (component.LogsReceiver, error) { +func createLogsReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Logs) (component.LogsReceiver, error) { return nopReceiverInstance, nil } diff --git a/component/receiver.go b/component/receiver.go index 6143f0142d2..353ab485363 100644 --- a/component/receiver.go +++ b/component/receiver.go @@ -17,8 +17,10 @@ package component // import "go.opentelemetry.io/collector/component" import ( "context" + "go.opentelemetry.io/collector/component/componenterror" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/internal/internalinterface" ) // Receiver allows the collector to receive metrics, traces and logs. @@ -132,3 +134,108 @@ type ReceiverFactory interface { CreateLogsReceiver(ctx context.Context, set ReceiverCreateSettings, cfg config.Receiver, nextConsumer consumer.Logs) (LogsReceiver, error) } + +// ReceiverFactoryOption apply changes to ReceiverOptions. +type ReceiverFactoryOption func(o *processorFactory) + +// ReceiverCreateDefaultConfigFunc is the equivalent of ReceiverFactory.CreateDefaultConfig() +type ReceiverCreateDefaultConfigFunc func() config.Receiver + +// CreateDefaultConfig implements ExtensionFactory.CreateDefaultConfig() +func (f ReceiverCreateDefaultConfigFunc) CreateDefaultConfig() config.Receiver { + return f() +} + +// CreateTracesReceiverFunc is the equivalent of ReceiverFactory.CreateTracesReceiver() +type CreateTracesReceiverFunc func(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Traces) (TracesReceiver, error) + +// CreateTracesReceiver creates a TracesReceiver based on this config. +func (f CreateTracesReceiverFunc) CreateTracesReceiver( + ctx context.Context, + set ReceiverCreateSettings, + cfg config.Receiver, + nextConsumer consumer.Traces) (TracesReceiver, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +// CreateMetricsReceiverFunc is the equivalent of ReceiverFactory.CreateMetricsReceiver() +type CreateMetricsReceiverFunc func(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Metrics) (MetricsReceiver, error) + +// CreateMetricsReceiver creates a MetricsReceiver based on this config. +func (f CreateMetricsReceiverFunc) CreateMetricsReceiver( + ctx context.Context, + set ReceiverCreateSettings, + cfg config.Receiver, + nextConsumer consumer.Metrics, +) (MetricsReceiver, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +// CreateLogsReceiverFunc is the equivalent of ReceiverFactory.CreateLogsReceiver() +type CreateLogsReceiverFunc func(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Logs) (LogsReceiver, error) + +// CreateLogsReceiver creates a LogsReceiver based on this config. +func (f CreateLogsReceiverFunc) CreateLogsReceiver( + ctx context.Context, + set ReceiverCreateSettings, + cfg config.Receiver, + nextConsumer consumer.Logs, +) (LogsReceiver, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +type processorFactory struct { + internalinterface.BaseInternal + cfgType config.Type + ReceiverCreateDefaultConfigFunc + CreateTracesReceiverFunc + CreateMetricsReceiverFunc + CreateLogsReceiverFunc +} + +// WithTracesReceiver overrides the default "error not supported" implementation for CreateTracesReceiver. +func WithTracesReceiver(createTracesReceiver CreateTracesReceiverFunc) ReceiverFactoryOption { + return func(o *processorFactory) { + o.CreateTracesReceiverFunc = createTracesReceiver + } +} + +// WithMetricsReceiver overrides the default "error not supported" implementation for CreateMetricsReceiver. +func WithMetricsReceiver(createMetricsReceiver CreateMetricsReceiverFunc) ReceiverFactoryOption { + return func(o *processorFactory) { + o.CreateMetricsReceiverFunc = createMetricsReceiver + } +} + +// WithLogsReceiver overrides the default "error not supported" implementation for CreateLogsReceiver. +func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc) ReceiverFactoryOption { + return func(o *processorFactory) { + o.CreateLogsReceiverFunc = createLogsReceiver + } +} + +// NewReceiverFactory returns a ReceiverFactory. +func NewReceiverFactory(cfgType config.Type, createDefaultConfig ReceiverCreateDefaultConfigFunc, options ...ReceiverFactoryOption) ReceiverFactory { + f := &processorFactory{ + cfgType: cfgType, + ReceiverCreateDefaultConfigFunc: createDefaultConfig, + } + for _, opt := range options { + opt(f) + } + return f +} + +// Type returns the type of the Receiver created by this ReceiverFactory. +func (f *processorFactory) Type() config.Type { + return f.cfgType +} diff --git a/component/receiver_test.go b/component/receiver_test.go index bbec820e41c..92b9c020119 100644 --- a/component/receiver_test.go +++ b/component/receiver_test.go @@ -15,55 +15,101 @@ package component import ( + "context" "testing" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/consumer" ) -type TestReceiverFactory struct { - ReceiverFactory - name config.Type -} - -// Type gets the type of the Receiver config created by this factory. -func (f *TestReceiverFactory) Type() config.Type { - return f.name -} +// TODO: Move this TestMakeReceiverFactoryMap to factories_test after #4889 is merged. -func TestBuildReceivers(t *testing.T) { +func TestMakeReceiverFactoryMap(t *testing.T) { type testCase struct { - in []ReceiverFactory - out map[config.Type]ReceiverFactory + name string + in []ReceiverFactory + out map[config.Type]ReceiverFactory } + p1 := NewReceiverFactory("p1", nil) + p2 := NewReceiverFactory("p2", nil) testCases := []testCase{ { - in: []ReceiverFactory{ - &TestReceiverFactory{name: "e1"}, - &TestReceiverFactory{name: "e2"}, - }, + name: "different names", + in: []ReceiverFactory{p1, p2}, out: map[config.Type]ReceiverFactory{ - "e1": &TestReceiverFactory{name: "e1"}, - "e2": &TestReceiverFactory{name: "e2"}, + p1.Type(): p1, + p2.Type(): p2, }, }, { - in: []ReceiverFactory{ - &TestReceiverFactory{name: "e1"}, - &TestReceiverFactory{name: "e1"}, - }, + name: "same name", + in: []ReceiverFactory{p1, p2, NewReceiverFactory("p1", nil)}, }, } - for _, c := range testCases { - out, err := MakeReceiverFactoryMap(c.in...) - if c.out == nil { - assert.Error(t, err) - continue - } - assert.NoError(t, err) - assert.Equal(t, c.out, out) + for i := range testCases { + tt := testCases[i] + t.Run(tt.name, func(t *testing.T) { + out, err := MakeReceiverFactoryMap(tt.in...) + if tt.out == nil { + assert.Error(t, err) + return + } + assert.NoError(t, err) + assert.Equal(t, tt.out, out) + }) } } + +func TestNewReceiverFactory(t *testing.T) { + const typeStr = "test" + defaultCfg := config.NewReceiverSettings(config.NewComponentID(typeStr)) + factory := NewReceiverFactory( + typeStr, + func() config.Receiver { return &defaultCfg }) + assert.EqualValues(t, typeStr, factory.Type()) + assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) + _, err := factory.CreateTracesReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) + _, err = factory.CreateMetricsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) + _, err = factory.CreateLogsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) +} + +func TestNewReceiverFactory_WithOptions(t *testing.T) { + const typeStr = "test" + defaultCfg := config.NewReceiverSettings(config.NewComponentID(typeStr)) + factory := NewReceiverFactory( + typeStr, + func() config.Receiver { return &defaultCfg }, + WithTracesReceiver(createTracesReceiver), + WithMetricsReceiver(createMetricsReceiver), + WithLogsReceiver(createLogsReceiver)) + assert.EqualValues(t, typeStr, factory.Type()) + assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) + + _, err := factory.CreateTracesReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) + + _, err = factory.CreateMetricsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) + + _, err = factory.CreateLogsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) +} + +func createTracesReceiver(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Traces) (TracesReceiver, error) { + return nil, nil +} + +func createMetricsReceiver(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Metrics) (MetricsReceiver, error) { + return nil, nil +} + +func createLogsReceiver(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Logs) (LogsReceiver, error) { + return nil, nil +} diff --git a/internal/testcomponents/example_receiver.go b/internal/testcomponents/example_receiver.go index 3c574a69bc2..ec9789e371d 100644 --- a/internal/testcomponents/example_receiver.go +++ b/internal/testcomponents/example_receiver.go @@ -21,7 +21,6 @@ import ( "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/confignet" "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/receiver/receiverhelper" ) // ExampleReceiver is for testing purposes. We are defining an example config and factory @@ -36,15 +35,15 @@ type ExampleReceiver struct { ExtraListSetting []string `mapstructure:"extra_list"` } -var receiverType = config.Type("examplereceiver") +const receiverType = config.Type("examplereceiver") // ExampleReceiverFactory is factory for ExampleReceiver. -var ExampleReceiverFactory = receiverhelper.NewFactory( +var ExampleReceiverFactory = component.NewReceiverFactory( receiverType, createReceiverDefaultConfig, - receiverhelper.WithTraces(createTracesReceiver), - receiverhelper.WithMetrics(createMetricsReceiver), - receiverhelper.WithLogs(createLogsReceiver)) + component.WithTracesReceiver(createTracesReceiver), + component.WithMetricsReceiver(createMetricsReceiver), + component.WithLogsReceiver(createLogsReceiver)) func createReceiverDefaultConfig() config.Receiver { return &ExampleReceiver{ diff --git a/receiver/otlpreceiver/factory.go b/receiver/otlpreceiver/factory.go index acc820df318..ca4dc3ec3e3 100644 --- a/receiver/otlpreceiver/factory.go +++ b/receiver/otlpreceiver/factory.go @@ -24,7 +24,6 @@ import ( "go.opentelemetry.io/collector/config/confignet" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/internal/sharedcomponent" - "go.opentelemetry.io/collector/receiver/receiverhelper" ) const ( @@ -37,12 +36,12 @@ const ( // NewFactory creates a new OTLP receiver factory. func NewFactory() component.ReceiverFactory { - return receiverhelper.NewFactory( + return component.NewReceiverFactory( typeStr, createDefaultConfig, - receiverhelper.WithTraces(createTracesReceiver), - receiverhelper.WithMetrics(createMetricsReceiver), - receiverhelper.WithLogs(createLogReceiver)) + component.WithTracesReceiver(createTracesReceiver), + component.WithMetricsReceiver(createMetricsReceiver), + component.WithLogsReceiver(createLogReceiver)) } // createDefaultConfig creates the default configuration for receiver. diff --git a/receiver/receiverhelper/factory.go b/receiver/receiverhelper/factory.go index 357e7a3ee2a..44ee3949de0 100644 --- a/receiver/receiverhelper/factory.go +++ b/receiver/receiverhelper/factory.go @@ -15,118 +15,32 @@ package receiverhelper // import "go.opentelemetry.io/collector/receiver/receiverhelper" import ( - "context" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenterror" - "go.opentelemetry.io/collector/config" - "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/internal/internalinterface" ) -// FactoryOption apply changes to ReceiverOptions. -type FactoryOption func(o *factory) - -// WithTraces overrides the default "error not supported" implementation for CreateTracesReceiver. -func WithTraces(createTracesReceiver CreateTracesReceiver) FactoryOption { - return func(o *factory) { - o.createTracesReceiver = createTracesReceiver - } -} - -// WithMetrics overrides the default "error not supported" implementation for CreateMetricsReceiver. -func WithMetrics(createMetricsReceiver CreateMetricsReceiver) FactoryOption { - return func(o *factory) { - o.createMetricsReceiver = createMetricsReceiver - } -} - -// WithLogs overrides the default "error not supported" implementation for CreateLogsReceiver. -func WithLogs(createLogsReceiver CreateLogsReceiver) FactoryOption { - return func(o *factory) { - o.createLogsReceiver = createLogsReceiver - } -} - -// CreateDefaultConfig is the equivalent of component.ReceiverFactory.CreateDefaultConfig() -type CreateDefaultConfig func() config.Receiver - -// CreateTracesReceiver is the equivalent of component.ReceiverFactory.CreateTracesReceiver() -type CreateTracesReceiver func(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Traces) (component.TracesReceiver, error) - -// CreateMetricsReceiver is the equivalent of component.ReceiverFactory.CreateMetricsReceiver() -type CreateMetricsReceiver func(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Metrics) (component.MetricsReceiver, error) +// Deprecated: use component.ReceiverFactoryOption. +type FactoryOption = component.ReceiverFactoryOption -// CreateLogsReceiver is the equivalent of component.ReceiverFactory.CreateLogsReceiver() -type CreateLogsReceiver func(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Logs) (component.LogsReceiver, error) +// Deprecated: use component.WithTracesReceiver. +var WithTraces = component.WithTracesReceiver -type factory struct { - internalinterface.BaseInternal - cfgType config.Type - createDefaultConfig CreateDefaultConfig - createTracesReceiver CreateTracesReceiver - createMetricsReceiver CreateMetricsReceiver - createLogsReceiver CreateLogsReceiver -} +// Deprecated: use component.WithMetricsReceiver. +var WithMetrics = component.WithMetricsReceiver -// NewFactory returns a component.ReceiverFactory. -func NewFactory( - cfgType config.Type, - createDefaultConfig CreateDefaultConfig, - options ...FactoryOption) component.ReceiverFactory { - f := &factory{ - cfgType: cfgType, - createDefaultConfig: createDefaultConfig, - } - for _, opt := range options { - opt(f) - } - return f -} +// Deprecated: use component.WithLogsReceiver. +var WithLogs = component.WithLogsReceiver -// Type gets the type of the Receiver config created by this factory. -func (f *factory) Type() config.Type { - return f.cfgType -} +// Deprecated: use component.ReceiverCreateDefaultConfigFunc. +type CreateDefaultConfig = component.ReceiverCreateDefaultConfigFunc -// CreateDefaultConfig creates the default configuration for receiver. -func (f *factory) CreateDefaultConfig() config.Receiver { - return f.createDefaultConfig() -} +// Deprecated: use component.CreateTracesReceiverFunc. +type CreateTracesReceiver = component.CreateTracesReceiverFunc -// CreateTracesReceiver creates a component.TracesReceiver based on this config. -func (f *factory) CreateTracesReceiver( - ctx context.Context, - set component.ReceiverCreateSettings, - cfg config.Receiver, - nextConsumer consumer.Traces) (component.TracesReceiver, error) { - if f.createTracesReceiver != nil { - return f.createTracesReceiver(ctx, set, cfg, nextConsumer) - } - return nil, componenterror.ErrDataTypeIsNotSupported -} +// Deprecated: use component.CreateMetricsReceiverFunc. +type CreateMetricsReceiver = component.CreateMetricsReceiverFunc -// CreateMetricsReceiver creates a component.MetricsReceiver based on this config. -func (f *factory) CreateMetricsReceiver( - ctx context.Context, - set component.ReceiverCreateSettings, - cfg config.Receiver, - nextConsumer consumer.Metrics) (component.MetricsReceiver, error) { - if f.createMetricsReceiver != nil { - return f.createMetricsReceiver(ctx, set, cfg, nextConsumer) - } - return nil, componenterror.ErrDataTypeIsNotSupported -} +// Deprecated: use component.CreateLogsReceiverFunc. +type CreateLogsReceiver = component.CreateLogsReceiverFunc -// CreateLogsReceiver creates a component.LogsReceiver based on this config. -func (f *factory) CreateLogsReceiver( - ctx context.Context, - set component.ReceiverCreateSettings, - cfg config.Receiver, - nextConsumer consumer.Logs, -) (component.LogsReceiver, error) { - if f.createLogsReceiver != nil { - return f.createLogsReceiver(ctx, set, cfg, nextConsumer) - } - return nil, componenterror.ErrDataTypeIsNotSupported -} +// Deprecated: use component.NewReceiverFactory. +var NewFactory = component.NewReceiverFactory diff --git a/receiver/receiverhelper/factory_test.go b/receiver/receiverhelper/factory_test.go deleted file mode 100644 index aba3d006e28..00000000000 --- a/receiver/receiverhelper/factory_test.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package receiverhelper - -import ( - "context" - "testing" - - "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 = config.NewReceiverSettings(config.NewComponentID(typeStr)) - -func TestNewFactory(t *testing.T) { - factory := NewFactory( - typeStr, - defaultConfig) - assert.EqualValues(t, typeStr, factory.Type()) - assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) - _, err := factory.CreateTracesReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.Error(t, err) - _, err = factory.CreateMetricsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.Error(t, err) - _, err = factory.CreateLogsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.Error(t, err) -} - -func TestNewFactory_WithConstructors(t *testing.T) { - factory := NewFactory( - typeStr, - defaultConfig, - WithTraces(createTracesReceiver), - WithMetrics(createMetricsReceiver), - WithLogs(createLogsReceiver)) - assert.EqualValues(t, typeStr, factory.Type()) - assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) - - _, err := factory.CreateTracesReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.NoError(t, err) - - _, err = factory.CreateMetricsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.NoError(t, err) - - _, err = factory.CreateLogsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), factory.CreateDefaultConfig(), nil) - assert.NoError(t, err) -} - -func defaultConfig() config.Receiver { - return &defaultCfg -} - -func createTracesReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Traces) (component.TracesReceiver, error) { - return nil, nil -} - -func createMetricsReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Metrics) (component.MetricsReceiver, error) { - return nil, nil -} - -func createLogsReceiver(context.Context, component.ReceiverCreateSettings, config.Receiver, consumer.Logs) (component.LogsReceiver, error) { - return nil, nil -} diff --git a/service/internal/builder/factories_test.go b/service/internal/builder/factories_test.go index f293c6ad619..1c0e9c131be 100644 --- a/service/internal/builder/factories_test.go +++ b/service/internal/builder/factories_test.go @@ -20,7 +20,6 @@ import ( "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/internal/testcomponents" "go.opentelemetry.io/collector/processor/processorhelper" - "go.opentelemetry.io/collector/receiver/receiverhelper" ) func createTestFactories() component.Factories { @@ -50,7 +49,7 @@ func createTestFactories() component.Factories { } func newBadReceiverFactory() component.ReceiverFactory { - return receiverhelper.NewFactory("bf", func() config.Receiver { + return component.NewReceiverFactory("bf", func() config.Receiver { return &struct { config.ReceiverSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct }{