add stability level to component factory (#5580)
* add stability level to component factory * update docstring * use a map instead of a single stability level * apply review feedback * add tests * fix impi, add changelog * add processors, receivers * fix inconsistency * set noop to stable * update calls in deprecated func
This commit is contained in:
parent
16aa10d582
commit
9f0d97ca57
15
CHANGELOG.md
15
CHANGELOG.md
|
@ -11,6 +11,21 @@
|
||||||
### 🚩 Deprecations 🚩
|
### 🚩 Deprecations 🚩
|
||||||
|
|
||||||
- Deprecate `service.ConfigServiceTelemetry`, `service.ConfigServiceTelemetryLogs`, and `service.ConfigServiceTelemetryMetrics` (#5565)
|
- Deprecate `service.ConfigServiceTelemetry`, `service.ConfigServiceTelemetryLogs`, and `service.ConfigServiceTelemetryMetrics` (#5565)
|
||||||
|
- Deprecate the following component functions to ensure a stability level is set (#5580):
|
||||||
|
- `component.WithTracesExporter` -> `component.WithTracesExporterAndStabilityLevel`
|
||||||
|
- `component.WithMetricsExporter` -> `component.WithMetricsExporterAndStabilityLevel`
|
||||||
|
- `component.WithLogsExporter` -> `component.WithLogsExporterAndStabilityLevel`
|
||||||
|
- `component.WithTracesReceiver` -> `component.WithTracesReceiverAndStabilityLevel`
|
||||||
|
- `component.WithMetricsReceiver` -> `component.WithMetricsReceiverAndStabilityLevel`
|
||||||
|
- `component.WithLogsReceiver` -> `component.WithLogsReceiverAndStabilityLevel`
|
||||||
|
- `component.WithTracesProcessor` -> `component.WithTracesProcessorAndStabilityLevel`
|
||||||
|
- `component.WithMetricsProcessor` -> `component.WithMetricsProcessorAndStabilityLevel`
|
||||||
|
- `component.WithLogsProcessor` -> `component.WithLogsProcessorAndStabilityLevel`
|
||||||
|
|
||||||
|
### 💡 Enhancements 💡
|
||||||
|
|
||||||
|
- Components stability levels are now logged. By default components which haven't defined their stability levels, or which are
|
||||||
|
unmaintained, deprecated or in development will log a message. (#5580)
|
||||||
|
|
||||||
### 💡 Enhancements 💡
|
### 💡 Enhancements 💡
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,40 @@ const (
|
||||||
KindExtension
|
KindExtension
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// StabilityLevel represents the stability level of the component created by the factory.
|
||||||
|
// The stability level is used to determine if the component should be used in production
|
||||||
|
// or not. For more details see:
|
||||||
|
// https://github.com/open-telemetry/opentelemetry-collector#stability-levels
|
||||||
|
type StabilityLevel int
|
||||||
|
|
||||||
|
const (
|
||||||
|
StabilityLevelUndefined = iota // skip 0, start types from 1.
|
||||||
|
StabilityLevelUnmaintained
|
||||||
|
StabilityLevelDeprecated
|
||||||
|
StabilityLevelInDevelopment
|
||||||
|
StabilityLevelAlpha
|
||||||
|
StabilityLevelBeta
|
||||||
|
StabilityLevelStable
|
||||||
|
)
|
||||||
|
|
||||||
|
func (sl StabilityLevel) String() string {
|
||||||
|
switch sl {
|
||||||
|
case StabilityLevelUnmaintained:
|
||||||
|
return "unmaintained"
|
||||||
|
case StabilityLevelDeprecated:
|
||||||
|
return "deprecated"
|
||||||
|
case StabilityLevelInDevelopment:
|
||||||
|
return "in development"
|
||||||
|
case StabilityLevelAlpha:
|
||||||
|
return "alpha"
|
||||||
|
case StabilityLevelBeta:
|
||||||
|
return "beta"
|
||||||
|
case StabilityLevelStable:
|
||||||
|
return "stable"
|
||||||
|
}
|
||||||
|
return "undefined"
|
||||||
|
}
|
||||||
|
|
||||||
// Factory is implemented by all component factories.
|
// Factory is implemented by all component factories.
|
||||||
//
|
//
|
||||||
// This interface cannot be directly implemented. Implementations must
|
// This interface cannot be directly implemented. Implementations must
|
||||||
|
@ -112,11 +146,15 @@ type Factory interface {
|
||||||
// Type gets the type of the component created by this factory.
|
// Type gets the type of the component created by this factory.
|
||||||
Type() config.Type
|
Type() config.Type
|
||||||
|
|
||||||
|
// StabilityLevel gets the stability level of the component.
|
||||||
|
StabilityLevel(config.DataType) StabilityLevel
|
||||||
|
|
||||||
unexportedFactoryFunc()
|
unexportedFactoryFunc()
|
||||||
}
|
}
|
||||||
|
|
||||||
type baseFactory struct {
|
type baseFactory struct {
|
||||||
cfgType config.Type
|
cfgType config.Type
|
||||||
|
stability map[config.Type]StabilityLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
func (baseFactory) unexportedFactoryFunc() {}
|
func (baseFactory) unexportedFactoryFunc() {}
|
||||||
|
@ -124,3 +162,10 @@ func (baseFactory) unexportedFactoryFunc() {}
|
||||||
func (bf baseFactory) Type() config.Type {
|
func (bf baseFactory) Type() config.Type {
|
||||||
return bf.cfgType
|
return bf.cfgType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bf baseFactory) StabilityLevel(dt config.DataType) StabilityLevel {
|
||||||
|
if val, ok := bf.stability[dt]; ok {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
return StabilityLevelUndefined
|
||||||
|
}
|
||||||
|
|
|
@ -43,9 +43,10 @@ func NewNopExporterFactory() component.ExporterFactory {
|
||||||
ExporterSettings: config.NewExporterSettings(config.NewComponentID("nop")),
|
ExporterSettings: config.NewExporterSettings(config.NewComponentID("nop")),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
component.WithTracesExporter(createTracesExporter),
|
component.WithTracesExporterAndStabilityLevel(createTracesExporter, component.StabilityLevelStable),
|
||||||
component.WithMetricsExporter(createMetricsExporter),
|
component.WithMetricsExporterAndStabilityLevel(createMetricsExporter, component.StabilityLevelStable),
|
||||||
component.WithLogsExporter(createLogsExporter))
|
component.WithLogsExporterAndStabilityLevel(createLogsExporter, component.StabilityLevelStable),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createTracesExporter(context.Context, component.ExporterCreateSettings, config.Exporter) (component.TracesExporter, error) {
|
func createTracesExporter(context.Context, component.ExporterCreateSettings, config.Exporter) (component.TracesExporter, error) {
|
||||||
|
|
|
@ -44,9 +44,9 @@ func NewNopProcessorFactory() component.ProcessorFactory {
|
||||||
ProcessorSettings: config.NewProcessorSettings(config.NewComponentID("nop")),
|
ProcessorSettings: config.NewProcessorSettings(config.NewComponentID("nop")),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
component.WithTracesProcessor(createTracesProcessor),
|
component.WithTracesProcessorAndStabilityLevel(createTracesProcessor, component.StabilityLevelStable),
|
||||||
component.WithMetricsProcessor(createMetricsProcessor),
|
component.WithMetricsProcessorAndStabilityLevel(createMetricsProcessor, component.StabilityLevelStable),
|
||||||
component.WithLogsProcessor(createLogsProcessor),
|
component.WithLogsProcessorAndStabilityLevel(createLogsProcessor, component.StabilityLevelStable),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,9 +43,9 @@ func NewNopReceiverFactory() component.ReceiverFactory {
|
||||||
ReceiverSettings: config.NewReceiverSettings(config.NewComponentID("nop")),
|
ReceiverSettings: config.NewReceiverSettings(config.NewComponentID("nop")),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
component.WithTracesReceiver(createTracesReceiver),
|
component.WithTracesReceiverAndStabilityLevel(createTracesReceiver, component.StabilityLevelStable),
|
||||||
component.WithMetricsReceiver(createMetricsReceiver),
|
component.WithMetricsReceiverAndStabilityLevel(createMetricsReceiver, component.StabilityLevelStable),
|
||||||
component.WithLogsReceiver(createLogsReceiver))
|
component.WithLogsReceiverAndStabilityLevel(createLogsReceiver, component.StabilityLevelStable))
|
||||||
}
|
}
|
||||||
|
|
||||||
func 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) {
|
||||||
|
|
|
@ -149,22 +149,43 @@ type exporterFactory struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithTracesExporter overrides the default "error not supported" implementation for CreateTracesExporter.
|
// WithTracesExporter overrides the default "error not supported" implementation for CreateTracesExporter.
|
||||||
|
// Deprecated: [v0.55.0] Use WithTracesExporterAndStabilityLevel instead.
|
||||||
func WithTracesExporter(createTracesExporter CreateTracesExporterFunc) ExporterFactoryOption {
|
func WithTracesExporter(createTracesExporter CreateTracesExporterFunc) ExporterFactoryOption {
|
||||||
|
return WithTracesExporterAndStabilityLevel(createTracesExporter, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithTracesExporterAndStabilityLevel overrides the default "error not supported" implementation for CreateTracesExporter and the default "undefined" stability level.
|
||||||
|
func WithTracesExporterAndStabilityLevel(createTracesExporter CreateTracesExporterFunc, sl StabilityLevel) ExporterFactoryOption {
|
||||||
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
||||||
|
o.stability[config.TracesDataType] = sl
|
||||||
o.CreateTracesExporterFunc = createTracesExporter
|
o.CreateTracesExporterFunc = createTracesExporter
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithMetricsExporter overrides the default "error not supported" implementation for CreateMetricsExporter.
|
// WithMetricsExporter overrides the default "error not supported" implementation for CreateMetricsExporter.
|
||||||
|
// Deprecated: [v0.55.0] Use WithMetricsExporterAndStabilityLevel instead.
|
||||||
func WithMetricsExporter(createMetricsExporter CreateMetricsExporterFunc) ExporterFactoryOption {
|
func WithMetricsExporter(createMetricsExporter CreateMetricsExporterFunc) ExporterFactoryOption {
|
||||||
|
return WithMetricsExporterAndStabilityLevel(createMetricsExporter, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithMetricsExporterAndStabilityLevel overrides the default "error not supported" implementation for CreateMetricsExporter and the default "undefined" stability level.
|
||||||
|
func WithMetricsExporterAndStabilityLevel(createMetricsExporter CreateMetricsExporterFunc, sl StabilityLevel) ExporterFactoryOption {
|
||||||
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
||||||
|
o.stability[config.MetricsDataType] = sl
|
||||||
o.CreateMetricsExporterFunc = createMetricsExporter
|
o.CreateMetricsExporterFunc = createMetricsExporter
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithLogsExporter overrides the default "error not supported" implementation for CreateLogsExporter.
|
// WithLogsExporter overrides the default "error not supported" implementation for CreateLogsExporter.
|
||||||
|
// Deprecated: [v0.55.0] Use WithLogsExporterAndStabilityLevel instead.
|
||||||
func WithLogsExporter(createLogsExporter CreateLogsExporterFunc) ExporterFactoryOption {
|
func WithLogsExporter(createLogsExporter CreateLogsExporterFunc) ExporterFactoryOption {
|
||||||
|
return WithLogsExporterAndStabilityLevel(createLogsExporter, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithLogsExporterAndStabilityLevel overrides the default "error not supported" implementation for CreateLogsExporter and the default "undefined" stability level.
|
||||||
|
func WithLogsExporterAndStabilityLevel(createLogsExporter CreateLogsExporterFunc, sl StabilityLevel) ExporterFactoryOption {
|
||||||
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
return exporterFactoryOptionFunc(func(o *exporterFactory) {
|
||||||
|
o.stability[config.LogsDataType] = sl
|
||||||
o.CreateLogsExporterFunc = createLogsExporter
|
o.CreateLogsExporterFunc = createLogsExporter
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -172,7 +193,7 @@ func WithLogsExporter(createLogsExporter CreateLogsExporterFunc) ExporterFactory
|
||||||
// NewExporterFactory returns a ExporterFactory.
|
// NewExporterFactory returns a ExporterFactory.
|
||||||
func NewExporterFactory(cfgType config.Type, createDefaultConfig ExporterCreateDefaultConfigFunc, options ...ExporterFactoryOption) ExporterFactory {
|
func NewExporterFactory(cfgType config.Type, createDefaultConfig ExporterCreateDefaultConfigFunc, options ...ExporterFactoryOption) ExporterFactory {
|
||||||
f := &exporterFactory{
|
f := &exporterFactory{
|
||||||
baseFactory: baseFactory{cfgType: cfgType},
|
baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)},
|
||||||
ExporterCreateDefaultConfigFunc: createDefaultConfig,
|
ExporterCreateDefaultConfigFunc: createDefaultConfig,
|
||||||
}
|
}
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
|
|
|
@ -61,6 +61,32 @@ func TestNewExporterFactory_WithOptions(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewExporterFactory_WithStabilityLevel(t *testing.T) {
|
||||||
|
const typeStr = "test"
|
||||||
|
defaultCfg := config.NewExporterSettings(config.NewComponentID(typeStr))
|
||||||
|
factory := NewExporterFactory(
|
||||||
|
typeStr,
|
||||||
|
func() config.Exporter { return &defaultCfg },
|
||||||
|
WithTracesExporterAndStabilityLevel(createTracesExporter, StabilityLevelInDevelopment),
|
||||||
|
WithMetricsExporterAndStabilityLevel(createMetricsExporter, StabilityLevelAlpha),
|
||||||
|
WithLogsExporterAndStabilityLevel(createLogsExporter, StabilityLevelDeprecated))
|
||||||
|
|
||||||
|
assert.EqualValues(t, typeStr, factory.Type())
|
||||||
|
assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig())
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelInDevelopment, factory.StabilityLevel(config.TracesDataType))
|
||||||
|
_, err := factory.CreateTracesExporter(context.Background(), ExporterCreateSettings{}, &defaultCfg)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelAlpha, factory.StabilityLevel(config.MetricsDataType))
|
||||||
|
_, err = factory.CreateMetricsExporter(context.Background(), ExporterCreateSettings{}, &defaultCfg)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelDeprecated, factory.StabilityLevel(config.LogsDataType))
|
||||||
|
_, err = factory.CreateLogsExporter(context.Background(), ExporterCreateSettings{}, &defaultCfg)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func createTracesExporter(context.Context, ExporterCreateSettings, config.Exporter) (TracesExporter, error) {
|
func createTracesExporter(context.Context, ExporterCreateSettings, config.Exporter) (TracesExporter, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,22 +179,43 @@ type processorFactory struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithTracesProcessor overrides the default "error not supported" implementation for CreateTracesProcessor.
|
// WithTracesProcessor overrides the default "error not supported" implementation for CreateTracesProcessor.
|
||||||
|
// Deprecated: [v0.55.0] Use WithTracesProcessorAndStabilityLevel instead.
|
||||||
func WithTracesProcessor(createTracesProcessor CreateTracesProcessorFunc) ProcessorFactoryOption {
|
func WithTracesProcessor(createTracesProcessor CreateTracesProcessorFunc) ProcessorFactoryOption {
|
||||||
|
return WithTracesProcessorAndStabilityLevel(createTracesProcessor, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithTracesProcessorAndStabilityLevel overrides the default "error not supported" implementation for CreateTracesProcessor and the default "undefined" stability level.
|
||||||
|
func WithTracesProcessorAndStabilityLevel(createTracesProcessor CreateTracesProcessorFunc, sl StabilityLevel) ProcessorFactoryOption {
|
||||||
return processorFactoryOptionFunc(func(o *processorFactory) {
|
return processorFactoryOptionFunc(func(o *processorFactory) {
|
||||||
|
o.stability[config.TracesDataType] = sl
|
||||||
o.CreateTracesProcessorFunc = createTracesProcessor
|
o.CreateTracesProcessorFunc = createTracesProcessor
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithMetricsProcessor overrides the default "error not supported" implementation for CreateMetricsProcessor.
|
// WithMetricsProcessor overrides the default "error not supported" implementation for CreateMetricsProcessor.
|
||||||
|
// Deprecated: [v0.55.0] Use WithMetricsProcessorAndStabilityLevel instead.
|
||||||
func WithMetricsProcessor(createMetricsProcessor CreateMetricsProcessorFunc) ProcessorFactoryOption {
|
func WithMetricsProcessor(createMetricsProcessor CreateMetricsProcessorFunc) ProcessorFactoryOption {
|
||||||
|
return WithMetricsProcessorAndStabilityLevel(createMetricsProcessor, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithMetricsProcessorAndStabilityLevel overrides the default "error not supported" implementation for CreateMetricsProcessor and the default "undefined" stability level.
|
||||||
|
func WithMetricsProcessorAndStabilityLevel(createMetricsProcessor CreateMetricsProcessorFunc, sl StabilityLevel) ProcessorFactoryOption {
|
||||||
return processorFactoryOptionFunc(func(o *processorFactory) {
|
return processorFactoryOptionFunc(func(o *processorFactory) {
|
||||||
|
o.stability[config.MetricsDataType] = sl
|
||||||
o.CreateMetricsProcessorFunc = createMetricsProcessor
|
o.CreateMetricsProcessorFunc = createMetricsProcessor
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithLogsProcessor overrides the default "error not supported" implementation for CreateLogsProcessor.
|
// WithLogsProcessor overrides the default "error not supported" implementation for CreateLogsProcessor.
|
||||||
|
// Deprecated: [v0.55.0] Use WithLogsProcessorAndStabilityLevel instead.
|
||||||
func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc) ProcessorFactoryOption {
|
func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc) ProcessorFactoryOption {
|
||||||
|
return WithLogsProcessorAndStabilityLevel(createLogsProcessor, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithLogsProcessorAndStabilityLevel overrides the default "error not supported" implementation for CreateLogsProcessor and the default "undefined" stability level.
|
||||||
|
func WithLogsProcessorAndStabilityLevel(createLogsProcessor CreateLogsProcessorFunc, sl StabilityLevel) ProcessorFactoryOption {
|
||||||
return processorFactoryOptionFunc(func(o *processorFactory) {
|
return processorFactoryOptionFunc(func(o *processorFactory) {
|
||||||
|
o.stability[config.LogsDataType] = sl
|
||||||
o.CreateLogsProcessorFunc = createLogsProcessor
|
o.CreateLogsProcessorFunc = createLogsProcessor
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -202,7 +223,7 @@ func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc) ProcessorFac
|
||||||
// NewProcessorFactory returns a ProcessorFactory.
|
// NewProcessorFactory returns a ProcessorFactory.
|
||||||
func NewProcessorFactory(cfgType config.Type, createDefaultConfig ProcessorCreateDefaultConfigFunc, options ...ProcessorFactoryOption) ProcessorFactory {
|
func NewProcessorFactory(cfgType config.Type, createDefaultConfig ProcessorCreateDefaultConfigFunc, options ...ProcessorFactoryOption) ProcessorFactory {
|
||||||
f := &processorFactory{
|
f := &processorFactory{
|
||||||
baseFactory: baseFactory{cfgType: cfgType},
|
baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)},
|
||||||
ProcessorCreateDefaultConfigFunc: createDefaultConfig,
|
ProcessorCreateDefaultConfigFunc: createDefaultConfig,
|
||||||
}
|
}
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
|
|
|
@ -62,6 +62,31 @@ func TestNewProcessorFactory_WithOptions(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewProcessorFactory_WithStabilityLevel(t *testing.T) {
|
||||||
|
const typeStr = "test"
|
||||||
|
defaultCfg := config.NewProcessorSettings(config.NewComponentID(typeStr))
|
||||||
|
factory := NewProcessorFactory(
|
||||||
|
typeStr,
|
||||||
|
func() config.Processor { return &defaultCfg },
|
||||||
|
WithTracesProcessorAndStabilityLevel(createTracesProcessor, StabilityLevelAlpha),
|
||||||
|
WithMetricsProcessorAndStabilityLevel(createMetricsProcessor, StabilityLevelBeta),
|
||||||
|
WithLogsProcessorAndStabilityLevel(createLogsProcessor, StabilityLevelUnmaintained))
|
||||||
|
assert.EqualValues(t, typeStr, factory.Type())
|
||||||
|
assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig())
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelAlpha, factory.StabilityLevel(config.TracesDataType))
|
||||||
|
_, err := factory.CreateTracesProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelBeta, factory.StabilityLevel(config.MetricsDataType))
|
||||||
|
_, err = factory.CreateMetricsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelUnmaintained, factory.StabilityLevel(config.LogsDataType))
|
||||||
|
_, err = factory.CreateLogsProcessor(context.Background(), ProcessorCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func createTracesProcessor(context.Context, ProcessorCreateSettings, config.Processor, consumer.Traces) (TracesProcessor, error) {
|
func createTracesProcessor(context.Context, ProcessorCreateSettings, config.Processor, consumer.Traces) (TracesProcessor, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,22 +211,43 @@ type receiverFactory struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithTracesReceiver overrides the default "error not supported" implementation for CreateTracesReceiver.
|
// WithTracesReceiver overrides the default "error not supported" implementation for CreateTracesReceiver.
|
||||||
|
// Deprecated: [v0.55.0] Use WithTracesReceiverAndStabilityLevel instead.
|
||||||
func WithTracesReceiver(createTracesReceiver CreateTracesReceiverFunc) ReceiverFactoryOption {
|
func WithTracesReceiver(createTracesReceiver CreateTracesReceiverFunc) ReceiverFactoryOption {
|
||||||
|
return WithTracesReceiverAndStabilityLevel(createTracesReceiver, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithTracesReceiverAndStabilityLevel overrides the default "error not supported" implementation for CreateTracesReceiver and the default "undefined" stability level.
|
||||||
|
func WithTracesReceiverAndStabilityLevel(createTracesReceiver CreateTracesReceiverFunc, sl StabilityLevel) ReceiverFactoryOption {
|
||||||
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
||||||
|
o.stability[config.TracesDataType] = sl
|
||||||
o.CreateTracesReceiverFunc = createTracesReceiver
|
o.CreateTracesReceiverFunc = createTracesReceiver
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithMetricsReceiver overrides the default "error not supported" implementation for CreateMetricsReceiver.
|
// WithMetricsReceiver overrides the default "error not supported" implementation for CreateMetricsReceiver.
|
||||||
|
// Deprecated: [v0.55.0] Use WithMetricsReceiverAndStabilityLevel instead.
|
||||||
func WithMetricsReceiver(createMetricsReceiver CreateMetricsReceiverFunc) ReceiverFactoryOption {
|
func WithMetricsReceiver(createMetricsReceiver CreateMetricsReceiverFunc) ReceiverFactoryOption {
|
||||||
|
return WithMetricsReceiverAndStabilityLevel(createMetricsReceiver, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithMetricsReceiverAndStabilityLevel overrides the default "error not supported" implementation for CreateMetricsReceiver and the default "undefined" stability level.
|
||||||
|
func WithMetricsReceiverAndStabilityLevel(createMetricsReceiver CreateMetricsReceiverFunc, sl StabilityLevel) ReceiverFactoryOption {
|
||||||
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
||||||
|
o.stability[config.MetricsDataType] = sl
|
||||||
o.CreateMetricsReceiverFunc = createMetricsReceiver
|
o.CreateMetricsReceiverFunc = createMetricsReceiver
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithLogsReceiver overrides the default "error not supported" implementation for CreateLogsReceiver.
|
// WithLogsReceiver overrides the default "error not supported" implementation for CreateLogsReceiver.
|
||||||
|
// Deprecated: [v0.55.0] Use WithLogsReceiverAndStabilityLevel instead.
|
||||||
func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc) ReceiverFactoryOption {
|
func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc) ReceiverFactoryOption {
|
||||||
|
return WithLogsReceiverAndStabilityLevel(createLogsReceiver, StabilityLevelUndefined)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithLogsReceiverAndStabilityLevel overrides the default "error not supported" implementation for CreateLogsReceiver and the default "undefined" stability level.
|
||||||
|
func WithLogsReceiverAndStabilityLevel(createLogsReceiver CreateLogsReceiverFunc, sl StabilityLevel) ReceiverFactoryOption {
|
||||||
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
return receiverFactoryOptionFunc(func(o *receiverFactory) {
|
||||||
|
o.stability[config.LogsDataType] = sl
|
||||||
o.CreateLogsReceiverFunc = createLogsReceiver
|
o.CreateLogsReceiverFunc = createLogsReceiver
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -234,7 +255,7 @@ func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc) ReceiverFactory
|
||||||
// NewReceiverFactory returns a ReceiverFactory.
|
// NewReceiverFactory returns a ReceiverFactory.
|
||||||
func NewReceiverFactory(cfgType config.Type, createDefaultConfig ReceiverCreateDefaultConfigFunc, options ...ReceiverFactoryOption) ReceiverFactory {
|
func NewReceiverFactory(cfgType config.Type, createDefaultConfig ReceiverCreateDefaultConfigFunc, options ...ReceiverFactoryOption) ReceiverFactory {
|
||||||
f := &receiverFactory{
|
f := &receiverFactory{
|
||||||
baseFactory: baseFactory{cfgType: cfgType},
|
baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)},
|
||||||
ReceiverCreateDefaultConfigFunc: createDefaultConfig,
|
ReceiverCreateDefaultConfigFunc: createDefaultConfig,
|
||||||
}
|
}
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
|
|
|
@ -62,6 +62,31 @@ func TestNewReceiverFactory_WithOptions(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewReceiverFactory_WithStabilityLevels(t *testing.T) {
|
||||||
|
const typeStr = "test"
|
||||||
|
defaultCfg := config.NewReceiverSettings(config.NewComponentID(typeStr))
|
||||||
|
factory := NewReceiverFactory(
|
||||||
|
typeStr,
|
||||||
|
func() config.Receiver { return &defaultCfg },
|
||||||
|
WithTracesReceiverAndStabilityLevel(createTracesReceiver, StabilityLevelDeprecated),
|
||||||
|
WithMetricsReceiverAndStabilityLevel(createMetricsReceiver, StabilityLevelAlpha),
|
||||||
|
WithLogsReceiverAndStabilityLevel(createLogsReceiver, StabilityLevelStable))
|
||||||
|
assert.EqualValues(t, typeStr, factory.Type())
|
||||||
|
assert.EqualValues(t, &defaultCfg, factory.CreateDefaultConfig())
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelDeprecated, factory.StabilityLevel(config.TracesDataType))
|
||||||
|
_, err := factory.CreateTracesReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelAlpha, factory.StabilityLevel(config.MetricsDataType))
|
||||||
|
_, err = factory.CreateMetricsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.EqualValues(t, StabilityLevelStable, factory.StabilityLevel(config.LogsDataType))
|
||||||
|
_, err = factory.CreateLogsReceiver(context.Background(), ReceiverCreateSettings{}, &defaultCfg, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func createTracesReceiver(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Traces) (TracesReceiver, error) {
|
func createTracesReceiver(context.Context, ReceiverCreateSettings, config.Receiver, consumer.Traces) (TracesReceiver, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,9 +36,10 @@ func NewFactory() component.ExporterFactory {
|
||||||
return component.NewExporterFactory(
|
return component.NewExporterFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesExporter(createTracesExporter),
|
component.WithTracesExporterAndStabilityLevel(createTracesExporter, component.StabilityLevelInDevelopment),
|
||||||
component.WithMetricsExporter(createMetricsExporter),
|
component.WithMetricsExporterAndStabilityLevel(createMetricsExporter, component.StabilityLevelInDevelopment),
|
||||||
component.WithLogsExporter(createLogsExporter))
|
component.WithLogsExporterAndStabilityLevel(createLogsExporter, component.StabilityLevelInDevelopment),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createDefaultConfig() config.Exporter {
|
func createDefaultConfig() config.Exporter {
|
||||||
|
|
|
@ -35,9 +35,10 @@ func NewFactory() component.ExporterFactory {
|
||||||
return component.NewExporterFactory(
|
return component.NewExporterFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesExporter(createTracesExporter),
|
component.WithTracesExporterAndStabilityLevel(createTracesExporter, component.StabilityLevelStable),
|
||||||
component.WithMetricsExporter(createMetricsExporter),
|
component.WithMetricsExporterAndStabilityLevel(createMetricsExporter, component.StabilityLevelStable),
|
||||||
component.WithLogsExporter(createLogsExporter))
|
component.WithLogsExporterAndStabilityLevel(createLogsExporter, component.StabilityLevelBeta),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createDefaultConfig() config.Exporter {
|
func createDefaultConfig() config.Exporter {
|
||||||
|
|
|
@ -38,9 +38,10 @@ func NewFactory() component.ExporterFactory {
|
||||||
return component.NewExporterFactory(
|
return component.NewExporterFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesExporter(createTracesExporter),
|
component.WithTracesExporterAndStabilityLevel(createTracesExporter, component.StabilityLevelStable),
|
||||||
component.WithMetricsExporter(createMetricsExporter),
|
component.WithMetricsExporterAndStabilityLevel(createMetricsExporter, component.StabilityLevelStable),
|
||||||
component.WithLogsExporter(createLogsExporter))
|
component.WithLogsExporterAndStabilityLevel(createLogsExporter, component.StabilityLevelBeta),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createDefaultConfig() config.Exporter {
|
func createDefaultConfig() config.Exporter {
|
||||||
|
|
|
@ -25,7 +25,10 @@ import (
|
||||||
"go.opentelemetry.io/collector/pdata/ptrace"
|
"go.opentelemetry.io/collector/pdata/ptrace"
|
||||||
)
|
)
|
||||||
|
|
||||||
const expType = "exampleexporter"
|
const (
|
||||||
|
typeStr = "exampleexporter"
|
||||||
|
stability = component.StabilityLevelInDevelopment
|
||||||
|
)
|
||||||
|
|
||||||
// ExampleExporterConfig config for ExampleExporter.
|
// ExampleExporterConfig config for ExampleExporter.
|
||||||
type ExampleExporterConfig struct {
|
type ExampleExporterConfig struct {
|
||||||
|
@ -34,15 +37,16 @@ type ExampleExporterConfig struct {
|
||||||
|
|
||||||
// ExampleExporterFactory is factory for ExampleExporter.
|
// ExampleExporterFactory is factory for ExampleExporter.
|
||||||
var ExampleExporterFactory = component.NewExporterFactory(
|
var ExampleExporterFactory = component.NewExporterFactory(
|
||||||
expType,
|
typeStr,
|
||||||
createExporterDefaultConfig,
|
createExporterDefaultConfig,
|
||||||
component.WithTracesExporter(createTracesExporter),
|
component.WithTracesExporterAndStabilityLevel(createTracesExporter, stability),
|
||||||
component.WithMetricsExporter(createMetricsExporter),
|
component.WithMetricsExporterAndStabilityLevel(createMetricsExporter, stability),
|
||||||
component.WithLogsExporter(createLogsExporter))
|
component.WithLogsExporterAndStabilityLevel(createLogsExporter, stability),
|
||||||
|
)
|
||||||
|
|
||||||
func createExporterDefaultConfig() config.Exporter {
|
func createExporterDefaultConfig() config.Exporter {
|
||||||
return &ExampleExporterConfig{
|
return &ExampleExporterConfig{
|
||||||
ExporterSettings: config.NewExporterSettings(config.NewComponentID(expType)),
|
ExporterSettings: config.NewExporterSettings(config.NewComponentID(typeStr)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,9 @@ type ExampleProcessorConfig struct {
|
||||||
var ExampleProcessorFactory = component.NewProcessorFactory(
|
var ExampleProcessorFactory = component.NewProcessorFactory(
|
||||||
procType,
|
procType,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesProcessor(createTracesProcessor),
|
component.WithTracesProcessorAndStabilityLevel(createTracesProcessor, component.StabilityLevelInDevelopment),
|
||||||
component.WithMetricsProcessor(createMetricsProcessor),
|
component.WithMetricsProcessorAndStabilityLevel(createMetricsProcessor, component.StabilityLevelInDevelopment),
|
||||||
component.WithLogsProcessor(createLogsProcessor))
|
component.WithLogsProcessorAndStabilityLevel(createLogsProcessor, component.StabilityLevelInDevelopment))
|
||||||
|
|
||||||
// CreateDefaultConfig creates the default configuration for the Processor.
|
// CreateDefaultConfig creates the default configuration for the Processor.
|
||||||
func createDefaultConfig() config.Processor {
|
func createDefaultConfig() config.Processor {
|
||||||
|
|
|
@ -33,9 +33,9 @@ type ExampleReceiverConfig struct {
|
||||||
var ExampleReceiverFactory = component.NewReceiverFactory(
|
var ExampleReceiverFactory = component.NewReceiverFactory(
|
||||||
receiverType,
|
receiverType,
|
||||||
createReceiverDefaultConfig,
|
createReceiverDefaultConfig,
|
||||||
component.WithTracesReceiver(createTracesReceiver),
|
component.WithTracesReceiverAndStabilityLevel(createTracesReceiver, component.StabilityLevelInDevelopment),
|
||||||
component.WithMetricsReceiver(createMetricsReceiver),
|
component.WithMetricsReceiverAndStabilityLevel(createMetricsReceiver, component.StabilityLevelInDevelopment),
|
||||||
component.WithLogsReceiver(createLogsReceiver))
|
component.WithLogsReceiverAndStabilityLevel(createLogsReceiver, component.StabilityLevelInDevelopment))
|
||||||
|
|
||||||
func createReceiverDefaultConfig() config.Receiver {
|
func createReceiverDefaultConfig() config.Receiver {
|
||||||
return &ExampleReceiverConfig{
|
return &ExampleReceiverConfig{
|
||||||
|
|
|
@ -36,9 +36,9 @@ func NewFactory() component.ProcessorFactory {
|
||||||
return component.NewProcessorFactory(
|
return component.NewProcessorFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesProcessor(createTracesProcessor),
|
component.WithTracesProcessorAndStabilityLevel(createTracesProcessor, component.StabilityLevelStable),
|
||||||
component.WithMetricsProcessor(createMetricsProcessor),
|
component.WithMetricsProcessorAndStabilityLevel(createMetricsProcessor, component.StabilityLevelStable),
|
||||||
component.WithLogsProcessor(createLogsProcessor))
|
component.WithLogsProcessorAndStabilityLevel(createLogsProcessor, component.StabilityLevelStable))
|
||||||
}
|
}
|
||||||
|
|
||||||
func createDefaultConfig() config.Processor {
|
func createDefaultConfig() config.Processor {
|
||||||
|
|
|
@ -46,9 +46,9 @@ func NewFactory() component.ProcessorFactory {
|
||||||
return component.NewProcessorFactory(
|
return component.NewProcessorFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesProcessor(f.createTracesProcessor),
|
component.WithTracesProcessorAndStabilityLevel(f.createTracesProcessor, component.StabilityLevelBeta),
|
||||||
component.WithMetricsProcessor(f.createMetricsProcessor),
|
component.WithMetricsProcessorAndStabilityLevel(f.createMetricsProcessor, component.StabilityLevelBeta),
|
||||||
component.WithLogsProcessor(f.createLogsProcessor))
|
component.WithLogsProcessorAndStabilityLevel(f.createLogsProcessor, component.StabilityLevelBeta))
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDefaultConfig creates the default configuration for processor. Notice
|
// CreateDefaultConfig creates the default configuration for processor. Notice
|
||||||
|
|
|
@ -38,9 +38,9 @@ func NewFactory() component.ReceiverFactory {
|
||||||
return component.NewReceiverFactory(
|
return component.NewReceiverFactory(
|
||||||
typeStr,
|
typeStr,
|
||||||
createDefaultConfig,
|
createDefaultConfig,
|
||||||
component.WithTracesReceiver(createTracesReceiver),
|
component.WithTracesReceiverAndStabilityLevel(createTracesReceiver, component.StabilityLevelStable),
|
||||||
component.WithMetricsReceiver(createMetricsReceiver),
|
component.WithMetricsReceiverAndStabilityLevel(createMetricsReceiver, component.StabilityLevelStable),
|
||||||
component.WithLogsReceiver(createLogReceiver))
|
component.WithLogsReceiverAndStabilityLevel(createLogReceiver, component.StabilityLevelBeta))
|
||||||
}
|
}
|
||||||
|
|
||||||
// createDefaultConfig creates the default configuration for receiver.
|
// createDefaultConfig creates the default configuration for receiver.
|
||||||
|
|
|
@ -23,4 +23,5 @@ const (
|
||||||
ZapKindPipeline = "pipeline"
|
ZapKindPipeline = "pipeline"
|
||||||
ZapNameKey = "name"
|
ZapNameKey = "name"
|
||||||
ZapDataTypeKey = "data_type"
|
ZapDataTypeKey = "data_type"
|
||||||
|
ZapStabilityKey = "stability"
|
||||||
)
|
)
|
||||||
|
|
|
@ -331,6 +331,21 @@ func Build(ctx context.Context, set Settings) (*Pipelines, error) {
|
||||||
return exps, nil
|
return exps, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func logStabilityMessage(logger *zap.Logger, sl component.StabilityLevel) {
|
||||||
|
switch sl {
|
||||||
|
case component.StabilityLevelDeprecated:
|
||||||
|
logger.Info("Component has been deprecated and will be removed in future releases.", zap.String(components.ZapStabilityKey, sl.String()))
|
||||||
|
case component.StabilityLevelUnmaintained:
|
||||||
|
logger.Info("Component is unmaintained and actively looking for contributors. This component will become deprecated after 6 months of remaining unmaintained", zap.String(components.ZapStabilityKey, sl.String()))
|
||||||
|
case component.StabilityLevelInDevelopment:
|
||||||
|
logger.Info("Component is under development.", zap.String(components.ZapStabilityKey, sl.String()))
|
||||||
|
case component.StabilityLevelAlpha, component.StabilityLevelBeta, component.StabilityLevelStable:
|
||||||
|
logger.Debug("Stability level", zap.String(components.ZapStabilityKey, sl.String()))
|
||||||
|
default:
|
||||||
|
logger.Info("Stability level of component undefined", zap.String(components.ZapStabilityKey, sl.String()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func buildExporter(
|
func buildExporter(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
settings component.TelemetrySettings,
|
settings component.TelemetrySettings,
|
||||||
|
@ -355,6 +370,7 @@ func buildExporter(
|
||||||
BuildInfo: buildInfo,
|
BuildInfo: buildInfo,
|
||||||
}
|
}
|
||||||
set.TelemetrySettings.Logger = exporterLogger(settings.Logger, id, pipelineID.Type())
|
set.TelemetrySettings.Logger = exporterLogger(settings.Logger, id, pipelineID.Type())
|
||||||
|
logStabilityMessage(set.TelemetrySettings.Logger, factory.StabilityLevel(pipelineID.Type()))
|
||||||
|
|
||||||
exp, err := createExporter(ctx, set, cfg, id, pipelineID, factory)
|
exp, err := createExporter(ctx, set, cfg, id, pipelineID, factory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -436,6 +452,7 @@ func buildProcessor(ctx context.Context,
|
||||||
BuildInfo: buildInfo,
|
BuildInfo: buildInfo,
|
||||||
}
|
}
|
||||||
set.TelemetrySettings.Logger = processorLogger(settings.Logger, id, pipelineID)
|
set.TelemetrySettings.Logger = processorLogger(settings.Logger, id, pipelineID)
|
||||||
|
logStabilityMessage(set.TelemetrySettings.Logger, factory.StabilityLevel(pipelineID.Type()))
|
||||||
|
|
||||||
proc, err := createProcessor(ctx, set, procCfg, id, pipelineID, next, factory)
|
proc, err := createProcessor(ctx, set, procCfg, id, pipelineID, next, factory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -489,6 +506,7 @@ func buildReceiver(ctx context.Context,
|
||||||
BuildInfo: buildInfo,
|
BuildInfo: buildInfo,
|
||||||
}
|
}
|
||||||
set.TelemetrySettings.Logger = receiverLogger(settings.Logger, id, pipelineID.Type())
|
set.TelemetrySettings.Logger = receiverLogger(settings.Logger, id, pipelineID.Type())
|
||||||
|
logStabilityMessage(set.TelemetrySettings.Logger, factory.StabilityLevel(pipelineID.Type()))
|
||||||
|
|
||||||
recv, err := createReceiver(ctx, set, cfg, id, pipelineID, nexts, factory)
|
recv, err := createReceiver(ctx, set, cfg, id, pipelineID, nexts, factory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -22,6 +22,9 @@ import (
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"go.uber.org/zap/zapcore"
|
||||||
|
"go.uber.org/zap/zaptest/observer"
|
||||||
|
|
||||||
"go.opentelemetry.io/collector/component"
|
"go.opentelemetry.io/collector/component"
|
||||||
"go.opentelemetry.io/collector/component/componenttest"
|
"go.opentelemetry.io/collector/component/componenttest"
|
||||||
|
@ -345,6 +348,36 @@ func TestFailToStartAndShutdown(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLogStabilityLevle(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
level zapcore.Level
|
||||||
|
expectedLogs int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
level: zapcore.DebugLevel,
|
||||||
|
expectedLogs: 7,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
level: zapcore.InfoLevel,
|
||||||
|
expectedLogs: 4,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
observed, logs := observer.New(tt.level)
|
||||||
|
logger := zap.New(observed)
|
||||||
|
// ensure log levels are set correctly for each stability level
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelUndefined)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelUnmaintained)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelDeprecated)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelInDevelopment)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelAlpha)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelBeta)
|
||||||
|
logStabilityMessage(logger, component.StabilityLevelStable)
|
||||||
|
require.Equal(t, tt.expectedLogs, logs.Len())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func newBadReceiverFactory() component.ReceiverFactory {
|
func newBadReceiverFactory() component.ReceiverFactory {
|
||||||
return component.NewReceiverFactory("bf", func() config.Receiver {
|
return component.NewReceiverFactory("bf", func() config.Receiver {
|
||||||
return &struct {
|
return &struct {
|
||||||
|
|
Loading…
Reference in New Issue