Skip to content

Commit

Permalink
Use ComponentID as identifier instead of config
Browse files Browse the repository at this point in the history
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
  • Loading branch information
bogdandrutu committed Jul 22, 2021
1 parent cfbb0f6 commit 745bcf2
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 83 deletions.
8 changes: 4 additions & 4 deletions service/internal/builder/exporters_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func (bexp *builtExporter) getLogExporter() component.LogsExporter {
}

// Exporters is a map of exporters created from exporter configs.
type Exporters map[config.Exporter]*builtExporter
type Exporters map[config.ComponentID]*builtExporter

// StartAll starts all exporters.
func (exps Exporters) StartAll(ctx context.Context, host component.Host) error {
Expand Down Expand Up @@ -121,9 +121,9 @@ func (exps Exporters) ToMapByDataType() map[config.DataType]map[config.Component
exportersMap[config.MetricsDataType] = make(map[config.ComponentID]component.Exporter, len(exps))
exportersMap[config.LogsDataType] = make(map[config.ComponentID]component.Exporter, len(exps))

for cfg, bexp := range exps {
for expID, bexp := range exps {
for t, exp := range bexp.expByDataType {
exportersMap[t][cfg.ID()] = exp
exportersMap[t][expID] = exp
}
}

Expand Down Expand Up @@ -175,7 +175,7 @@ func BuildExporters(
return nil, err
}

exporters[expCfg] = exp
exporters[expID] = exp
}

return exporters, nil
Expand Down
33 changes: 6 additions & 27 deletions service/internal/builder/exporters_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func TestBuildExporters(t *testing.T) {
assert.NoError(t, err)
require.NotNil(t, exporters)

e1 := exporters[cfg.Exporters[config.NewID("opencensus")]]
e1 := exporters[config.NewID("opencensus")]

// Ensure exporter has its fields correctly populated.
require.NotNil(t, e1)
Expand Down Expand Up @@ -94,7 +94,7 @@ func TestBuildExporters(t *testing.T) {
assert.NotNil(t, exporters)
assert.NoError(t, err)

e1 = exporters[cfg.Exporters[config.NewID("opencensus")]]
e1 = exporters[config.NewID("opencensus")]

// Ensure exporter has its fields correctly populated, ie Trace Exporter and
// Metrics Exporter are nil.
Expand Down Expand Up @@ -133,7 +133,7 @@ func TestBuildExporters_BuildLogs(t *testing.T) {
assert.NoError(t, err)
require.NotNil(t, exporters)

e1 := exporters[cfg.Exporters[config.NewID("exampleexporter")]]
e1 := exporters[config.NewID("exampleexporter")]

// Ensure exporter has its fields correctly populated.
require.NotNil(t, e1)
Expand All @@ -157,7 +157,7 @@ func TestBuildExporters_BuildLogs(t *testing.T) {
assert.NotNil(t, exporters)
assert.Nil(t, err)

e1 = exporters[cfg.Exporters[config.NewID("exampleexporter")]]
e1 = exporters[config.NewID("exampleexporter")]

// Ensure exporter has its fields correctly populated, ie Trace Exporter and
// Metrics Exporter are nil.
Expand All @@ -167,13 +167,12 @@ func TestBuildExporters_BuildLogs(t *testing.T) {
assert.Nil(t, e1.getLogExporter())
}

func TestBuildExporters_StartAll(t *testing.T) {
func TestBuildExporters_StartStopAll(t *testing.T) {
exporters := make(Exporters)
expCfg := &config.ExporterSettings{}
traceExporter := &testcomponents.ExampleExporterConsumer{}
metricExporter := &testcomponents.ExampleExporterConsumer{}
logsExporter := &testcomponents.ExampleExporterConsumer{}
exporters[expCfg] = &builtExporter{
exporters[config.NewID("example")] = &builtExporter{
logger: zap.NewNop(),
expByDataType: map[config.DataType]component.Exporter{
config.TracesDataType: traceExporter,
Expand All @@ -186,31 +185,11 @@ func TestBuildExporters_StartAll(t *testing.T) {
assert.False(t, logsExporter.ExporterStarted)

assert.NoError(t, exporters.StartAll(context.Background(), componenttest.NewNopHost()))

assert.True(t, traceExporter.ExporterStarted)
assert.True(t, metricExporter.ExporterStarted)
assert.True(t, logsExporter.ExporterStarted)
}

func TestBuildExporters_StopAll(t *testing.T) {
exporters := make(Exporters)
expCfg := &config.ExporterSettings{}
traceExporter := &testcomponents.ExampleExporterConsumer{}
metricExporter := &testcomponents.ExampleExporterConsumer{}
logsExporter := &testcomponents.ExampleExporterConsumer{}
exporters[expCfg] = &builtExporter{
logger: zap.NewNop(),
expByDataType: map[config.DataType]component.Exporter{
config.TracesDataType: traceExporter,
config.MetricsDataType: metricExporter,
config.LogsDataType: logsExporter,
},
}
assert.False(t, traceExporter.ExporterShutdown)
assert.False(t, metricExporter.ExporterShutdown)
assert.False(t, logsExporter.ExporterShutdown)
assert.NoError(t, exporters.ShutdownAll(context.Background()))

assert.True(t, traceExporter.ExporterShutdown)
assert.True(t, metricExporter.ExporterShutdown)
assert.True(t, logsExporter.ExporterShutdown)
Expand Down
8 changes: 4 additions & 4 deletions service/internal/builder/extensions_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (ext *builtExtension) Shutdown(ctx context.Context) error {
var _ component.Extension = (*builtExtension)(nil)

// Extensions is a map of extensions created from extension configs.
type Extensions map[config.Extension]*builtExtension
type Extensions map[config.ComponentID]*builtExtension

// StartAll starts all exporters.
func (exts Extensions) StartAll(ctx context.Context, host component.Host) error {
Expand Down Expand Up @@ -105,8 +105,8 @@ func (exts Extensions) NotifyPipelineNotReady() error {

func (exts Extensions) ToMap() map[config.ComponentID]component.Extension {
result := make(map[config.ComponentID]component.Extension, len(exts))
for k, v := range exts {
result[k.ID()] = v.extension
for extID, v := range exts {
result[extID] = v.extension
}
return result
}
Expand Down Expand Up @@ -143,7 +143,7 @@ func BuildExtensions(
return nil, err
}

extensions[extCfg] = ext
extensions[extID] = ext
}

return extensions, nil
Expand Down
12 changes: 6 additions & 6 deletions service/internal/builder/pipelines_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,18 +226,18 @@ func (pb *pipelinesBuilder) buildPipeline(ctx context.Context, pipelineCfg *conf
}

// Converts the list of exporter names to a list of corresponding builtExporters.
func (pb *pipelinesBuilder) getBuiltExportersByNames(exporterIDs []config.ComponentID) []*builtExporter {
func (pb *pipelinesBuilder) getBuiltExportersByIDs(exporterIDs []config.ComponentID) []*builtExporter {
var result []*builtExporter
for _, name := range exporterIDs {
exporter := pb.exporters[pb.config.Exporters[name]]
for _, expID := range exporterIDs {
exporter := pb.exporters[expID]
result = append(result, exporter)
}

return result
}

func (pb *pipelinesBuilder) buildFanoutExportersTracesConsumer(exporterIDs []config.ComponentID) consumer.Traces {
builtExporters := pb.getBuiltExportersByNames(exporterIDs)
builtExporters := pb.getBuiltExportersByIDs(exporterIDs)

var exporters []consumer.Traces
for _, builtExp := range builtExporters {
Expand All @@ -249,7 +249,7 @@ func (pb *pipelinesBuilder) buildFanoutExportersTracesConsumer(exporterIDs []con
}

func (pb *pipelinesBuilder) buildFanoutExportersMetricsConsumer(exporterIDs []config.ComponentID) consumer.Metrics {
builtExporters := pb.getBuiltExportersByNames(exporterIDs)
builtExporters := pb.getBuiltExportersByIDs(exporterIDs)

var exporters []consumer.Metrics
for _, builtExp := range builtExporters {
Expand All @@ -261,7 +261,7 @@ func (pb *pipelinesBuilder) buildFanoutExportersMetricsConsumer(exporterIDs []co
}

func (pb *pipelinesBuilder) buildFanoutExportersLogsConsumer(exporterIDs []config.ComponentID) consumer.Logs {
builtExporters := pb.getBuiltExportersByNames(exporterIDs)
builtExporters := pb.getBuiltExportersByIDs(exporterIDs)

exporters := make([]consumer.Logs, len(builtExporters))
for i, builtExp := range builtExporters {
Expand Down
10 changes: 5 additions & 5 deletions service/internal/builder/pipelines_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,11 @@ func TestBuildPipelines_BuildVarious(t *testing.T) {
assert.NotNil(t, processor.firstLC)

// Compose the list of created exporters.
exporterNames := []config.ComponentID{config.NewID("exampleexporter")}
exporterIDs := []config.ComponentID{config.NewID("exampleexporter")}
var exporters []*builtExporter
for _, name := range exporterNames {
for _, expID := range exporterIDs {
// Ensure exporter is created.
exp := allExporters[cfg.Exporters[name]]
exp := allExporters[expID]
require.NotNil(t, exp)
exporters = append(exporters, exp)
}
Expand Down Expand Up @@ -203,9 +203,9 @@ func testPipeline(t *testing.T, pipelineName string, exporterIDs []config.Compon

// Compose the list of created exporters.
var exporters []*builtExporter
for _, name := range exporterIDs {
for _, expID := range exporterIDs {
// Ensure exporter is created.
exp := allExporters[cfg.Exporters[name]]
exp := allExporters[expID]
require.NotNil(t, exp)
exporters = append(exporters, exp)
}
Expand Down
4 changes: 2 additions & 2 deletions service/internal/builder/receivers_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func (rcv *builtReceiver) Shutdown(ctx context.Context) error {
}

// Receivers is a map of receivers created from receiver configs.
type Receivers map[config.Receiver]*builtReceiver
type Receivers map[config.ComponentID]*builtReceiver

// ShutdownAll stops all receivers.
func (rcvs Receivers) ShutdownAll(ctx context.Context) error {
Expand Down Expand Up @@ -112,7 +112,7 @@ func BuildReceivers(
}
return nil, err
}
receivers[recvCfg] = rcv
receivers[recvID] = rcv
}

return receivers, nil
Expand Down
50 changes: 15 additions & 35 deletions service/internal/builder/receivers_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,7 @@ func TestBuildReceivers(t *testing.T) {
}
}

func testReceivers(
t *testing.T,
test testCase,
) {
func testReceivers(t *testing.T, test testCase) {
factories, err := testcomponents.ExampleComponents()
assert.NoError(t, err)

Expand All @@ -110,7 +107,7 @@ func testReceivers(
assert.NoError(t, err)
require.NotNil(t, receivers)

receiver := receivers[cfg.Receivers[test.receiverID]]
receiver := receivers[test.receiverID]

// Ensure receiver has its fields correctly populated.
require.NotNil(t, receiver)
Expand All @@ -119,9 +116,9 @@ func testReceivers(

// Compose the list of created exporters.
var exporters []*builtExporter
for _, name := range test.exporterIDs {
for _, expID := range test.exporterIDs {
// Ensure exporter is created.
exp := allExporters[cfg.Exporters[name]]
exp := allExporters[expID]
require.NotNil(t, exp)
exporters = append(exporters, exp)
}
Expand All @@ -148,15 +145,15 @@ func testReceivers(
}

// Now verify received data.
for _, name := range test.exporterIDs {
for _, expID := range test.exporterIDs {
// Check that the data is received by exporter.
exporter := allExporters[cfg.Exporters[name]]
exporter := allExporters[expID]

// Validate traces.
if test.hasTraces {
var spanDuplicationCount int
if test.spanDuplicationByExporter != nil {
spanDuplicationCount = test.spanDuplicationByExporter[name]
spanDuplicationCount = test.spanDuplicationByExporter[expID]
} else {
spanDuplicationCount = 1
}
Expand Down Expand Up @@ -216,19 +213,19 @@ func TestBuildReceivers_BuildCustom(t *testing.T) {
assert.NoError(t, err)
require.NotNil(t, receivers)

receiver := receivers[cfg.Receivers[config.NewID("examplereceiver")]]
receiver := receivers[config.NewID("examplereceiver")]

// Ensure receiver has its fields correctly populated.
require.NotNil(t, receiver)

assert.NotNil(t, receiver.receiver)

// Compose the list of created exporters.
exporterNames := []config.ComponentID{config.NewID("exampleexporter")}
exporterIDs := []config.ComponentID{config.NewID("exampleexporter")}
var exporters []*builtExporter
for _, name := range exporterNames {
for _, expID := range exporterIDs {
// Ensure exporter is created.
exp := allExporters[cfg.Exporters[name]]
exp := allExporters[expID]
require.NotNil(t, exp)
exporters = append(exporters, exp)
}
Expand All @@ -247,9 +244,9 @@ func TestBuildReceivers_BuildCustom(t *testing.T) {
require.NoError(t, producer.ConsumeLogs(context.Background(), log))

// Now verify received data.
for _, name := range exporterNames {
for _, expID := range exporterIDs {
// Check that the data is received by exporter.
exporter := allExporters[cfg.Exporters[name]]
exporter := allExporters[expID]

// Validate exported data.
consumer := exporter.getLogExporter().(*testcomponents.ExampleExporterConsumer)
Expand All @@ -262,36 +259,19 @@ func TestBuildReceivers_BuildCustom(t *testing.T) {

func TestBuildReceivers_StartAll(t *testing.T) {
receivers := make(Receivers)
rcvCfg := &testcomponents.ExampleReceiver{}
receiver := &testcomponents.ExampleReceiverProducer{}

receivers[rcvCfg] = &builtReceiver{
receivers[config.NewID("example")] = &builtReceiver{
logger: zap.NewNop(),
receiver: receiver,
}

assert.False(t, receiver.Started)

err := receivers.StartAll(context.Background(), componenttest.NewNopHost())
assert.NoError(t, err)

assert.NoError(t, receivers.StartAll(context.Background(), componenttest.NewNopHost()))
assert.True(t, receiver.Started)
}

func TestBuildReceivers_StopAll(t *testing.T) {
receivers := make(Receivers)
rcvCfg := &testcomponents.ExampleReceiver{}
receiver := &testcomponents.ExampleReceiverProducer{}

receivers[rcvCfg] = &builtReceiver{
logger: zap.NewNop(),
receiver: receiver,
}

assert.False(t, receiver.Stopped)

assert.NoError(t, receivers.ShutdownAll(context.Background()))

assert.True(t, receiver.Stopped)
}

Expand Down

0 comments on commit 745bcf2

Please sign in to comment.