opentelemetry-collector/service/internal/testcomponents/example_connector.go

210 lines
9.1 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package testcomponents // import "go.opentelemetry.io/collector/service/internal/testcomponents"
import (
"context"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/connector"
"go.opentelemetry.io/collector/connector/connectorprofiles"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/consumer/consumerprofiles"
"go.opentelemetry.io/collector/pdata/plog"
"go.opentelemetry.io/collector/pdata/pmetric"
"go.opentelemetry.io/collector/pdata/pprofile"
"go.opentelemetry.io/collector/pdata/ptrace"
"go.opentelemetry.io/collector/pdata/testdata"
)
var connType = component.MustNewType("exampleconnector")
// ExampleConnectorFactory is factory for ExampleConnector.
var ExampleConnectorFactory = connectorprofiles.NewFactory(
connType,
createExampleConnectorDefaultConfig,
connectorprofiles.WithTracesToTraces(createExampleTracesToTraces, component.StabilityLevelDevelopment),
connectorprofiles.WithTracesToMetrics(createExampleTracesToMetrics, component.StabilityLevelDevelopment),
connectorprofiles.WithTracesToLogs(createExampleTracesToLogs, component.StabilityLevelDevelopment),
connectorprofiles.WithTracesToProfiles(createExampleTracesToProfiles, component.StabilityLevelDevelopment),
connectorprofiles.WithMetricsToTraces(createExampleMetricsToTraces, component.StabilityLevelDevelopment),
connectorprofiles.WithMetricsToMetrics(createExampleMetricsToMetrics, component.StabilityLevelDevelopment),
connectorprofiles.WithMetricsToLogs(createExampleMetricsToLogs, component.StabilityLevelDevelopment),
connectorprofiles.WithMetricsToProfiles(createExampleMetricsToProfiles, component.StabilityLevelDevelopment),
connectorprofiles.WithLogsToTraces(createExampleLogsToTraces, component.StabilityLevelDevelopment),
connectorprofiles.WithLogsToMetrics(createExampleLogsToMetrics, component.StabilityLevelDevelopment),
connectorprofiles.WithLogsToLogs(createExampleLogsToLogs, component.StabilityLevelDevelopment),
connectorprofiles.WithLogsToProfiles(createExampleLogsToProfiles, component.StabilityLevelDevelopment),
connectorprofiles.WithProfilesToTraces(createExampleProfilesToTraces, component.StabilityLevelDevelopment),
connectorprofiles.WithProfilesToMetrics(createExampleProfilesToMetrics, component.StabilityLevelDevelopment),
connectorprofiles.WithProfilesToLogs(createExampleProfilesToLogs, component.StabilityLevelDevelopment),
connectorprofiles.WithProfilesToProfiles(createExampleProfilesToProfiles, component.StabilityLevelDevelopment),
)
var MockForwardConnectorFactory = connectorprofiles.NewFactory(
component.MustNewType("mockforward"),
createExampleConnectorDefaultConfig,
connectorprofiles.WithTracesToTraces(createExampleTracesToTraces, component.StabilityLevelDevelopment),
connectorprofiles.WithMetricsToMetrics(createExampleMetricsToMetrics, component.StabilityLevelDevelopment),
connectorprofiles.WithLogsToLogs(createExampleLogsToLogs, component.StabilityLevelDevelopment),
connectorprofiles.WithProfilesToProfiles(createExampleProfilesToProfiles, component.StabilityLevelDevelopment),
)
func createExampleConnectorDefaultConfig() component.Config {
return &struct{}{}
}
func createExampleTracesToTraces(_ context.Context, set connector.Settings, _ component.Config, traces consumer.Traces) (connector.Traces, error) {
return &ExampleConnector{
ConsumeTracesFunc: traces.ConsumeTraces,
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleTracesToMetrics(_ context.Context, set connector.Settings, _ component.Config, metrics consumer.Metrics) (connector.Traces, error) {
return &ExampleConnector{
ConsumeTracesFunc: func(ctx context.Context, td ptrace.Traces) error {
return metrics.ConsumeMetrics(ctx, testdata.GenerateMetrics(td.SpanCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleTracesToLogs(_ context.Context, set connector.Settings, _ component.Config, logs consumer.Logs) (connector.Traces, error) {
return &ExampleConnector{
ConsumeTracesFunc: func(ctx context.Context, td ptrace.Traces) error {
return logs.ConsumeLogs(ctx, testdata.GenerateLogs(td.SpanCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleTracesToProfiles(_ context.Context, set connector.Settings, _ component.Config, profiles consumerprofiles.Profiles) (connector.Traces, error) {
return &ExampleConnector{
ConsumeTracesFunc: func(ctx context.Context, td ptrace.Traces) error {
return profiles.ConsumeProfiles(ctx, testdata.GenerateProfiles(td.SpanCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleMetricsToTraces(_ context.Context, set connector.Settings, _ component.Config, traces consumer.Traces) (connector.Metrics, error) {
return &ExampleConnector{
ConsumeMetricsFunc: func(ctx context.Context, md pmetric.Metrics) error {
return traces.ConsumeTraces(ctx, testdata.GenerateTraces(md.MetricCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleMetricsToMetrics(_ context.Context, set connector.Settings, _ component.Config, metrics consumer.Metrics) (connector.Metrics, error) {
return &ExampleConnector{
ConsumeMetricsFunc: metrics.ConsumeMetrics,
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleMetricsToLogs(_ context.Context, set connector.Settings, _ component.Config, logs consumer.Logs) (connector.Metrics, error) {
return &ExampleConnector{
ConsumeMetricsFunc: func(ctx context.Context, md pmetric.Metrics) error {
return logs.ConsumeLogs(ctx, testdata.GenerateLogs(md.MetricCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleMetricsToProfiles(_ context.Context, set connector.Settings, _ component.Config, profiles consumerprofiles.Profiles) (connector.Metrics, error) {
return &ExampleConnector{
ConsumeMetricsFunc: func(ctx context.Context, md pmetric.Metrics) error {
return profiles.ConsumeProfiles(ctx, testdata.GenerateProfiles(md.MetricCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleLogsToTraces(_ context.Context, set connector.Settings, _ component.Config, traces consumer.Traces) (connector.Logs, error) {
return &ExampleConnector{
ConsumeLogsFunc: func(ctx context.Context, ld plog.Logs) error {
return traces.ConsumeTraces(ctx, testdata.GenerateTraces(ld.LogRecordCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleLogsToMetrics(_ context.Context, set connector.Settings, _ component.Config, metrics consumer.Metrics) (connector.Logs, error) {
return &ExampleConnector{
ConsumeLogsFunc: func(ctx context.Context, ld plog.Logs) error {
return metrics.ConsumeMetrics(ctx, testdata.GenerateMetrics(ld.LogRecordCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleLogsToLogs(_ context.Context, set connector.Settings, _ component.Config, logs consumer.Logs) (connector.Logs, error) {
return &ExampleConnector{
ConsumeLogsFunc: logs.ConsumeLogs,
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleLogsToProfiles(_ context.Context, set connector.Settings, _ component.Config, profiles consumerprofiles.Profiles) (connector.Logs, error) {
return &ExampleConnector{
ConsumeLogsFunc: func(ctx context.Context, ld plog.Logs) error {
return profiles.ConsumeProfiles(ctx, testdata.GenerateProfiles(ld.LogRecordCount()))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleProfilesToTraces(_ context.Context, set connector.Settings, _ component.Config, traces consumer.Traces) (connectorprofiles.Profiles, error) {
return &ExampleConnector{
ConsumeProfilesFunc: func(ctx context.Context, _ pprofile.Profiles) error {
return traces.ConsumeTraces(ctx, testdata.GenerateTraces(1))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleProfilesToMetrics(_ context.Context, set connector.Settings, _ component.Config, metrics consumer.Metrics) (connectorprofiles.Profiles, error) {
return &ExampleConnector{
ConsumeProfilesFunc: func(ctx context.Context, _ pprofile.Profiles) error {
return metrics.ConsumeMetrics(ctx, testdata.GenerateMetrics(1))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleProfilesToLogs(_ context.Context, set connector.Settings, _ component.Config, logs consumer.Logs) (connectorprofiles.Profiles, error) {
return &ExampleConnector{
ConsumeProfilesFunc: func(ctx context.Context, _ pprofile.Profiles) error {
return logs.ConsumeLogs(ctx, testdata.GenerateLogs(1))
},
mutatesData: set.ID.Name() == "mutate",
}, nil
}
func createExampleProfilesToProfiles(_ context.Context, set connector.Settings, _ component.Config, profiles consumerprofiles.Profiles) (connectorprofiles.Profiles, error) {
return &ExampleConnector{
ConsumeProfilesFunc: profiles.ConsumeProfiles,
mutatesData: set.ID.Name() == "mutate",
}, nil
}
type ExampleConnector struct {
componentState
consumer.ConsumeTracesFunc
consumer.ConsumeMetricsFunc
consumer.ConsumeLogsFunc
consumerprofiles.ConsumeProfilesFunc
mutatesData bool
}
func (c *ExampleConnector) Capabilities() consumer.Capabilities {
return consumer.Capabilities{MutatesData: c.mutatesData}
}