diff --git a/.chloggen/generic-makefactorymap.yaml b/.chloggen/generic-makefactorymap.yaml new file mode 100644 index 00000000000..9c9575a6299 --- /dev/null +++ b/.chloggen/generic-makefactorymap.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'deprecation' + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: receiver, scraper, processor, exporter, extension + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Deprecate existing MakeFactoryMap functions in favor of generic implementation + +# One or more tracking issues or pull requests related to the change +issues: [12222] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/cmd/builder/internal/builder/templates/components.go.tmpl b/cmd/builder/internal/builder/templates/components.go.tmpl index 96d44297cc9..b8bdc46d8f9 100644 --- a/cmd/builder/internal/builder/templates/components.go.tmpl +++ b/cmd/builder/internal/builder/templates/components.go.tmpl @@ -31,7 +31,7 @@ func components() (otelcol.Factories, error) { var err error factories := otelcol.Factories{} - factories.Extensions, err = extension.MakeFactoryMap( + factories.Extensions, err = otelcol.MakeFactoryMap[extension.Factory]( {{- range .Extensions}} {{.Name}}.NewFactory(), {{- end}} @@ -44,7 +44,7 @@ func components() (otelcol.Factories, error) { factories.ExtensionModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Receivers, err = receiver.MakeFactoryMap( + factories.Receivers, err = otelcol.MakeFactoryMap[receiver.Factory]( {{- range .Receivers}} {{.Name}}.NewFactory(), {{- end}} @@ -57,7 +57,7 @@ func components() (otelcol.Factories, error) { factories.ReceiverModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Exporters, err = exporter.MakeFactoryMap( + factories.Exporters, err = otelcol.MakeFactoryMap[exporter.Factory]( {{- range .Exporters}} {{.Name}}.NewFactory(), {{- end}} @@ -70,7 +70,7 @@ func components() (otelcol.Factories, error) { factories.ExporterModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Processors, err = processor.MakeFactoryMap( + factories.Processors, err = otelcol.MakeFactoryMap[processor.Factory]( {{- range .Processors}} {{.Name}}.NewFactory(), {{- end}} @@ -83,7 +83,7 @@ func components() (otelcol.Factories, error) { factories.ProcessorModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Connectors, err = connector.MakeFactoryMap( + factories.Connectors, err = otelcol.MakeFactoryMap[connector.Factory]( {{- range .Connectors}} {{.Name}}.NewFactory(), {{- end}} diff --git a/cmd/otelcorecol/components.go b/cmd/otelcorecol/components.go index 70939149980..f7220563d8a 100644 --- a/cmd/otelcorecol/components.go +++ b/cmd/otelcorecol/components.go @@ -27,7 +27,7 @@ func components() (otelcol.Factories, error) { var err error factories := otelcol.Factories{} - factories.Extensions, err = extension.MakeFactoryMap( + factories.Extensions, err = otelcol.MakeFactoryMap[extension.Factory]( memorylimiterextension.NewFactory(), zpagesextension.NewFactory(), ) @@ -38,7 +38,7 @@ func components() (otelcol.Factories, error) { factories.ExtensionModules[memorylimiterextension.NewFactory().Type()] = "go.opentelemetry.io/collector/extension/memorylimiterextension v0.119.0" factories.ExtensionModules[zpagesextension.NewFactory().Type()] = "go.opentelemetry.io/collector/extension/zpagesextension v0.119.0" - factories.Receivers, err = receiver.MakeFactoryMap( + factories.Receivers, err = otelcol.MakeFactoryMap[receiver.Factory]( nopreceiver.NewFactory(), otlpreceiver.NewFactory(), ) @@ -49,7 +49,7 @@ func components() (otelcol.Factories, error) { factories.ReceiverModules[nopreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/nopreceiver v0.119.0" factories.ReceiverModules[otlpreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/otlpreceiver v0.119.0" - factories.Exporters, err = exporter.MakeFactoryMap( + factories.Exporters, err = otelcol.MakeFactoryMap[exporter.Factory]( debugexporter.NewFactory(), nopexporter.NewFactory(), otlpexporter.NewFactory(), @@ -64,7 +64,7 @@ func components() (otelcol.Factories, error) { factories.ExporterModules[otlpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlpexporter v0.119.0" factories.ExporterModules[otlphttpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlphttpexporter v0.119.0" - factories.Processors, err = processor.MakeFactoryMap( + factories.Processors, err = otelcol.MakeFactoryMap[processor.Factory]( batchprocessor.NewFactory(), memorylimiterprocessor.NewFactory(), ) @@ -75,7 +75,7 @@ func components() (otelcol.Factories, error) { factories.ProcessorModules[batchprocessor.NewFactory().Type()] = "go.opentelemetry.io/collector/processor/batchprocessor v0.119.0" factories.ProcessorModules[memorylimiterprocessor.NewFactory().Type()] = "go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.119.0" - factories.Connectors, err = connector.MakeFactoryMap( + factories.Connectors, err = otelcol.MakeFactoryMap[connector.Factory]( forwardconnector.NewFactory(), ) if err != nil { diff --git a/connector/connector.go b/connector/connector.go index 2ae78f26a6b..285b658b527 100644 --- a/connector/connector.go +++ b/connector/connector.go @@ -388,6 +388,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of connector factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[connector.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/exporter/exporter.go b/exporter/exporter.go index 0e54bfb1b3c..fa80754a5f3 100644 --- a/exporter/exporter.go +++ b/exporter/exporter.go @@ -190,6 +190,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[exporter.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/extension/extension.go b/extension/extension.go index 2d4e507f030..ec72ba145fa 100644 --- a/extension/extension.go +++ b/extension/extension.go @@ -82,6 +82,8 @@ func NewFactory( // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[extension.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index 12bc25d0aa3..112ba7bdb3f 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -128,7 +128,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.21.0 // indirect gonum.org/v1/gonum v0.15.1 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect @@ -246,4 +246,6 @@ replace go.opentelemetry.io/collector/extension/auth/authtest => ../../extension replace go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension +replace go.opentelemetry.io/collector/otelcol => ../../otelcol + replace go.opentelemetry.io/collector/component/componentattribute => ../../component/componentattribute diff --git a/internal/e2e/go.sum b/internal/e2e/go.sum index d6ca4ccbfd0..11032a975bd 100644 --- a/internal/e2e/go.sum +++ b/internal/e2e/go.sum @@ -164,8 +164,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -184,8 +184,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= diff --git a/otelcol/factories.go b/otelcol/factories.go index 7528fa00666..c080dbde584 100644 --- a/otelcol/factories.go +++ b/otelcol/factories.go @@ -4,6 +4,8 @@ package otelcol // import "go.opentelemetry.io/collector/otelcol" import ( + "fmt" + "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/exporter" @@ -45,3 +47,16 @@ type Factories struct { // ConnectorModules maps connector types to their respective go modules. ConnectorModules map[component.Type]string } + +// MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. +// It returns a non-nil error when there are factories with duplicate type. +func MakeFactoryMap[T component.Factory](factories ...T) (map[component.Type]T, error) { + fMap := map[component.Type]T{} + for _, f := range factories { + if _, ok := fMap[f.Type()]; ok { + return fMap, fmt.Errorf("duplicate component factory %q", f.Type()) + } + fMap[f.Type()] = f + } + return fMap, nil +} diff --git a/otelcol/factories_test.go b/otelcol/factories_test.go index ccf28ff242c..808a4e8e9d1 100644 --- a/otelcol/factories_test.go +++ b/otelcol/factories_test.go @@ -4,6 +4,11 @@ package otelcol import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/connector/connectortest" @@ -21,7 +26,7 @@ func nopFactories() (Factories, error) { var factories Factories var err error - if factories.Connectors, err = connector.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { + if factories.Connectors, err = MakeFactoryMap(connectortest.NewNopFactory()); err != nil { return Factories{}, err } factories.ConnectorModules = make(map[component.Type]string, len(factories.Connectors)) @@ -29,7 +34,7 @@ func nopFactories() (Factories, error) { factories.ConnectorModules[con.Type()] = "go.opentelemetry.io/collector/connector/connectortest v1.2.3" } - if factories.Extensions, err = extension.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { + if factories.Extensions, err = MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { return Factories{}, err } factories.ExtensionModules = make(map[component.Type]string, len(factories.Extensions)) @@ -37,7 +42,7 @@ func nopFactories() (Factories, error) { factories.ExtensionModules[ext.Type()] = "go.opentelemetry.io/collector/extension/extensiontest v1.2.3" } - if factories.Receivers, err = receiver.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { + if factories.Receivers, err = MakeFactoryMap(receivertest.NewNopFactory()); err != nil { return Factories{}, err } factories.ReceiverModules = make(map[component.Type]string, len(factories.Receivers)) @@ -45,7 +50,7 @@ func nopFactories() (Factories, error) { factories.ReceiverModules[rec.Type()] = "go.opentelemetry.io/collector/receiver/receivertest v1.2.3" } - if factories.Exporters, err = exporter.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { + if factories.Exporters, err = MakeFactoryMap(exportertest.NewNopFactory()); err != nil { return Factories{}, err } factories.ExporterModules = make(map[component.Type]string, len(factories.Exporters)) @@ -53,7 +58,7 @@ func nopFactories() (Factories, error) { factories.ExporterModules[exp.Type()] = "go.opentelemetry.io/collector/exporter/exportertest v1.2.3" } - if factories.Processors, err = processor.MakeFactoryMap(processortest.NewNopFactory()); err != nil { + if factories.Processors, err = MakeFactoryMap(processortest.NewNopFactory()); err != nil { return Factories{}, err } factories.ProcessorModules = make(map[component.Type]string, len(factories.Processors)) @@ -63,3 +68,47 @@ func nopFactories() (Factories, error) { return factories, err } + +func TestMakeFactoryMap(t *testing.T) { + type testCase struct { + name string + in []component.Factory + out map[component.Type]component.Factory + } + + fRec := receiver.NewFactory(component.MustNewType("rec"), nil) + fRec2 := receiver.NewFactory(component.MustNewType("rec"), nil) + fPro := processor.NewFactory(component.MustNewType("pro"), nil) + fCon := connector.NewFactory(component.MustNewType("con"), nil) + fExp := exporter.NewFactory(component.MustNewType("exp"), nil) + fExt := extension.NewFactory(component.MustNewType("ext"), nil, nil, component.StabilityLevelUndefined) + testCases := []testCase{ + { + name: "different names", + in: []component.Factory{fRec, fPro, fCon, fExp, fExt}, + out: map[component.Type]component.Factory{ + fRec.Type(): fRec, + fPro.Type(): fPro, + fCon.Type(): fCon, + fExp.Type(): fExp, + fExt.Type(): fExt, + }, + }, + { + name: "same name", + in: []component.Factory{fRec, fPro, fCon, fExp, fExt, fRec2}, + }, + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + out, err := MakeFactoryMap(tt.in...) + if tt.out == nil { + assert.Error(t, err) + return + } + require.NoError(t, err) + assert.Equal(t, tt.out, out) + }) + } +} diff --git a/otelcol/otelcoltest/go.mod b/otelcol/otelcoltest/go.mod index b5ab4ed73cb..e7534adc816 100644 --- a/otelcol/otelcoltest/go.mod +++ b/otelcol/otelcoltest/go.mod @@ -11,17 +11,12 @@ require ( go.opentelemetry.io/collector/confmap/provider/httpprovider v1.25.0 go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.25.0 go.opentelemetry.io/collector/confmap/xconfmap v0.0.0-20250205001856-68ff067415c1 - go.opentelemetry.io/collector/connector v0.119.0 go.opentelemetry.io/collector/connector/connectortest v0.119.0 - go.opentelemetry.io/collector/exporter v0.119.0 go.opentelemetry.io/collector/exporter/exportertest v0.119.0 - go.opentelemetry.io/collector/extension v0.119.0 go.opentelemetry.io/collector/extension/extensiontest v0.119.0 go.opentelemetry.io/collector/otelcol v0.119.0 go.opentelemetry.io/collector/pipeline v0.119.0 - go.opentelemetry.io/collector/processor v0.119.0 go.opentelemetry.io/collector/processor/processortest v0.119.0 - go.opentelemetry.io/collector/receiver v0.119.0 go.opentelemetry.io/collector/receiver/receivertest v0.119.0 go.opentelemetry.io/collector/service v0.119.0 go.uber.org/goleak v1.3.0 @@ -70,12 +65,15 @@ require ( go.opentelemetry.io/collector/component/componentstatus v0.119.0 // indirect go.opentelemetry.io/collector/component/componenttest v0.119.0 // indirect go.opentelemetry.io/collector/config/configtelemetry v0.119.0 // indirect + go.opentelemetry.io/collector/connector v0.119.0 // indirect go.opentelemetry.io/collector/connector/xconnector v0.119.0 // indirect go.opentelemetry.io/collector/consumer v1.25.0 // indirect go.opentelemetry.io/collector/consumer/consumererror v0.119.0 // indirect go.opentelemetry.io/collector/consumer/consumertest v0.119.0 // indirect go.opentelemetry.io/collector/consumer/xconsumer v0.119.0 // indirect + go.opentelemetry.io/collector/exporter v0.119.0 // indirect go.opentelemetry.io/collector/exporter/xexporter v0.119.0 // indirect + go.opentelemetry.io/collector/extension v0.119.0 // indirect go.opentelemetry.io/collector/extension/extensioncapabilities v0.119.0 // indirect go.opentelemetry.io/collector/featuregate v1.25.0 // indirect go.opentelemetry.io/collector/internal/fanoutconsumer v0.119.0 // indirect @@ -83,7 +81,9 @@ require ( go.opentelemetry.io/collector/pdata/pprofile v0.119.0 // indirect go.opentelemetry.io/collector/pdata/testdata v0.119.0 // indirect go.opentelemetry.io/collector/pipeline/xpipeline v0.119.0 // indirect + go.opentelemetry.io/collector/processor v0.119.0 // indirect go.opentelemetry.io/collector/processor/xprocessor v0.119.0 // indirect + go.opentelemetry.io/collector/receiver v0.119.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.119.0 // indirect go.opentelemetry.io/collector/semconv v0.119.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect diff --git a/otelcol/otelcoltest/nop_factories.go b/otelcol/otelcoltest/nop_factories.go index 930db9fc89e..326430f8ecb 100644 --- a/otelcol/otelcoltest/nop_factories.go +++ b/otelcol/otelcoltest/nop_factories.go @@ -4,43 +4,24 @@ package otelcoltest // import "go.opentelemetry.io/collector/otelcol/otelcoltest" import ( - "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/connector/connectortest" - "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exportertest" - "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/extensiontest" "go.opentelemetry.io/collector/otelcol" - "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/processortest" - "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" ) // NopFactories returns a otelcol.Factories with all nop factories. func NopFactories() (otelcol.Factories, error) { var factories otelcol.Factories - var err error - if factories.Extensions, err = extension.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } + // MakeFactoryMap can never return an error with a single Factory + factories.Extensions, _ = otelcol.MakeFactoryMap(extensiontest.NewNopFactory()) + factories.Receivers, _ = otelcol.MakeFactoryMap(receivertest.NewNopFactory()) + factories.Exporters, _ = otelcol.MakeFactoryMap(exportertest.NewNopFactory()) + factories.Processors, _ = otelcol.MakeFactoryMap(processortest.NewNopFactory()) + factories.Connectors, _ = otelcol.MakeFactoryMap(connectortest.NewNopFactory()) - if factories.Receivers, err = receiver.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Exporters, err = exporter.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Processors, err = processor.MakeFactoryMap(processortest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Connectors, err = connector.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - return factories, err + return factories, nil } diff --git a/processor/processor.go b/processor/processor.go index 8ecd4d497c6..b7a7d60e7e3 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -193,6 +193,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[processor.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/receiver/receiver.go b/receiver/receiver.go index dd7242d5f77..b33a96c5bf0 100644 --- a/receiver/receiver.go +++ b/receiver/receiver.go @@ -200,6 +200,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[receiver.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/scraper/factory.go b/scraper/factory.go index e801074d0ae..e296559dc4b 100644 --- a/scraper/factory.go +++ b/scraper/factory.go @@ -138,6 +138,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[scraper.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/service/go.mod b/service/go.mod index 138e190d4bc..de2e49022fe 100644 --- a/service/go.mod +++ b/service/go.mod @@ -32,6 +32,7 @@ require ( go.opentelemetry.io/collector/extension/zpagesextension v0.119.0 go.opentelemetry.io/collector/featuregate v1.25.0 go.opentelemetry.io/collector/internal/fanoutconsumer v0.119.0 + go.opentelemetry.io/collector/otelcol v0.119.0 go.opentelemetry.io/collector/pdata v1.25.0 go.opentelemetry.io/collector/pdata/pprofile v0.119.0 go.opentelemetry.io/collector/pdata/testdata v0.119.0 @@ -75,6 +76,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.11 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect @@ -92,6 +94,8 @@ require ( github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rs/cors v1.11.1 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect @@ -118,8 +122,9 @@ require ( go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 // indirect go.opentelemetry.io/otel/sdk/log v0.10.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect @@ -219,3 +224,5 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../extension/ex replace go.opentelemetry.io/collector/extension/auth/authtest => ../extension/auth/authtest replace go.opentelemetry.io/collector/extension/xextension => ../extension/xextension + +replace go.opentelemetry.io/collector/otelcol => ../otelcol diff --git a/service/go.sum b/service/go.sum index 9a1535863ec..bc9ddd1f5e5 100644 --- a/service/go.sum +++ b/service/go.sum @@ -4,6 +4,7 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -38,6 +39,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3Ar github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -87,8 +90,13 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -160,8 +168,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -180,8 +188,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= diff --git a/service/internal/builders/builders.go b/service/internal/builders/builders.go index bf5844bd932..4e332b3012a 100644 --- a/service/internal/builders/builders.go +++ b/service/internal/builders/builders.go @@ -13,7 +13,7 @@ import ( var ( errNilNextConsumer = errors.New("nil next Consumer") - nopType = component.MustNewType("nop") + NopType = component.MustNewType("nop") ) // logStabilityLevel logs the stability level of a component. The log level is set to info for diff --git a/service/internal/builders/connector.go b/service/internal/builders/connector.go index b157d2dd64a..dffc3bb0f65 100644 --- a/service/internal/builders/connector.go +++ b/service/internal/builders/connector.go @@ -386,13 +386,13 @@ func NewNopConnectorConfigsAndFactories() (map[component.ID]component.Config, ma // Use a different ID than receivertest and exportertest to avoid ambiguous // configuration scenarios. Ambiguous IDs are detected in the 'otelcol' package, // but lower level packages such as 'service' assume that IDs are disambiguated. - connID := component.NewIDWithName(nopType, "conn") + connID := component.NewIDWithName(NopType, "conn") configs := map[component.ID]component.Config{ connID: nopFactory.CreateDefaultConfig(), } factories := map[component.Type]connector.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/exporter.go b/service/internal/builders/exporter.go index 6570828b76f..bb2367d22b7 100644 --- a/service/internal/builders/exporter.go +++ b/service/internal/builders/exporter.go @@ -102,10 +102,10 @@ func (b *ExporterBuilder) Factory(componentType component.Type) component.Factor func NewNopExporterConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]exporter.Factory) { nopFactory := exportertest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]exporter.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/extension.go b/service/internal/builders/extension.go index 6ac32fe5698..35c2bead4aa 100644 --- a/service/internal/builders/extension.go +++ b/service/internal/builders/extension.go @@ -60,10 +60,10 @@ func (b *ExtensionBuilder) Factory(componentType component.Type) component.Facto func NewNopExtensionConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]extension.Factory) { nopFactory := extensiontest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]extension.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories } diff --git a/service/internal/builders/processor.go b/service/internal/builders/processor.go index c0df0f3b575..8e19bed3ea9 100644 --- a/service/internal/builders/processor.go +++ b/service/internal/builders/processor.go @@ -116,10 +116,10 @@ func (b *ProcessorBuilder) Factory(componentType component.Type) component.Facto func NewNopProcessorConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]processor.Factory) { nopFactory := processortest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]processor.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/receiver.go b/service/internal/builders/receiver.go index 007d9be2187..2568392622b 100644 --- a/service/internal/builders/receiver.go +++ b/service/internal/builders/receiver.go @@ -118,10 +118,10 @@ func (b *ReceiverBuilder) Factory(componentType component.Type) component.Factor func NewNopReceiverConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]receiver.Factory) { nopFactory := receivertest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]receiver.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/connector_test.go b/service/internal/builderstest/connector_test.go similarity index 97% rename from service/internal/builders/connector_test.go rename to service/internal/builderstest/connector_test.go index a1d60dbf816..dfb14b3e6c3 100644 --- a/service/internal/builders/connector_test.go +++ b/service/internal/builderstest/connector_test.go @@ -19,13 +19,15 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/pipeline" "go.opentelemetry.io/collector/pipeline/xpipeline" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestConnectorBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := connector.MakeFactoryMap([]connector.Factory{ + factories, err := otelcol.MakeFactoryMap([]connector.Factory{ connector.NewFactory(component.MustNewType("err"), nil), xconnector.NewFactory( component.MustNewType("all"), @@ -119,7 +121,7 @@ func TestConnectorBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewConnector(cfgs, factories) + b := builders.NewConnector(cfgs, factories) t2t, err := b.CreateTracesToTraces(context.Background(), createConnectorSettings(tt.id), tt.nextTraces) if expectedErr := tt.err(pipeline.SignalTraces, pipeline.SignalTraces); expectedErr != "" { @@ -262,7 +264,7 @@ func TestConnectorBuilder(t *testing.T) { func TestConnectorBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := connector.MakeFactoryMap([]connector.Factory{ + factories, err := otelcol.MakeFactoryMap([]connector.Factory{ xconnector.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -287,7 +289,7 @@ func TestConnectorBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewConnector(map[component.ID]component.Config{}, factories) + bErr := builders.NewConnector(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") t2t, err := bErr.CreateTracesToTraces(context.Background(), createConnectorSettings(missingID), consumertest.NewNop()) @@ -356,11 +358,11 @@ func TestConnectorBuilderMissingConfig(t *testing.T) { } func TestConnectorBuilderGetters(t *testing.T) { - factories, err := connector.MakeFactoryMap([]connector.Factory{connector.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]connector.Factory{connector.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewConnector(cfgs, factories) + b := builders.NewConnector(cfgs, factories) assert.True(t, b.IsConfigured(component.MustNewID("foo"))) assert.False(t, b.IsConfigured(component.MustNewID("bar"))) @@ -370,14 +372,14 @@ func TestConnectorBuilderGetters(t *testing.T) { } func TestNewNopConnectorConfigsAndFactories(t *testing.T) { - configs, factories := NewNopConnectorConfigsAndFactories() - builder := NewConnector(configs, factories) + configs, factories := builders.NewNopConnectorConfigsAndFactories() + builder := builders.NewConnector(configs, factories) require.NotNil(t, builder) factory := connectortest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := connectortest.NewNopSettings() - set.ID = component.NewIDWithName(nopType, "conn") + set.ID = component.NewIDWithName(builders.NopType, "conn") tracesToTraces, err := factory.CreateTracesToTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err) diff --git a/service/internal/builders/exporter_test.go b/service/internal/builderstest/exporter_test.go similarity index 90% rename from service/internal/builders/exporter_test.go rename to service/internal/builderstest/exporter_test.go index d6435753fb6..4a632030b6f 100644 --- a/service/internal/builders/exporter_test.go +++ b/service/internal/builderstest/exporter_test.go @@ -16,11 +16,13 @@ import ( "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exportertest" "go.opentelemetry.io/collector/exporter/xexporter" + "go.opentelemetry.io/collector/otelcol" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestExporterBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := exporter.MakeFactoryMap([]exporter.Factory{ + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{ exporter.NewFactory(component.MustNewType("err"), nil), xexporter.NewFactory( component.MustNewType("all"), @@ -61,7 +63,7 @@ func TestExporterBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewExporter(cfgs, factories) + b := builders.NewExporter(cfgs, factories) te, err := b.CreateTraces(context.Background(), createExporterSettings(tt.id)) if tt.err != "" { @@ -104,7 +106,7 @@ func TestExporterBuilder(t *testing.T) { func TestExporterBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := exporter.MakeFactoryMap([]exporter.Factory{ + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{ xexporter.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -117,7 +119,7 @@ func TestExporterBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewExporter(map[component.ID]component.Config{}, factories) + bErr := builders.NewExporter(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), createExporterSettings(missingID)) @@ -138,25 +140,25 @@ func TestExporterBuilderMissingConfig(t *testing.T) { } func TestExporterBuilderFactory(t *testing.T) { - factories, err := exporter.MakeFactoryMap([]exporter.Factory{exporter.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{exporter.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewExporter(cfgs, factories) + b := builders.NewExporter(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopExporterConfigsAndFactories(t *testing.T) { - configs, factories := NewNopExporterConfigsAndFactories() - builder := NewExporter(configs, factories) + configs, factories := builders.NewNopExporterConfigsAndFactories() + builder := builders.NewExporter(configs, factories) require.NotNil(t, builder) factory := exportertest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := exportertest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg) require.NoError(t, err) diff --git a/service/internal/builders/extension_test.go b/service/internal/builderstest/extension_test.go similarity index 82% rename from service/internal/builders/extension_test.go rename to service/internal/builderstest/extension_test.go index 527a078a71d..a941741ebfe 100644 --- a/service/internal/builders/extension_test.go +++ b/service/internal/builderstest/extension_test.go @@ -14,6 +14,8 @@ import ( "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/extensiontest" + "go.opentelemetry.io/collector/otelcol" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestExtensionBuilder(t *testing.T) { @@ -22,7 +24,7 @@ func TestExtensionBuilder(t *testing.T) { testID := component.NewID(testType) unknownID := component.MustNewID("unknown") - factories, err := extension.MakeFactoryMap([]extension.Factory{ + factories, err := otelcol.MakeFactoryMap([]extension.Factory{ extension.NewFactory( testType, func() component.Config { return &defaultCfg }, @@ -34,7 +36,7 @@ func TestExtensionBuilder(t *testing.T) { require.NoError(t, err) cfgs := map[component.ID]component.Config{testID: defaultCfg, unknownID: defaultCfg} - b := NewExtension(cfgs, factories) + b := builders.NewExtension(cfgs, factories) e, err := b.Create(context.Background(), createExtensionSettings(testID)) require.NoError(t, err) @@ -55,25 +57,25 @@ func TestExtensionBuilder(t *testing.T) { } func TestExtensionBuilderFactory(t *testing.T) { - factories, err := extension.MakeFactoryMap([]extension.Factory{extension.NewFactory(component.MustNewType("foo"), nil, nil, component.StabilityLevelDevelopment)}...) + factories, err := otelcol.MakeFactoryMap([]extension.Factory{extension.NewFactory(component.MustNewType("foo"), nil, nil, component.StabilityLevelDevelopment)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewExtension(cfgs, factories) + b := builders.NewExtension(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopExtensionConfigsAndFactories(t *testing.T) { - configs, factories := NewNopExtensionConfigsAndFactories() - builder := NewExtension(configs, factories) + configs, factories := builders.NewNopExtensionConfigsAndFactories() + builder := builders.NewExtension(configs, factories) require.NotNil(t, builder) factory := extensiontest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := extensiontest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) ext, err := factory.Create(context.Background(), set, cfg) require.NoError(t, err) diff --git a/service/internal/builders/processor_test.go b/service/internal/builderstest/processor_test.go similarity index 92% rename from service/internal/builders/processor_test.go rename to service/internal/builderstest/processor_test.go index 6bd12114629..1a4b3b7ca99 100644 --- a/service/internal/builders/processor_test.go +++ b/service/internal/builderstest/processor_test.go @@ -15,14 +15,16 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/processortest" "go.opentelemetry.io/collector/processor/xprocessor" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestProcessorBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := processor.MakeFactoryMap([]processor.Factory{ + factories, err := otelcol.MakeFactoryMap([]processor.Factory{ processor.NewFactory(component.MustNewType("err"), nil), xprocessor.NewFactory( component.MustNewType("all"), @@ -92,7 +94,7 @@ func TestProcessorBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewProcessor(cfgs, factories) + b := builders.NewProcessor(cfgs, factories) te, err := b.CreateTraces(context.Background(), createProcessorSettings(tt.id), tt.nextTraces) if tt.err != "" { @@ -135,7 +137,7 @@ func TestProcessorBuilder(t *testing.T) { func TestProcessorBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := processor.MakeFactoryMap([]processor.Factory{ + factories, err := otelcol.MakeFactoryMap([]processor.Factory{ xprocessor.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -148,7 +150,7 @@ func TestProcessorBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewProcessor(map[component.ID]component.Config{}, factories) + bErr := builders.NewProcessor(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), createProcessorSettings(missingID), consumertest.NewNop()) @@ -169,25 +171,25 @@ func TestProcessorBuilderMissingConfig(t *testing.T) { } func TestProcessorBuilderFactory(t *testing.T) { - factories, err := processor.MakeFactoryMap([]processor.Factory{processor.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]processor.Factory{processor.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewProcessor(cfgs, factories) + b := builders.NewProcessor(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopProcessorBuilder(t *testing.T) { - configs, factories := NewNopProcessorConfigsAndFactories() - builder := NewProcessor(configs, factories) + configs, factories := builders.NewNopProcessorConfigsAndFactories() + builder := builders.NewProcessor(configs, factories) require.NotNil(t, builder) factory := processortest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := processortest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err) diff --git a/service/internal/builders/receiver_test.go b/service/internal/builderstest/receiver_test.go similarity index 92% rename from service/internal/builders/receiver_test.go rename to service/internal/builderstest/receiver_test.go index 0d1239f98d8..bd3b3db7a18 100644 --- a/service/internal/builders/receiver_test.go +++ b/service/internal/builderstest/receiver_test.go @@ -15,14 +15,16 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" "go.opentelemetry.io/collector/receiver/xreceiver" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestReceiverBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := receiver.MakeFactoryMap([]receiver.Factory{ + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{ receiver.NewFactory(component.MustNewType("err"), nil), xreceiver.NewFactory( component.MustNewType("all"), @@ -92,7 +94,7 @@ func TestReceiverBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewReceiver(cfgs, factories) + b := builders.NewReceiver(cfgs, factories) te, err := b.CreateTraces(context.Background(), settings(tt.id), tt.nextTraces) if tt.err != "" { @@ -135,7 +137,7 @@ func TestReceiverBuilder(t *testing.T) { func TestReceiverBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := receiver.MakeFactoryMap([]receiver.Factory{ + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{ xreceiver.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -148,7 +150,7 @@ func TestReceiverBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewReceiver(map[component.ID]component.Config{}, factories) + bErr := builders.NewReceiver(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), settings(missingID), consumertest.NewNop()) @@ -169,25 +171,25 @@ func TestReceiverBuilderMissingConfig(t *testing.T) { } func TestReceiverBuilderFactory(t *testing.T) { - factories, err := receiver.MakeFactoryMap([]receiver.Factory{receiver.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{receiver.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewReceiver(cfgs, factories) + b := builders.NewReceiver(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopReceiverConfigsAndFactories(t *testing.T) { - configs, factories := NewNopReceiverConfigsAndFactories() - builder := NewReceiver(configs, factories) + configs, factories := builders.NewNopReceiverConfigsAndFactories() + builder := builders.NewReceiver(configs, factories) require.NotNil(t, builder) factory := receivertest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := receivertest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err)