Skip to content

Commit 6eb6bdd

Browse files
committed
Deprecate component.Factories in favor of service.Factories
1 parent 28cd749 commit 6eb6bdd

18 files changed

+107
-51
lines changed

.chloggen/refactories.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: deprecation
3+
4+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
5+
component: component
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: Deprecate component.Factories in favor of service.Factories
9+
10+
# One or more tracking issues or pull requests related to the change
11+
issues: [6723]
12+
13+
# (Optional) One or more lines of additional information to render under the primary note.
14+
# These lines will be padded with 2 spaces and then inserted directly into the document.
15+
# Use pipe (|) for multiline entries.
16+
subtext:

component/componenttest/nop_factories.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"go.opentelemetry.io/collector/receiver"
2323
)
2424

25-
// NopFactories returns a component.Factories with all nop factories.
25+
// Deprecated: [v0.68.0] use servicetest.NopFactories.
2626
func NopFactories() (component.Factories, error) {
2727
var factories component.Factories
2828
var err error

component/factories.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ import (
1818
"fmt"
1919
)
2020

21-
// Factories struct holds in a single type all component factories that
22-
// can be handled by the Config.
21+
// Deprecated: [v0.68.0] use service.Factories.
2322
type Factories struct {
2423
// Receivers maps receiver type names in the config to the respective factory.
2524
Receivers map[Type]ReceiverFactory

otelcol/collector_windows_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ import (
2727
"golang.org/x/sys/windows/svc"
2828

2929
"go.opentelemetry.io/collector/component"
30-
"go.opentelemetry.io/collector/component/componenttest"
30+
"go.opentelemetry.io/collector/service/servicetest"
3131
)
3232

3333
func TestNewSvcHandler(t *testing.T) {
3434
oldArgs := os.Args
3535
defer func() { os.Args = oldArgs }()
3636
os.Args = []string{"otelcol", "--config", filepath.Join("testdata", "otelcol-nop.yaml")}
3737

38-
factories, err := componenttest.NopFactories()
38+
factories, err := servicetest.NopFactories()
3939
require.NoError(t, err)
4040

4141
s := NewSvcHandler(CollectorSettings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})

otelcol/command_components_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ import (
2525
"gopkg.in/yaml.v3"
2626

2727
"go.opentelemetry.io/collector/component"
28-
"go.opentelemetry.io/collector/component/componenttest"
28+
"go.opentelemetry.io/collector/service/servicetest"
2929
)
3030

3131
func TestNewBuildSubCommand(t *testing.T) {
32-
factories, err := componenttest.NopFactories()
32+
factories, err := servicetest.NopFactories()
3333
require.NoError(t, err)
3434

3535
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))

otelcol/command_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ import (
2222
"github.com/stretchr/testify/require"
2323

2424
"go.opentelemetry.io/collector/component"
25-
"go.opentelemetry.io/collector/component/componenttest"
2625
"go.opentelemetry.io/collector/confmap"
2726
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
2827
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
28+
"go.opentelemetry.io/collector/service/servicetest"
2929
)
3030

3131
func TestNewCommandVersion(t *testing.T) {
@@ -34,15 +34,15 @@ func TestNewCommandVersion(t *testing.T) {
3434
}
3535

3636
func TestNewCommandNoConfigURI(t *testing.T) {
37-
factories, err := componenttest.NopFactories()
37+
factories, err := servicetest.NopFactories()
3838
require.NoError(t, err)
3939

4040
cmd := NewCommand(CollectorSettings{Factories: factories})
4141
require.Error(t, cmd.Execute())
4242
}
4343

4444
func TestNewCommandInvalidComponent(t *testing.T) {
45-
factories, err := componenttest.NopFactories()
45+
factories, err := servicetest.NopFactories()
4646
require.NoError(t, err)
4747

4848
cfgProvider, err := NewConfigProvider(

otelcol/config_provider_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"go.uber.org/zap/zapcore"
2626

2727
"go.opentelemetry.io/collector/component"
28-
"go.opentelemetry.io/collector/component/componenttest"
2928
"go.opentelemetry.io/collector/config/configtelemetry"
3029
"go.opentelemetry.io/collector/confmap"
3130
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
@@ -35,6 +34,7 @@ import (
3534
"go.opentelemetry.io/collector/processor/processortest"
3635
"go.opentelemetry.io/collector/receiver/receivertest"
3736
"go.opentelemetry.io/collector/service"
37+
"go.opentelemetry.io/collector/service/servicetest"
3838
"go.opentelemetry.io/collector/service/telemetry"
3939
)
4040

@@ -101,7 +101,7 @@ func TestConfigProviderYaml(t *testing.T) {
101101
cp, err := NewConfigProvider(set)
102102
require.NoError(t, err)
103103

104-
factories, err := componenttest.NopFactories()
104+
factories, err := servicetest.NopFactories()
105105
require.NoError(t, err)
106106

107107
cfg, err := cp.Get(context.Background(), factories)
@@ -122,7 +122,7 @@ func TestConfigProviderFile(t *testing.T) {
122122
cp, err := NewConfigProvider(set)
123123
require.NoError(t, err)
124124

125-
factories, err := componenttest.NopFactories()
125+
factories, err := servicetest.NopFactories()
126126
require.NoError(t, err)
127127

128128
cfg, err := cp.Get(context.Background(), factories)

otelcol/otelcoltest/config.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ package otelcoltest // import "go.opentelemetry.io/collector/otelcol/otelcoltest
1717
import (
1818
"context"
1919

20-
"go.opentelemetry.io/collector/component"
2120
"go.opentelemetry.io/collector/confmap"
2221
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
2322
"go.opentelemetry.io/collector/confmap/provider/envprovider"
2423
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
2524
"go.opentelemetry.io/collector/confmap/provider/httpprovider"
2625
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
2726
"go.opentelemetry.io/collector/otelcol"
27+
"go.opentelemetry.io/collector/service"
2828
)
2929

3030
// LoadConfig loads a config.Config from file, and does NOT validate the configuration.
31-
func LoadConfig(fileName string, factories component.Factories) (*otelcol.Config, error) {
31+
func LoadConfig(fileName string, factories service.Factories) (*otelcol.Config, error) {
3232
// Read yaml config from file
3333
provider, err := otelcol.NewConfigProvider(otelcol.ConfigProviderSettings{
3434
ResolverSettings: confmap.ResolverSettings{
@@ -44,7 +44,7 @@ func LoadConfig(fileName string, factories component.Factories) (*otelcol.Config
4444
}
4545

4646
// LoadConfigAndValidate loads a config from the file, and validates the configuration.
47-
func LoadConfigAndValidate(fileName string, factories component.Factories) (*otelcol.Config, error) {
47+
func LoadConfigAndValidate(fileName string, factories service.Factories) (*otelcol.Config, error) {
4848
cfg, err := LoadConfig(fileName, factories)
4949
if err != nil {
5050
return nil, err

otelcol/otelcoltest/config_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ import (
2222
"github.com/stretchr/testify/require"
2323

2424
"go.opentelemetry.io/collector/component"
25-
"go.opentelemetry.io/collector/component/componenttest"
2625
"go.opentelemetry.io/collector/service"
26+
"go.opentelemetry.io/collector/service/servicetest"
2727
)
2828

2929
func TestLoadConfig(t *testing.T) {
30-
factories, err := componenttest.NopFactories()
30+
factories, err := servicetest.NopFactories()
3131
assert.NoError(t, err)
3232

3333
cfg, err := LoadConfig(filepath.Join("testdata", "config.yaml"), factories)
@@ -68,7 +68,7 @@ func TestLoadConfig(t *testing.T) {
6868
}
6969

7070
func TestLoadConfigAndValidate(t *testing.T) {
71-
factories, err := componenttest.NopFactories()
71+
factories, err := servicetest.NopFactories()
7272
assert.NoError(t, err)
7373

7474
cfgValidate, errValidate := LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories)

service/collector_test.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ import (
3434
"go.uber.org/zap/zapcore"
3535

3636
"go.opentelemetry.io/collector/component"
37-
"go.opentelemetry.io/collector/component/componenttest"
3837
"go.opentelemetry.io/collector/confmap"
3938
"go.opentelemetry.io/collector/extension/zpagesextension"
4039
"go.opentelemetry.io/collector/featuregate"
4140
"go.opentelemetry.io/collector/internal/obsreportconfig"
4241
"go.opentelemetry.io/collector/internal/testutil"
42+
"go.opentelemetry.io/collector/service/servicetest"
4343
)
4444

4545
func TestStateString(t *testing.T) {
@@ -51,7 +51,7 @@ func TestStateString(t *testing.T) {
5151
}
5252

5353
func TestCollectorStartAsGoRoutine(t *testing.T) {
54-
factories, err := componenttest.NopFactories()
54+
factories, err := servicetest.NopFactories()
5555
require.NoError(t, err)
5656

5757
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -79,7 +79,7 @@ func TestCollectorStartAsGoRoutine(t *testing.T) {
7979
}
8080

8181
func TestCollectorCancelContext(t *testing.T) {
82-
factories, err := componenttest.NopFactories()
82+
factories, err := servicetest.NopFactories()
8383
require.NoError(t, err)
8484

8585
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -116,7 +116,7 @@ func (p mockCfgProvider) Watch() <-chan error {
116116
}
117117

118118
func TestCollectorStateAfterConfigChange(t *testing.T) {
119-
factories, err := componenttest.NopFactories()
119+
factories, err := servicetest.NopFactories()
120120
require.NoError(t, err)
121121

122122
provider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -150,7 +150,7 @@ func TestCollectorStateAfterConfigChange(t *testing.T) {
150150
}
151151

152152
func TestCollectorReportError(t *testing.T) {
153-
factories, err := componenttest.NopFactories()
153+
factories, err := servicetest.NopFactories()
154154
require.NoError(t, err)
155155

156156
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -177,7 +177,7 @@ func TestCollectorReportError(t *testing.T) {
177177
}
178178

179179
func TestCollectorSendSignal(t *testing.T) {
180-
factories, err := componenttest.NopFactories()
180+
factories, err := servicetest.NopFactories()
181181
require.NoError(t, err)
182182

183183
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -211,7 +211,7 @@ func TestCollectorSendSignal(t *testing.T) {
211211

212212
func TestCollectorFailedShutdown(t *testing.T) {
213213
t.Skip("This test was using telemetry shutdown failure, switch to use a component that errors on shutdown.")
214-
factories, err := componenttest.NopFactories()
214+
factories, err := servicetest.NopFactories()
215215
require.NoError(t, err)
216216

217217
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -243,7 +243,7 @@ func TestCollectorFailedShutdown(t *testing.T) {
243243
}
244244

245245
func TestCollectorStartInvalidConfig(t *testing.T) {
246-
factories, err := componenttest.NopFactories()
246+
factories, err := servicetest.NopFactories()
247247
require.NoError(t, err)
248248

249249
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))
@@ -361,7 +361,7 @@ func ownMetricsTestCases(version string) []ownMetricsTestCase {
361361
}
362362

363363
func testCollectorStartHelper(t *testing.T, telemetry *telemetryInitializer, tc ownMetricsTestCase) {
364-
factories, err := componenttest.NopFactories()
364+
factories, err := servicetest.NopFactories()
365365
zpagesExt := zpagesextension.NewFactory()
366366
factories.Extensions[zpagesExt.Type()] = zpagesExt
367367
require.NoError(t, err)
@@ -455,7 +455,7 @@ func TestCollectorStartWithTraceContextPropagation(t *testing.T) {
455455

456456
for _, tt := range tests {
457457
t.Run(tt.file, func(t *testing.T) {
458-
factories, err := componenttest.NopFactories()
458+
factories, err := servicetest.NopFactories()
459459
require.NoError(t, err)
460460

461461
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", tt.file)}))
@@ -494,7 +494,7 @@ func TestCollectorRun(t *testing.T) {
494494

495495
for _, tt := range tests {
496496
t.Run(tt.file, func(t *testing.T) {
497-
factories, err := componenttest.NopFactories()
497+
factories, err := servicetest.NopFactories()
498498
require.NoError(t, err)
499499

500500
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", tt.file)}))
@@ -519,7 +519,7 @@ func TestCollectorRun(t *testing.T) {
519519
}
520520

521521
func TestCollectorShutdownBeforeRun(t *testing.T) {
522-
factories, err := componenttest.NopFactories()
522+
factories, err := servicetest.NopFactories()
523523
require.NoError(t, err)
524524

525525
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
@@ -545,7 +545,7 @@ func TestCollectorShutdownBeforeRun(t *testing.T) {
545545
}
546546

547547
func TestCollectorClosedStateOnStartUpError(t *testing.T) {
548-
factories, err := componenttest.NopFactories()
548+
factories, err := servicetest.NopFactories()
549549
require.NoError(t, err)
550550

551551
cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))

service/config_provider.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"context"
1919
"fmt"
2020

21-
"go.opentelemetry.io/collector/component"
2221
"go.opentelemetry.io/collector/confmap"
2322
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
2423
"go.opentelemetry.io/collector/confmap/provider/envprovider"
@@ -43,7 +42,7 @@ type ConfigProvider interface {
4342
// Get returns the service configuration, or error otherwise.
4443
//
4544
// Should never be called concurrently with itself, Watch or Shutdown.
46-
Get(ctx context.Context, factories component.Factories) (*Config, error)
45+
Get(ctx context.Context, factories Factories) (*Config, error)
4746

4847
// Watch blocks until any configuration change was detected or an unrecoverable error
4948
// happened during monitoring the configuration changes.
@@ -102,7 +101,7 @@ func NewConfigProvider(set ConfigProviderSettings) (ConfigProvider, error) {
102101
}, nil
103102
}
104103

105-
func (cm *configProvider) Get(ctx context.Context, factories component.Factories) (*Config, error) {
104+
func (cm *configProvider) Get(ctx context.Context, factories Factories) (*Config, error) {
106105
conf, err := cm.mapResolver.Resolve(ctx)
107106
if err != nil {
108107
return nil, fmt.Errorf("cannot resolve the configuration: %w", err)

service/factories.go

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright The OpenTelemetry Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package service // import "go.opentelemetry.io/collector/service"
16+
17+
import (
18+
"go.opentelemetry.io/collector/component"
19+
)
20+
21+
// Factories struct holds in a single type all component factories that
22+
// can be handled by the Config.
23+
type Factories = component.Factories // nolint:staticcheck

service/host.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var _ component.Host = (*serviceHost)(nil)
2323

2424
type serviceHost struct {
2525
asyncErrorChannel chan error
26-
factories component.Factories
26+
factories Factories
2727
buildInfo component.BuildInfo
2828

2929
pipelines *builtPipelines

0 commit comments

Comments
 (0)