Skip to content

Commit

Permalink
Don't explicitly call Validate() on config in newProcessor
Browse files Browse the repository at this point in the history
  • Loading branch information
pmalek committed Oct 27, 2021
1 parent 122c38d commit ef1b2bc
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 132 deletions.
6 changes: 3 additions & 3 deletions processor/routingprocessor/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,17 @@ func createDefaultConfig() config.Processor {

func createTracesProcessor(_ context.Context, params component.ProcessorCreateSettings, cfg config.Processor, nextConsumer consumer.Traces) (component.TracesProcessor, error) {
warnIfNotLastInPipeline(nextConsumer, params.Logger)
return newProcessor(params.Logger, cfg)
return newProcessor(params.Logger, cfg), nil
}

func createMetricsProcessor(_ context.Context, params component.ProcessorCreateSettings, cfg config.Processor, nextConsumer consumer.Metrics) (component.MetricsProcessor, error) {
warnIfNotLastInPipeline(nextConsumer, params.Logger)
return newProcessor(params.Logger, cfg)
return newProcessor(params.Logger, cfg), nil
}

func createLogsProcessor(_ context.Context, params component.ProcessorCreateSettings, cfg config.Processor, nextConsumer consumer.Logs) (component.LogsProcessor, error) {
warnIfNotLastInPipeline(nextConsumer, params.Logger)
return newProcessor(params.Logger, cfg)
return newProcessor(params.Logger, cfg), nil
}

func warnIfNotLastInPipeline(nextConsumer interface{}, logger *zap.Logger) {
Expand Down
102 changes: 5 additions & 97 deletions processor/routingprocessor/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package routingprocessor

import (
"context"
"errors"
"testing"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -67,37 +66,12 @@ func TestProcessorGetsCreatedWithValidConfiguration(t *testing.T) {
}

func TestFailOnEmptyConfiguration(t *testing.T) {
// prepare
factory := NewFactory()
creationParams := componenttest.NewNopProcessorCreateSettings()
cfg := factory.CreateDefaultConfig()

t.Run("traces", func(t *testing.T) {
exp, err := factory.CreateTracesProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoTableItems)
assert.Nil(t, exp)
})

t.Run("metrics", func(t *testing.T) {
exp, err := factory.CreateMetricsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoTableItems)
assert.Nil(t, exp)
})

t.Run("logs", func(t *testing.T) {
exp, err := factory.CreateLogsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoTableItems)
assert.Nil(t, exp)
})
cfg := NewFactory().CreateDefaultConfig()
assert.ErrorIs(t, cfg.Validate(), errNoTableItems)
}

func TestProcessorFailsToBeCreatedWhenRouteHasNoExporters(t *testing.T) {
// prepare
factory := NewFactory()
creationParams := componenttest.NewNopProcessorCreateSettings()
cfg := &Config{
ProcessorSettings: config.NewProcessorSettings(config.NewComponentID(typeStr)),
DefaultExporters: []string{"otlp"},
Expand All @@ -108,66 +82,20 @@ func TestProcessorFailsToBeCreatedWhenRouteHasNoExporters(t *testing.T) {
},
},
}

t.Run("traces", func(t *testing.T) {
exp, err := factory.CreateTracesProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoExporters))
assert.Nil(t, exp)
})

t.Run("metrics", func(t *testing.T) {
exp, err := factory.CreateMetricsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoExporters))
assert.Nil(t, exp)
})

t.Run("logs", func(t *testing.T) {
exp, err := factory.CreateLogsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoExporters))
assert.Nil(t, exp)
})
assert.ErrorIs(t, cfg.Validate(), errNoExporters)
}

func TestProcessorFailsToBeCreatedWhenNoRoutesExist(t *testing.T) {
// prepare
factory := NewFactory()
creationParams := componenttest.NewNopProcessorCreateSettings()
cfg := &Config{
ProcessorSettings: config.NewProcessorSettings(config.NewComponentID(typeStr)),
DefaultExporters: []string{"otlp"},
FromAttribute: "X-Tenant",
Table: []RoutingTableItem{},
}

t.Run("traces", func(t *testing.T) {
exp, err := factory.CreateTracesProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoTableItems))
assert.Nil(t, exp)
})

t.Run("metrics", func(t *testing.T) {
exp, err := factory.CreateMetricsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoTableItems))
assert.Nil(t, exp)
})

t.Run("logs", func(t *testing.T) {
exp, err := factory.CreateLogsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.True(t, errors.Is(err, errNoTableItems))
assert.Nil(t, exp)
})
assert.ErrorIs(t, cfg.Validate(), errNoTableItems)
}

func TestProcessorFailsWithNoFromAttribute(t *testing.T) {
// prepare
factory := NewFactory()
creationParams := componenttest.NewNopProcessorCreateSettings()
cfg := &Config{
ProcessorSettings: config.NewProcessorSettings(config.NewComponentID(typeStr)),
DefaultExporters: []string{"otlp"},
Expand All @@ -178,27 +106,7 @@ func TestProcessorFailsWithNoFromAttribute(t *testing.T) {
},
},
}

t.Run("traces", func(t *testing.T) {
exp, err := factory.CreateTracesProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoMissingFromAttribute)
assert.Nil(t, exp)
})

t.Run("metrics", func(t *testing.T) {
exp, err := factory.CreateMetricsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoMissingFromAttribute)
assert.Nil(t, exp)
})

t.Run("logs", func(t *testing.T) {
exp, err := factory.CreateMetricsProcessor(context.Background(), creationParams, cfg, consumertest.NewNop())
// verify
assert.ErrorIs(t, err, errNoMissingFromAttribute)
assert.Nil(t, exp)
})
assert.ErrorIs(t, cfg.Validate(), errNoMissingFromAttribute)
}

func TestShouldNotFailWhenNextIsProcessor(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions processor/routingprocessor/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ type processorImp struct {
}

// newProcessor creates new processor
func newProcessor(logger *zap.Logger, cfg config.Processor) (*processorImp, error) {
func newProcessor(logger *zap.Logger, cfg config.Processor) *processorImp {
logger.Info("building processor")

oCfg := cfg.(*Config)

return &processorImp{
logger: logger,
router: newRouter(*oCfg, logger),
}, nil
}
}

func (e *processorImp) Start(_ context.Context, host component.Host) error {
Expand Down
Loading

0 comments on commit ef1b2bc

Please sign in to comment.