Skip to content

Commit

Permalink
Remove logs factories and merge with normal factories
Browse files Browse the repository at this point in the history
Signed-off-by: Bogdan Drutu <[email protected]>
  • Loading branch information
bogdandrutu committed Aug 24, 2020
1 parent 15ede2d commit a01cfa5
Show file tree
Hide file tree
Showing 21 changed files with 53 additions and 95 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

- Remove `reconnection_delay` from OpenCensus exporter #1516.
- Remove old receiver factories and receiver base factory #1583.
- Remove logs factories and merge with normal factories #1569.

## v0.8.0 Beta

Expand Down
11 changes: 11 additions & 0 deletions component/componenttest/example_factories.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,17 @@ func (f *MultiProtoReceiverFactory) CreateMetricsReceiver(
return nil, nil
}

// CreateMetricsReceiver creates a metrics receiver based on this config.
func (f *MultiProtoReceiverFactory) CreateLogsReceiver(
_ context.Context,
_ component.ReceiverCreateParams,
_ configmodels.Receiver,
_ consumer.LogsConsumer,
) (component.LogsReceiver, error) {
// Not used for this test, just return nil
return nil, nil
}

// ExampleExporter is for testing purposes. We are defining an example config and factory
// for "exampleexporter" exporter type.
type ExampleExporter struct {
Expand Down
5 changes: 0 additions & 5 deletions component/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,6 @@ type ExporterFactory interface {
// error will be returned instead.
CreateMetricsExporter(ctx context.Context, params ExporterCreateParams,
cfg configmodels.Exporter) (MetricsExporter, error)
}

// LogsExporterFactory can create a LogsExporter.
type LogsExporterFactory interface {
ExporterFactoryBase

// CreateLogsExporter creates an exporter based on the config.
// If the exporter type does not support logs or if the config is not valid
Expand Down
14 changes: 0 additions & 14 deletions component/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,6 @@ type ProcessorFactory interface {
// error will be returned instead.
CreateMetricsProcessor(ctx context.Context, params ProcessorCreateParams,
nextConsumer consumer.MetricsConsumer, cfg configmodels.Processor) (MetricsProcessor, error)
}

// LogsProcessorFactory can create LogsProcessor.
type LogsProcessorFactory interface {
Factory

// CreateDefaultConfig creates the default configuration for the Processor.
// This method can be called multiple times depending on the pipeline
// configuration and should not cause side-effects that prevent the creation
// of multiple instances of the Processor.
// The object returned by this method needs to pass the checks implemented by
// 'configcheck.ValidateConfig'. It is recommended to have such check in the
// tests of any implementation of the Factory interface.
CreateDefaultConfig() configmodels.Processor

// CreateLogsProcessor creates a processor based on the config.
// If the processor type does not support logs or if the config is not valid
Expand Down
22 changes: 2 additions & 20 deletions component/receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,28 +87,10 @@ type ReceiverFactory interface {
// error will be returned instead.
CreateMetricsReceiver(ctx context.Context, params ReceiverCreateParams,
cfg configmodels.Receiver, nextConsumer consumer.MetricsConsumer) (MetricsReceiver, error)
}

// LogsReceiverFactory can create a LogsReceiver.
type LogsReceiverFactory interface {
Factory

// CreateDefaultConfig creates the default configuration for the Receiver.
// This method can be called multiple times depending on the pipeline
// configuration and should not cause side-effects that prevent the creation
// of multiple instances of the Receiver.
// The object returned by this method needs to pass the checks implemented by
// 'configcheck.ValidateConfig'. It is recommended to have such check in the
// tests of any implementation of the Factory interface.
CreateDefaultConfig() configmodels.Receiver

// CreateLogsReceiver creates a log receiver based on this config.
// If the receiver type does not support the data type or if the config is not valid
// error will be returned instead.
CreateLogsReceiver(
ctx context.Context,
params ReceiverCreateParams,
cfg configmodels.Receiver,
nextConsumer consumer.LogsConsumer,
) (LogsReceiver, error)
CreateLogsReceiver(ctx context.Context, params ReceiverCreateParams,
cfg configmodels.Receiver, nextConsumer consumer.LogsConsumer) (LogsReceiver, error)
}
6 changes: 6 additions & 0 deletions component/receiver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ func (f *TestReceiverFactory) CreateMetricsReceiver(context.Context, ReceiverCre
return nil, nil
}

// CreateMetricsReceiver creates a metrics receiver based on this config.
func (f *TestReceiverFactory) CreateLogsReceiver(context.Context, ReceiverCreateParams, configmodels.Receiver, consumer.LogsConsumer) (LogsReceiver, error) {
// Not used for this test, just return nil
return nil, nil
}

func TestBuildReceivers(t *testing.T) {
type testCase struct {
in []ReceiverFactory
Expand Down
2 changes: 0 additions & 2 deletions exporter/exporterhelper/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ type factory struct {
createLogsExporter CreateLogsExporter
}

var _ component.LogsExporterFactory = new(factory)

// WithTraces overrides the default "error not supported" implementation for CreateTraceReceiver.
func WithTraces(createTraceExporter CreateTraceExporter) FactoryOption {
return func(o *factory) {
Expand Down
6 changes: 2 additions & 4 deletions exporter/exporterhelper/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ func TestNewFactory(t *testing.T) {
assert.Equal(t, configerror.ErrDataTypeIsNotSupported, err)
_, err = factory.CreateMetricsExporter(context.Background(), component.ExporterCreateParams{}, defaultCfg)
assert.Equal(t, configerror.ErrDataTypeIsNotSupported, err)
lfactory := factory.(component.LogsExporterFactory)
_, err = lfactory.CreateLogsExporter(context.Background(), component.ExporterCreateParams{}, defaultCfg)
_, err = factory.CreateLogsExporter(context.Background(), component.ExporterCreateParams{}, defaultCfg)
assert.Equal(t, configerror.ErrDataTypeIsNotSupported, err)
}

Expand All @@ -80,8 +79,7 @@ func TestNewFactory_WithConstructors(t *testing.T) {
assert.NoError(t, err)
assert.Same(t, nopMetricsExporter, me)

lfactory := factory.(component.LogsExporterFactory)
le, err := lfactory.CreateLogsExporter(context.Background(), component.ExporterCreateParams{}, defaultCfg)
le, err := factory.CreateLogsExporter(context.Background(), component.ExporterCreateParams{}, defaultCfg)
assert.NoError(t, err)
assert.Same(t, nopLogsExporter, le)
}
Expand Down
2 changes: 1 addition & 1 deletion exporter/loggingexporter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func TestCreateTraceExporter(t *testing.T) {
}

func TestCreateLogsExporter(t *testing.T) {
factory := NewFactory().(component.LogsExporterFactory)
factory := NewFactory()
cfg := factory.CreateDefaultConfig()

te, err := factory.CreateLogsExporter(context.Background(), component.ExporterCreateParams{Logger: zap.NewNop()}, cfg)
Expand Down
2 changes: 1 addition & 1 deletion exporter/otlpexporter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ func TestCreateLogsExporter(t *testing.T) {
cfg.GRPCClientSettings.Endpoint = testutil.GetAvailableLocalAddress(t)

creationParams := component.ExporterCreateParams{Logger: zap.NewNop()}
oexp, err := factory.(component.LogsExporterFactory).CreateLogsExporter(context.Background(), creationParams, cfg)
oexp, err := factory.CreateLogsExporter(context.Background(), creationParams, cfg)
require.Nil(t, err)
require.NotNil(t, oexp)
}
2 changes: 1 addition & 1 deletion exporter/otlpexporter/otlp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ func TestSendLogData(t *testing.T) {
defer rcv.srv.GracefulStop()

// Start an OTLP exporter and point to the receiver.
factory := NewFactory().(component.LogsExporterFactory)
factory := NewFactory()
cfg := factory.CreateDefaultConfig().(*Config)
cfg.GRPCClientSettings = configgrpc.GRPCClientSettings{
Endpoint: ln.Addr().String(),
Expand Down
5 changes: 2 additions & 3 deletions processor/memorylimiter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ func TestCreateProcessor(t *testing.T) {
assert.Nil(t, mp)
assert.Error(t, err, "created processor with invalid settings")

lfactory := factory.(component.LogsProcessorFactory)
lp, err := lfactory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{Logger: zap.NewNop()}, cfg, exportertest.NewNopLogsExporter())
lp, err := factory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{Logger: zap.NewNop()}, cfg, exportertest.NewNopLogsExporter())
assert.Nil(t, lp)
assert.Error(t, err, "created processor with invalid settings")

Expand All @@ -74,7 +73,7 @@ func TestCreateProcessor(t *testing.T) {
assert.NotNil(t, mp)
assert.NoError(t, mp.Shutdown(context.Background()))

lp, err = lfactory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{Logger: zap.NewNop()}, cfg, exportertest.NewNopLogsExporter())
lp, err = factory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{Logger: zap.NewNop()}, cfg, exportertest.NewNopLogsExporter())
assert.NoError(t, err)
assert.NotNil(t, lp)
assert.NoError(t, lp.Shutdown(context.Background()))
Expand Down
2 changes: 0 additions & 2 deletions processor/processorhelper/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ type factory struct {
createLogsProcessor CreateLogsProcessor
}

var _ component.LogsProcessorFactory = new(factory)

// WithCustomUnmarshaler implements component.ConfigUnmarshaler.
func WithCustomUnmarshaler(customUnmarshaler component.CustomUnmarshaler) FactoryOption {
return func(o *factory) {
Expand Down
7 changes: 2 additions & 5 deletions processor/processorhelper/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ func TestNewTrace(t *testing.T) {
assert.Error(t, err)
_, err = factory.CreateMetricsProcessor(context.Background(), component.ProcessorCreateParams{}, nil, defaultCfg)
assert.Error(t, err)

lfactory := factory.(component.LogsProcessorFactory)
_, err = lfactory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{}, defaultCfg, nil)
_, err = factory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{}, defaultCfg, nil)
assert.Error(t, err)
}

Expand All @@ -73,8 +71,7 @@ func TestNewMetrics_WithConstructors(t *testing.T) {
_, err = factory.CreateMetricsProcessor(context.Background(), component.ProcessorCreateParams{}, nil, defaultCfg)
assert.NoError(t, err)

lfactory := factory.(component.LogsProcessorFactory)
_, err = lfactory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{}, defaultCfg, nil)
_, err = factory.CreateLogsProcessor(context.Background(), component.ProcessorCreateParams{}, defaultCfg, nil)
assert.NoError(t, err)
}

Expand Down
2 changes: 1 addition & 1 deletion receiver/fluentforwardreceiver/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func TestCreateDefaultConfig(t *testing.T) {
}

func TestCreateReceiver(t *testing.T) {
factory := NewFactory().(component.LogsReceiverFactory)
factory := NewFactory()
cfg := factory.CreateDefaultConfig().(*Config)
cfg.ListenAddress = "localhost:0" // Endpoint is required, not going to be used here.

Expand Down
2 changes: 1 addition & 1 deletion receiver/otlpreceiver/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ func TestCreateLogReceiver(t *testing.T) {
creationParams := component.ReceiverCreateParams{Logger: zap.NewNop()}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mr, err := factory.(component.LogsReceiverFactory).CreateLogsReceiver(ctx, creationParams, tt.cfg, tt.sink)
mr, err := factory.CreateLogsReceiver(ctx, creationParams, tt.cfg, tt.sink)
if tt.wantErr {
assert.Error(t, err)
return
Expand Down
6 changes: 2 additions & 4 deletions receiver/receiverhelper/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ func TestNewFactory(t *testing.T) {
assert.Error(t, err)
_, err = factory.CreateMetricsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
assert.Error(t, err)
lfactory := factory.(component.LogsReceiverFactory)
_, err = lfactory.CreateLogsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
_, err = factory.CreateLogsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
assert.Error(t, err)
}

Expand All @@ -72,8 +71,7 @@ func TestNewFactory_WithConstructors(t *testing.T) {
_, err = factory.CreateMetricsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
assert.NoError(t, err)

lfactory := factory.(component.LogsReceiverFactory)
_, err = lfactory.CreateLogsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
_, err = factory.CreateLogsReceiver(context.Background(), component.ReceiverCreateParams{}, defaultCfg, nil)
assert.NoError(t, err)
}

Expand Down
2 changes: 1 addition & 1 deletion service/builder/exporters_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ func createLogsExporter(
logger *zap.Logger,
cfg configmodels.Exporter,
) (component.LogsExporter, error) {
factory, ok := factoryBase.(component.LogsExporterFactory)
factory, ok := factoryBase.(component.ExporterFactory)
if !ok {
return nil, fmt.Errorf("exporter %q does not support data type %q", factoryBase.Type(), configmodels.LogsDataType)
}
Expand Down
2 changes: 1 addition & 1 deletion service/builder/pipelines_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ func createLogsProcessor(
cfg configmodels.Processor,
nextConsumer consumer.LogsConsumer,
) (component.LogsProcessor, error) {
factory, ok := factoryBase.(component.LogsProcessorFactory)
factory, ok := factoryBase.(component.ProcessorFactory)
if !ok {
return nil, fmt.Errorf("processor %q does support data type %q",
cfg.Name(), configmodels.LogsDataType)
Expand Down
2 changes: 1 addition & 1 deletion service/builder/receivers_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ func createLogsReceiver(
cfg configmodels.Receiver,
nextConsumer consumer.LogsConsumer,
) (component.LogsReceiver, error) {
factory, ok := factoryBase.(component.LogsReceiverFactory)
factory, ok := factoryBase.(component.ReceiverFactory)
if !ok {
return nil, fmt.Errorf("receiver %q does support data type %q",
cfg.Name(), configmodels.LogsDataType)
Expand Down
45 changes: 17 additions & 28 deletions service/builder/receivers_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
"go.opentelemetry.io/collector/consumer/pdatautil"
"go.opentelemetry.io/collector/internal/data/testdata"
"go.opentelemetry.io/collector/processor/attributesprocessor"
"go.opentelemetry.io/collector/receiver/receiverhelper"
"go.opentelemetry.io/collector/receiver/zipkinreceiver"
)

Expand Down Expand Up @@ -326,7 +327,7 @@ func TestReceiversBuilder_ErrorOnNilReceiver(t *testing.T) {
factories, err := componenttest.ExampleComponents()
assert.NoError(t, err)

bf := &badReceiverFactory{}
bf := NewBadReceiverFactory()
factories.Receivers[bf.Type()] = bf

cfg, err := configtest.LoadConfigFile(t, "testdata/bad_receiver_factory.yaml", factories)
Expand Down Expand Up @@ -405,33 +406,10 @@ func TestReceiversBuilder_InternalToOcTraceConverter(t *testing.T) {
assert.NotNil(t, receiver)
}

// badReceiverFactory is a factory that returns no error but returns a nil object.
type badReceiverFactory struct{}

func (b *badReceiverFactory) Type() configmodels.Type {
return "bf"
}

func (b *badReceiverFactory) CreateDefaultConfig() configmodels.Receiver {
return &configmodels.ReceiverSettings{}
}

func (b *badReceiverFactory) CreateTraceReceiver(
context.Context,
component.ReceiverCreateParams,
configmodels.Receiver,
consumer.TraceConsumer,
) (component.TraceReceiver, error) {
return nil, nil
}

func (b *badReceiverFactory) CreateMetricsReceiver(
context.Context,
component.ReceiverCreateParams,
configmodels.Receiver,
consumer.MetricsConsumer,
) (component.MetricsReceiver, error) {
return nil, nil
func NewBadReceiverFactory() component.ReceiverFactory {
return receiverhelper.NewFactory("bf", func() configmodels.Receiver {
return &configmodels.ReceiverSettings{}
})
}

// newStyleReceiverFactory defines FactoryV2 interface
Expand All @@ -441,6 +419,8 @@ func (b *newStyleReceiverFactory) Type() configmodels.Type {
return "newstylereceiver"
}

var _ component.ReceiverFactory = (*newStyleReceiverFactory)(nil)

func (b *newStyleReceiverFactory) CreateDefaultConfig() configmodels.Receiver {
return &configmodels.ReceiverSettings{}
}
Expand All @@ -462,3 +442,12 @@ func (b *newStyleReceiverFactory) CreateMetricsReceiver(
) (component.MetricsReceiver, error) {
return &componenttest.ExampleReceiverProducer{}, nil
}

func (b *newStyleReceiverFactory) CreateLogsReceiver(
_ context.Context,
_ component.ReceiverCreateParams,
_ configmodels.Receiver,
_ consumer.LogsConsumer,
) (component.LogsReceiver, error) {
return &componenttest.ExampleReceiverProducer{}, nil
}

0 comments on commit a01cfa5

Please sign in to comment.