Skip to content

Commit

Permalink
Move Factories to otelcol, delete otelcoltest
Browse files Browse the repository at this point in the history
  • Loading branch information
djaglowski committed Dec 13, 2022
1 parent 7ee940d commit 230c661
Show file tree
Hide file tree
Showing 17 changed files with 98 additions and 42 deletions.
16 changes: 16 additions & 0 deletions .chloggen/mv-factories-otelcol.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: breaking

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: componenttest

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Move NopFactories to otelcoltest

# One or more tracking issues or pull requests related to the change
issues: [6792]

# (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:
2 changes: 1 addition & 1 deletion .chloggen/refactories.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ change_type: deprecation
component: component

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Deprecate component.Factories in favor of service.Factories
note: Deprecate component.Factories in favor of otelcol.Factories

# One or more tracking issues or pull requests related to the change
issues: [6723]
Expand Down
2 changes: 1 addition & 1 deletion component/componenttest/nop_factories.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"go.opentelemetry.io/collector/receiver"
)

// Deprecated: [v0.68.0] use servicetest.NopFactories.
// Deprecated: [v0.68.0] use otelcoltest.NopFactories.
func NopFactories() (component.Factories, error) {
var factories component.Factories
var err error
Expand Down
2 changes: 1 addition & 1 deletion otelcol/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func (s State) String() string {
// CollectorSettings holds configuration for creating a new Collector.
type CollectorSettings struct {
// Factories service factories.
Factories service.Factories
Factories Factories

// BuildInfo provides collector start information.
BuildInfo component.BuildInfo
Expand Down
23 changes: 11 additions & 12 deletions otelcol/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service/servicetest"
)

func TestStateString(t *testing.T) {
Expand All @@ -40,7 +39,7 @@ func TestStateString(t *testing.T) {
}

func TestCollectorStartAsGoRoutine(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

func TestCollectorCancelContext(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
Expand Down Expand Up @@ -103,7 +102,7 @@ func (p mockCfgProvider) Watch() <-chan error {
}

func TestCollectorStateAfterConfigChange(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

provider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
Expand Down Expand Up @@ -136,7 +135,7 @@ func TestCollectorStateAfterConfigChange(t *testing.T) {
}

func TestCollectorReportError(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

func TestCollectorSendSignal(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

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

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
Expand Down Expand Up @@ -226,7 +225,7 @@ func TestCollectorFailedShutdown(t *testing.T) {
}

func TestCollectorStartInvalidConfig(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))
Expand All @@ -253,7 +252,7 @@ func TestCollectorStartWithTraceContextPropagation(t *testing.T) {

for _, tt := range tests {
t.Run(tt.file, func(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", tt.file)}))
Expand Down Expand Up @@ -291,7 +290,7 @@ func TestCollectorRun(t *testing.T) {

for _, tt := range tests {
t.Run(tt.file, func(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

func TestCollectorShutdownBeforeRun(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

func TestCollectorClosedStateOnStartUpError(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))
Expand Down
3 changes: 1 addition & 2 deletions otelcol/collector_windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,14 @@ import (
"golang.org/x/sys/windows/svc"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service/servicetest"
)

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

factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

s := NewSvcHandler(CollectorSettings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})
Expand Down
3 changes: 1 addition & 2 deletions otelcol/command_components_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ import (
"gopkg.in/yaml.v3"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service/servicetest"
)

func TestNewBuildSubCommand(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-nop.yaml")}))
Expand Down
5 changes: 2 additions & 3 deletions otelcol/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
"go.opentelemetry.io/collector/service/servicetest"
)

func TestNewCommandVersion(t *testing.T) {
Expand All @@ -34,15 +33,15 @@ func TestNewCommandVersion(t *testing.T) {
}

func TestNewCommandNoConfigURI(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

func TestNewCommandInvalidComponent(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(
Expand Down
5 changes: 2 additions & 3 deletions otelcol/configprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
"go.opentelemetry.io/collector/confmap/provider/httpprovider"
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
"go.opentelemetry.io/collector/service"
)

// ConfigProvider provides the service configuration.
Expand All @@ -41,7 +40,7 @@ type ConfigProvider interface {
// Get returns the service configuration, or error otherwise.
//
// Should never be called concurrently with itself, Watch or Shutdown.
Get(ctx context.Context, factories service.Factories) (*Config, error)
Get(ctx context.Context, factories Factories) (*Config, error)

// Watch blocks until any configuration change was detected or an unrecoverable error
// happened during monitoring the configuration changes.
Expand Down Expand Up @@ -88,7 +87,7 @@ func NewConfigProvider(set ConfigProviderSettings) (ConfigProvider, error) {
}, nil
}

func (cm *configProvider) Get(ctx context.Context, factories service.Factories) (*Config, error) {
func (cm *configProvider) Get(ctx context.Context, factories Factories) (*Config, error) {
conf, err := cm.mapResolver.Resolve(ctx)
if err != nil {
return nil, fmt.Errorf("cannot resolve the configuration: %w", err)
Expand Down
5 changes: 2 additions & 3 deletions otelcol/configprovider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import (
"go.opentelemetry.io/collector/processor/processortest"
"go.opentelemetry.io/collector/receiver/receivertest"
"go.opentelemetry.io/collector/service"
"go.opentelemetry.io/collector/service/servicetest"
"go.opentelemetry.io/collector/service/telemetry"
)

Expand Down Expand Up @@ -101,7 +100,7 @@ func TestConfigProviderYaml(t *testing.T) {
cp, err := NewConfigProvider(set)
require.NoError(t, err)

factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

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

factories, err := servicetest.NopFactories()
factories, err := nopFactories()
require.NoError(t, err)

cfg, err := cp.Get(context.Background(), factories)
Expand Down
2 changes: 1 addition & 1 deletion service/factories.go → otelcol/factories.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package service // import "go.opentelemetry.io/collector/service"
package otelcol // import "go.opentelemetry.io/collector/otelcol"

import (
"go.opentelemetry.io/collector/component"
Expand Down
49 changes: 49 additions & 0 deletions otelcol/factories_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package otelcol

import (
"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/processor"
"go.opentelemetry.io/collector/processor/processortest"
"go.opentelemetry.io/collector/receiver"
"go.opentelemetry.io/collector/receiver/receivertest"
)

func nopFactories() (Factories, error) {
var factories Factories
var err error

if factories.Extensions, err = extension.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil {
return Factories{}, err
}

if factories.Receivers, err = receiver.MakeFactoryMap(receivertest.NewNopFactory()); err != nil {
return Factories{}, err
}

if factories.Exporters, err = exporter.MakeFactoryMap(exportertest.NewNopFactory()); err != nil {
return Factories{}, err
}

if factories.Processors, err = processor.MakeFactoryMap(processortest.NewNopFactory()); err != nil {
return Factories{}, err
}

return factories, err
}
5 changes: 2 additions & 3 deletions otelcol/otelcoltest/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,10 @@ import (
"go.opentelemetry.io/collector/confmap/provider/httpprovider"
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
"go.opentelemetry.io/collector/otelcol"
"go.opentelemetry.io/collector/service"
)

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

// LoadConfigAndValidate loads a config from the file, and validates the configuration.
func LoadConfigAndValidate(fileName string, factories service.Factories) (*otelcol.Config, error) {
func LoadConfigAndValidate(fileName string, factories otelcol.Factories) (*otelcol.Config, error) {
cfg, err := LoadConfig(fileName, factories)
if err != nil {
return nil, err
Expand Down
5 changes: 2 additions & 3 deletions otelcol/otelcoltest/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@ import (

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service"
"go.opentelemetry.io/collector/service/servicetest"
)

func TestLoadConfig(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := NopFactories()
assert.NoError(t, err)

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

func TestLoadConfigAndValidate(t *testing.T) {
factories, err := servicetest.NopFactories()
factories, err := NopFactories()
assert.NoError(t, err)

cfgValidate, errValidate := LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package servicetest // import "go.opentelemetry.io/collector/service/servicetest"
package otelcoltest // import "go.opentelemetry.io/collector/otelcol/otelcoltest"

import "go.opentelemetry.io/collector/component/componenttest"

// NopFactories returns a service.Factories with all nop factories.
// NopFactories returns a otelcol.Factories with all nop factories.
var NopFactories = componenttest.NopFactories // nolint:staticcheck
2 changes: 1 addition & 1 deletion otelcol/unmarshaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type configSettings struct {

// unmarshal the configSettings from a confmap.Conf.
// After the config is unmarshalled, `Validate()` must be called to validate.
func unmarshal(v *confmap.Conf, factories service.Factories) (*configSettings, error) {
func unmarshal(v *confmap.Conf, factories Factories) (*configSettings, error) {
// Unmarshal top level sections and validate.
cfg := &configSettings{
Receivers: configunmarshaler.NewReceivers(factories.Receivers),
Expand Down
Loading

0 comments on commit 230c661

Please sign in to comment.