diff --git a/CHANGELOG.md b/CHANGELOG.md index 311ba1147e0..e9dff13f8f4 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 processorhelper to component (#4889) + - Deprecated `processorhelper.CreateDefaultConfig` in favour of `component.ProcessorDefaultConfigFunc` + - Deprecated `processorhelper.WithTraces` in favour of `component.WithTracesProcessor` + - Deprecated `processorhelper.WithMetrics` in favour of `component.WithMetricsProcessor` + - Deprecated `processorhelper.WithLogs` in favour of `component.WithLogsProcessor` + - Deprecated `processorhelper.NewFactory` in favour of `component.NewProcessorFactory` ### 💡 Enhancements 💡 diff --git a/component/componenttest/nop_processor.go b/component/componenttest/nop_processor.go index 6559f1d7659..92116db34ec 100644 --- a/component/componenttest/nop_processor.go +++ b/component/componenttest/nop_processor.go @@ -21,7 +21,6 @@ import ( "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" - "go.opentelemetry.io/collector/internal/internalinterface" ) // NewNopProcessorCreateSettings returns a new nop settings for Create*Processor functions. @@ -36,57 +35,32 @@ type nopProcessorConfig struct { config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct } -// nopProcessorFactory is factory for nopProcessor. -type nopProcessorFactory struct { - internalinterface.BaseInternal -} - -var nopProcessorFactoryInstance = &nopProcessorFactory{} +var nopProcessorFactory = component.NewProcessorFactory( + "nop", + func() config.Processor { + return &nopProcessorConfig{ + ProcessorSettings: config.NewProcessorSettings(config.NewComponentID("nop")), + } + }, + component.WithTracesProcessor(createTracesProcessor), + component.WithMetricsProcessor(createMetricsProcessor), + component.WithLogsProcessor(createLogsProcessor), +) // NewNopProcessorFactory returns a component.ProcessorFactory that constructs nop processors. func NewNopProcessorFactory() component.ProcessorFactory { - return nopProcessorFactoryInstance -} - -// Type gets the type of the Processor config created by this factory. -func (f *nopProcessorFactory) Type() config.Type { - return "nop" -} - -// CreateDefaultConfig creates the default configuration for the Processor. -func (f *nopProcessorFactory) CreateDefaultConfig() config.Processor { - return &nopProcessorConfig{ - ProcessorSettings: config.NewProcessorSettings(config.NewComponentID("nop")), - } + return nopProcessorFactory } -// CreateTracesProcessor implements component.ProcessorFactory interface. -func (f *nopProcessorFactory) CreateTracesProcessor( - _ context.Context, - _ component.ProcessorCreateSettings, - _ config.Processor, - _ consumer.Traces, -) (component.TracesProcessor, error) { +func createTracesProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Traces) (component.TracesProcessor, error) { return nopProcessorInstance, nil } -// CreateMetricsProcessor implements component.ProcessorFactory interface. -func (f *nopProcessorFactory) CreateMetricsProcessor( - _ context.Context, - _ component.ProcessorCreateSettings, - _ config.Processor, - _ consumer.Metrics, -) (component.MetricsProcessor, error) { +func createMetricsProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Metrics) (component.MetricsProcessor, error) { return nopProcessorInstance, nil } -// CreateLogsProcessor implements component.ProcessorFactory interface. -func (f *nopProcessorFactory) CreateLogsProcessor( - _ context.Context, - _ component.ProcessorCreateSettings, - _ config.Processor, - _ consumer.Logs, -) (component.LogsProcessor, error) { +func createLogsProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Logs) (component.LogsProcessor, error) { return nopProcessorInstance, nil } diff --git a/component/factories_test.go b/component/factories_test.go index d2dbcd93241..fd137797435 100644 --- a/component/factories_test.go +++ b/component/factories_test.go @@ -45,7 +45,6 @@ func TestMakeExtensionFactoryMap(t *testing.T) { in: []ExtensionFactory{p1, p2, NewExtensionFactory("p1", nil, nil)}, }, } - for i := range testCases { tt := testCases[i] t.Run(tt.name, func(t *testing.T) { @@ -59,3 +58,41 @@ func TestMakeExtensionFactoryMap(t *testing.T) { }) } } + +func TestMakeProcessorFactoryMap(t *testing.T) { + type testCase struct { + name string + in []ProcessorFactory + out map[config.Type]ProcessorFactory + } + + p1 := NewProcessorFactory("p1", nil) + p2 := NewProcessorFactory("p2", nil) + testCases := []testCase{ + { + name: "different names", + in: []ProcessorFactory{p1, p2}, + out: map[config.Type]ProcessorFactory{ + p1.Type(): p1, + p2.Type(): p2, + }, + }, + { + name: "same name", + in: []ProcessorFactory{p1, p2, NewProcessorFactory("p1", nil)}, + }, + } + + for i := range testCases { + tt := testCases[i] + t.Run(tt.name, func(t *testing.T) { + out, err := MakeProcessorFactoryMap(tt.in...) + if tt.out == nil { + assert.Error(t, err) + return + } + assert.NoError(t, err) + assert.Equal(t, tt.out, out) + }) + } +} diff --git a/component/processor.go b/component/processor.go index fc684073078..4730904578a 100644 --- a/component/processor.go +++ b/component/processor.go @@ -17,6 +17,7 @@ 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" @@ -54,11 +55,10 @@ type ProcessorCreateSettings struct { BuildInfo BuildInfo } -// ProcessorFactory is factory interface for processors. This is the -// new factory type that can create new style processors. +// ProcessorFactory is Factory interface for processors. // // This interface cannot be directly implemented. Implementations must -// use the processorhelper.NewFactory to implement it. +// use the NewProcessorFactory to implement it. type ProcessorFactory interface { internalinterface.InternalInterface Factory @@ -102,3 +102,108 @@ type ProcessorFactory interface { nextConsumer consumer.Logs, ) (LogsProcessor, error) } + +// ProcessorFactoryOption apply changes to ProcessorOptions. +type ProcessorFactoryOption func(o *processorFactory) + +// ProcessorCreateDefaultConfigFunc is the equivalent of ProcessorFactory.CreateDefaultConfig(). +type ProcessorCreateDefaultConfigFunc func() config.Processor + +// CreateDefaultConfig implements ProcessorFactory.CreateDefaultConfig(). +func (f ProcessorCreateDefaultConfigFunc) CreateDefaultConfig() config.Processor { + return f() +} + +// CreateTracesProcessorFunc is the equivalent of ProcessorFactory.CreateTracesProcessor(). +type CreateTracesProcessorFunc func(context.Context, ProcessorCreateSettings, config.Processor, consumer.Traces) (TracesProcessor, error) + +// CreateTracesProcessor implements ProcessorFactory.CreateTracesProcessor(). +func (f CreateTracesProcessorFunc) CreateTracesProcessor( + ctx context.Context, + set ProcessorCreateSettings, + cfg config.Processor, + nextConsumer consumer.Traces) (TracesProcessor, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +// CreateMetricsProcessorFunc is the equivalent of ProcessorFactory.CreateMetricsProcessor(). +type CreateMetricsProcessorFunc func(context.Context, ProcessorCreateSettings, config.Processor, consumer.Metrics) (MetricsProcessor, error) + +// CreateMetricsProcessor implements ProcessorFactory.CreateMetricsProcessor(). +func (f CreateMetricsProcessorFunc) CreateMetricsProcessor( + ctx context.Context, + set ProcessorCreateSettings, + cfg config.Processor, + nextConsumer consumer.Metrics, +) (MetricsProcessor, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +// CreateLogsProcessorFunc is the equivalent of ProcessorFactory.CreateLogsProcessor(). +type CreateLogsProcessorFunc func(context.Context, ProcessorCreateSettings, config.Processor, consumer.Logs) (LogsProcessor, error) + +// CreateLogsProcessor implements ProcessorFactory.CreateLogsProcessor(). +func (f CreateLogsProcessorFunc) CreateLogsProcessor( + ctx context.Context, + set ProcessorCreateSettings, + cfg config.Processor, + nextConsumer consumer.Logs, +) (LogsProcessor, error) { + if f == nil { + return nil, componenterror.ErrDataTypeIsNotSupported + } + return f(ctx, set, cfg, nextConsumer) +} + +type processorFactory struct { + internalinterface.BaseInternal + cfgType config.Type + ProcessorCreateDefaultConfigFunc + CreateTracesProcessorFunc + CreateMetricsProcessorFunc + CreateLogsProcessorFunc +} + +// WithTracesProcessor overrides the default "error not supported" implementation for CreateTracesProcessor. +func WithTracesProcessor(createTracesProcessor CreateTracesProcessorFunc) ProcessorFactoryOption { + return func(o *processorFactory) { + o.CreateTracesProcessorFunc = createTracesProcessor + } +} + +// WithMetricsProcessor overrides the default "error not supported" implementation for CreateMetricsProcessor. +func WithMetricsProcessor(createMetricsProcessor CreateMetricsProcessorFunc) ProcessorFactoryOption { + return func(o *processorFactory) { + o.CreateMetricsProcessorFunc = createMetricsProcessor + } +} + +// WithLogsProcessor overrides the default "error not supported" implementation for CreateLogsProcessor. +func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc) ProcessorFactoryOption { + return func(o *processorFactory) { + o.CreateLogsProcessorFunc = createLogsProcessor + } +} + +// NewProcessorFactory returns a ProcessorFactory. +func NewProcessorFactory(cfgType config.Type, createDefaultConfig ProcessorCreateDefaultConfigFunc, options ...ProcessorFactoryOption) ProcessorFactory { + f := &processorFactory{ + cfgType: cfgType, + ProcessorCreateDefaultConfigFunc: createDefaultConfig, + } + for _, opt := range options { + opt(f) + } + return f +} + +// Type returns the type of the Processor created by this ProcessorFactory. +func (f *processorFactory) Type() config.Type { + return f.cfgType +} diff --git a/component/processor_test.go b/component/processor_test.go index e46825cd1de..2f998183ba3 100644 --- a/component/processor_test.go +++ b/component/processor_test.go @@ -15,57 +15,61 @@ package component import ( + "context" "testing" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/consumer" ) -var _ ProcessorFactory = (*TestProcessorFactory)(nil) - -type TestProcessorFactory struct { - ProcessorFactory - name string +func TestNewProcessorFactory(t *testing.T) { + const typeStr = "test" + defaultCfg := config.NewProcessorSettings(config.NewComponentID(typeStr)) + factory := NewProcessorFactory( + typeStr, + func() config.Processor { return &defaultCfg }) + assert.EqualValues(t, typeStr, factory.Type()) + assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) + _, err := factory.CreateTracesProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) + _, err = factory.CreateMetricsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) + _, err = factory.CreateLogsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.Error(t, err) } -// Type gets the type of the Processor config created by this factory. -func (f *TestProcessorFactory) Type() config.Type { - return config.Type(f.name) +func TestNewProcessorFactory_WithOptions(t *testing.T) { + const typeStr = "test" + defaultCfg := config.NewProcessorSettings(config.NewComponentID(typeStr)) + factory := NewProcessorFactory( + typeStr, + func() config.Processor { return &defaultCfg }, + WithTracesProcessor(createTracesProcessor), + WithMetricsProcessor(createMetricsProcessor), + WithLogsProcessor(createLogsProcessor)) + assert.EqualValues(t, typeStr, factory.Type()) + assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) + + _, err := factory.CreateTracesProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) + + _, err = factory.CreateMetricsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) + + _, err = factory.CreateLogsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil) + assert.NoError(t, err) } -func TestMakeProcessorFactoryMap(t *testing.T) { - type testCase struct { - in []ProcessorFactory - out map[config.Type]ProcessorFactory - } +func createTracesProcessor(context.Context, ProcessorCreateSettings, config.Processor, consumer.Traces) (TracesProcessor, error) { + return nil, nil +} - testCases := []testCase{ - { - in: []ProcessorFactory{ - &TestProcessorFactory{name: "p1"}, - &TestProcessorFactory{name: "p2"}, - }, - out: map[config.Type]ProcessorFactory{ - "p1": &TestProcessorFactory{name: "p1"}, - "p2": &TestProcessorFactory{name: "p2"}, - }, - }, - { - in: []ProcessorFactory{ - &TestProcessorFactory{name: "p1"}, - &TestProcessorFactory{name: "p1"}, - }, - }, - } +func createMetricsProcessor(context.Context, ProcessorCreateSettings, config.Processor, consumer.Metrics) (MetricsProcessor, error) { + return nil, nil +} - for _, c := range testCases { - out, err := MakeProcessorFactoryMap(c.in...) - if c.out == nil { - assert.Error(t, err) - continue - } - assert.NoError(t, err) - assert.Equal(t, c.out, out) - } +func createLogsProcessor(context.Context, ProcessorCreateSettings, config.Processor, consumer.Logs) (LogsProcessor, error) { + return nil, nil } diff --git a/internal/testcomponents/example_processor.go b/internal/testcomponents/example_processor.go index c0a1503e02b..36bcb90c1d4 100644 --- a/internal/testcomponents/example_processor.go +++ b/internal/testcomponents/example_processor.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/processor/processorhelper" ) // ExampleProcessorCfg is for testing purposes. We are defining an example config and factory @@ -35,12 +34,12 @@ type ExampleProcessorCfg struct { const procType = "exampleprocessor" // ExampleProcessorFactory is factory for exampleProcessor. -var ExampleProcessorFactory = processorhelper.NewFactory( +var ExampleProcessorFactory = component.NewProcessorFactory( procType, createDefaultConfig, - processorhelper.WithTraces(createTracesProcessor), - processorhelper.WithMetrics(createMetricsProcessor), - processorhelper.WithLogs(createLogsProcessor)) + component.WithTracesProcessor(createTracesProcessor), + component.WithMetricsProcessor(createMetricsProcessor), + component.WithLogsProcessor(createLogsProcessor)) // CreateDefaultConfig creates the default configuration for the Processor. func createDefaultConfig() config.Processor { diff --git a/processor/batchprocessor/factory.go b/processor/batchprocessor/factory.go index cc932893339..0ee22f51428 100644 --- a/processor/batchprocessor/factory.go +++ b/processor/batchprocessor/factory.go @@ -21,7 +21,6 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/processor/processorhelper" ) const ( @@ -34,12 +33,12 @@ const ( // NewFactory returns a new factory for the Batch processor. func NewFactory() component.ProcessorFactory { - return processorhelper.NewFactory( + return component.NewProcessorFactory( typeStr, createDefaultConfig, - processorhelper.WithTraces(createTracesProcessor), - processorhelper.WithMetrics(createMetricsProcessor), - processorhelper.WithLogs(createLogsProcessor)) + component.WithTracesProcessor(createTracesProcessor), + component.WithMetricsProcessor(createMetricsProcessor), + component.WithLogsProcessor(createLogsProcessor)) } func createDefaultConfig() config.Processor { diff --git a/processor/memorylimiterprocessor/factory.go b/processor/memorylimiterprocessor/factory.go index ea26c45b415..9a86faf20c6 100644 --- a/processor/memorylimiterprocessor/factory.go +++ b/processor/memorylimiterprocessor/factory.go @@ -32,12 +32,12 @@ var processorCapabilities = consumer.Capabilities{MutatesData: false} // NewFactory returns a new factory for the Memory Limiter processor. func NewFactory() component.ProcessorFactory { - return processorhelper.NewFactory( + return component.NewProcessorFactory( typeStr, createDefaultConfig, - processorhelper.WithTraces(createTracesProcessor), - processorhelper.WithMetrics(createMetricsProcessor), - processorhelper.WithLogs(createLogsProcessor)) + component.WithTracesProcessor(createTracesProcessor), + component.WithMetricsProcessor(createMetricsProcessor), + component.WithLogsProcessor(createLogsProcessor)) } // CreateDefaultConfig creates the default configuration for processor. Notice diff --git a/processor/processorhelper/factory.go b/processor/processorhelper/factory.go index f0eb72a6d3c..6cf868ccb57 100644 --- a/processor/processorhelper/factory.go +++ b/processor/processorhelper/factory.go @@ -15,120 +15,32 @@ package processorhelper // import "go.opentelemetry.io/collector/processor/processorhelper" 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 ProcessorOptions. -type FactoryOption func(o *factory) - -// CreateDefaultConfig is the equivalent of component.ProcessorFactory.CreateDefaultConfig() -type CreateDefaultConfig func() config.Processor - -// CreateTracesProcessor is the equivalent of component.ProcessorFactory.CreateTracesProcessor() -type CreateTracesProcessor func(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Traces) (component.TracesProcessor, error) - -// CreateMetricsProcessor is the equivalent of component.ProcessorFactory.CreateMetricsProcessor() -type CreateMetricsProcessor func(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Metrics) (component.MetricsProcessor, error) - -// CreateLogsProcessor is the equivalent of component.ProcessorFactory.CreateLogsProcessor() -type CreateLogsProcessor func(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Logs) (component.LogsProcessor, error) - -type factory struct { - internalinterface.BaseInternal - cfgType config.Type - createDefaultConfig CreateDefaultConfig - createTracesProcessor CreateTracesProcessor - createMetricsProcessor CreateMetricsProcessor - createLogsProcessor CreateLogsProcessor -} - -// WithTraces overrides the default "error not supported" implementation for CreateTracesProcessor. -func WithTraces(createTracesProcessor CreateTracesProcessor) FactoryOption { - return func(o *factory) { - o.createTracesProcessor = createTracesProcessor - } -} +// Deprecated: [v0.46.0] use component.ProcessorFactoryOption. +type FactoryOption = component.ProcessorFactoryOption -// WithMetrics overrides the default "error not supported" implementation for CreateMetricsProcessor. -func WithMetrics(createMetricsProcessor CreateMetricsProcessor) FactoryOption { - return func(o *factory) { - o.createMetricsProcessor = createMetricsProcessor - } -} +// Deprecated: [v0.46.0] use component.ProcessorCreateDefaultConfigFunc. +type CreateDefaultConfig = component.ProcessorCreateDefaultConfigFunc -// WithLogs overrides the default "error not supported" implementation for CreateLogsProcessor. -func WithLogs(createLogsProcessor CreateLogsProcessor) FactoryOption { - return func(o *factory) { - o.createLogsProcessor = createLogsProcessor - } -} +// Deprecated: [v0.46.0] use component.CreateTracesProcessorFunc. +type CreateTracesProcessor = component.CreateTracesProcessorFunc -// NewFactory returns a component.ProcessorFactory. -func NewFactory( - cfgType config.Type, - createDefaultConfig CreateDefaultConfig, - options ...FactoryOption) component.ProcessorFactory { - f := &factory{ - cfgType: cfgType, - createDefaultConfig: createDefaultConfig, - } - for _, opt := range options { - opt(f) - } - return f -} +// Deprecated: [v0.46.0] use component.CreateMetricsProcessorFunc. +type CreateMetricsProcessor = component.CreateMetricsProcessorFunc -// Type gets the type of the Processor config created by this factory. -func (f *factory) Type() config.Type { - return f.cfgType -} +// Deprecated: [v0.46.0] use component.CreateLogsProcessorFunc. +type CreateLogsProcessor = component.CreateLogsProcessorFunc -// CreateDefaultConfig creates the default configuration for processor. -func (f *factory) CreateDefaultConfig() config.Processor { - return f.createDefaultConfig() -} +// Deprecated: [v0.46.0] use component.WithTracesProcessor. +var WithTraces = component.WithTracesProcessor -// CreateTracesProcessor creates a component.TracesProcessor based on this config. -func (f *factory) CreateTracesProcessor( - ctx context.Context, - set component.ProcessorCreateSettings, - cfg config.Processor, - nextConsumer consumer.Traces, -) (component.TracesProcessor, error) { - if f.createTracesProcessor == nil { - return nil, componenterror.ErrDataTypeIsNotSupported - } - return f.createTracesProcessor(ctx, set, cfg, nextConsumer) -} +// Deprecated: [v0.46.0] use component.WithMetricsProcessor. +var WithMetrics = component.WithMetricsProcessor -// CreateMetricsProcessor creates a component.MetricsProcessor based on this config. -func (f *factory) CreateMetricsProcessor( - ctx context.Context, - set component.ProcessorCreateSettings, - cfg config.Processor, - nextConsumer consumer.Metrics, -) (component.MetricsProcessor, error) { - if f.createMetricsProcessor == nil { - return nil, componenterror.ErrDataTypeIsNotSupported - } - return f.createMetricsProcessor(ctx, set, cfg, nextConsumer) -} +// Deprecated: [v0.46.0] use component.WithLogsProcessor. +var WithLogs = component.WithLogsProcessor -// CreateLogsProcessor creates a component.LogsProcessor based on this config. -func (f *factory) CreateLogsProcessor( - ctx context.Context, - set component.ProcessorCreateSettings, - cfg config.Processor, - nextConsumer consumer.Logs, -) (component.LogsProcessor, error) { - if f.createLogsProcessor == nil { - return nil, componenterror.ErrDataTypeIsNotSupported - } - return f.createLogsProcessor(ctx, set, cfg, nextConsumer) -} +// Deprecated: [v0.46.0] use component.NewProcessorFactory. +var NewFactory = component.NewProcessorFactory diff --git a/processor/processorhelper/factory_test.go b/processor/processorhelper/factory_test.go deleted file mode 100644 index a126096309f..00000000000 --- a/processor/processorhelper/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 processorhelper - -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.NewProcessorSettings(config.NewComponentID(typeStr)) - -func TestNewTrace(t *testing.T) { - factory := NewFactory( - typeStr, - defaultConfig) - assert.EqualValues(t, typeStr, factory.Type()) - assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) - _, err := factory.CreateTracesProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.Error(t, err) - _, err = factory.CreateMetricsProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.Error(t, err) - _, err = factory.CreateLogsProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.Error(t, err) -} - -func TestNewMetrics_WithConstructors(t *testing.T) { - factory := NewFactory( - typeStr, - defaultConfig, - WithTraces(createTracesProcessor), - WithMetrics(createMetricsProcessor), - WithLogs(createLogsProcessor)) - assert.EqualValues(t, typeStr, factory.Type()) - assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig()) - - _, err := factory.CreateTracesProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.NoError(t, err) - - _, err = factory.CreateMetricsProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.NoError(t, err) - - _, err = factory.CreateLogsProcessor(context.Background(), componenttest.NewNopProcessorCreateSettings(), &defaultCfg, nil) - assert.NoError(t, err) -} - -func defaultConfig() config.Processor { - return &defaultCfg -} - -func createTracesProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Traces) (component.TracesProcessor, error) { - return nil, nil -} - -func createMetricsProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Metrics) (component.MetricsProcessor, error) { - return nil, nil -} - -func createLogsProcessor(context.Context, component.ProcessorCreateSettings, config.Processor, consumer.Logs) (component.LogsProcessor, error) { - return nil, nil -} diff --git a/processor/processorhelper/logs_test.go b/processor/processorhelper/logs_test.go index db25c8a42ca..efe04e07fb5 100644 --- a/processor/processorhelper/logs_test.go +++ b/processor/processorhelper/logs_test.go @@ -31,7 +31,7 @@ import ( "go.opentelemetry.io/collector/model/pdata" ) -var testLogsCfg = config.NewProcessorSettings(config.NewComponentID(typeStr)) +var testLogsCfg = config.NewProcessorSettings(config.NewComponentID("test")) func TestNewLogsProcessor(t *testing.T) { lp, err := NewLogsProcessor(&testLogsCfg, consumertest.NewNop(), newTestLProcessor(nil)) diff --git a/processor/processorhelper/metrics_test.go b/processor/processorhelper/metrics_test.go index 66059283fc4..5e568037546 100644 --- a/processor/processorhelper/metrics_test.go +++ b/processor/processorhelper/metrics_test.go @@ -31,7 +31,7 @@ import ( "go.opentelemetry.io/collector/model/pdata" ) -var testMetricsCfg = config.NewProcessorSettings(config.NewComponentID(typeStr)) +var testMetricsCfg = config.NewProcessorSettings(config.NewComponentID("test")) func TestNewMetricsProcessor(t *testing.T) { mp, err := NewMetricsProcessor(&testMetricsCfg, consumertest.NewNop(), newTestMProcessor(nil)) diff --git a/processor/processorhelper/traces_test.go b/processor/processorhelper/traces_test.go index 2ed387136ea..de2cc9209ac 100644 --- a/processor/processorhelper/traces_test.go +++ b/processor/processorhelper/traces_test.go @@ -31,7 +31,7 @@ import ( "go.opentelemetry.io/collector/model/pdata" ) -var testTracesCfg = config.NewProcessorSettings(config.NewComponentID(typeStr)) +var testTracesCfg = config.NewProcessorSettings(config.NewComponentID("test")) func TestNewTracesProcessor(t *testing.T) { tp, err := NewTracesProcessor(&testTracesCfg, consumertest.NewNop(), newTestTProcessor(nil)) diff --git a/service/internal/builder/factories_test.go b/service/internal/builder/factories_test.go index f293c6ad619..30b463530bf 100644 --- a/service/internal/builder/factories_test.go +++ b/service/internal/builder/factories_test.go @@ -19,7 +19,6 @@ import ( "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/internal/testcomponents" - "go.opentelemetry.io/collector/processor/processorhelper" "go.opentelemetry.io/collector/receiver/receiverhelper" ) @@ -60,7 +59,7 @@ func newBadReceiverFactory() component.ReceiverFactory { } func newBadProcessorFactory() component.ProcessorFactory { - return processorhelper.NewFactory("bf", func() config.Processor { + return component.NewProcessorFactory("bf", func() config.Processor { return &struct { config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct }{