Remove TestApplicationStartInfo, add a DefaultApplicationStartInfo (#2595)

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
Bogdan Drutu 2021-03-05 12:52:23 -08:00 committed by GitHub
parent 006d7b5988
commit 2f38767f72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 76 additions and 80 deletions

View File

@ -0,0 +1,41 @@
// 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 component
// ApplicationStartInfo is the information that is logged at the application start and
// passed into each component. This information can be overridden in custom builds.
type ApplicationStartInfo struct {
// Executable file name, e.g. "otelcol".
ExeName string
// Long name, used e.g. in the logs.
LongName string
// Version string.
Version string
// Git hash of the source code.
GitHash string
}
// DefaultApplicationStartInfo returns the default ApplicationStartInfo.
func DefaultApplicationStartInfo() ApplicationStartInfo {
return ApplicationStartInfo{
ExeName: "otelcol",
LongName: "OpenTelemetry Collector",
Version: "latest",
GitHash: "<NOT PROPERLY GENERATED>",
}
}

View File

@ -119,19 +119,3 @@ type ConfigUnmarshaler interface {
// intoCfg interface{}
// An empty interface wrapping a pointer to the config struct to unmarshal into.
type CustomUnmarshaler func(componentViperSection *viper.Viper, intoCfg interface{}) error
// ApplicationStartInfo is the information that is logged at the application start and
// passed into each component. This information can be overridden in custom builds.
type ApplicationStartInfo struct {
// Executable file name, e.g. "otelcol".
ExeName string
// Long name, used e.g. in the logs.
LongName string
// Version string.
Version string
// Git hash of the source code.
GitHash string
}

View File

@ -1,29 +0,0 @@
// 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 componenttest
import (
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/internal/version"
)
func TestApplicationStartInfo() component.ApplicationStartInfo {
return component.ApplicationStartInfo{
ExeName: "otelcol",
LongName: "InProcess Collector",
Version: version.Version,
GitHash: version.GitHash,
}
}

View File

@ -61,7 +61,7 @@ func TestExportersBuilder_Build(t *testing.T) {
},
}
exporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
require.NotNil(t, exporters)
@ -90,7 +90,7 @@ func TestExportersBuilder_Build(t *testing.T) {
// This should result in creating an exporter that has none of consumption
// functions set.
delete(cfg.Service.Pipelines, "trace")
exporters, err = NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
exporters, err = NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NotNil(t, exporters)
assert.NoError(t, err)
@ -131,7 +131,7 @@ func TestExportersBuilder_BuildLogs(t *testing.T) {
},
}
exporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
require.NotNil(t, exporters)
@ -156,7 +156,7 @@ func TestExportersBuilder_BuildLogs(t *testing.T) {
// This should result in creating an exporter that has none of consumption
// functions set.
delete(cfg.Service.Pipelines, "logs")
exporters, err = NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
exporters, err = NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NotNil(t, exporters)
assert.Nil(t, err)
@ -260,7 +260,7 @@ func TestExportersBuilder_ErrorOnNilExporter(t *testing.T) {
},
}
exporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, fm).Build()
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, fm).Build()
assert.Error(t, err)
assert.Zero(t, len(exporters))
})

View File

@ -133,7 +133,7 @@ func TestPipelinesBuilder_BuildVarious(t *testing.T) {
cfg := createExampleConfig(dataType)
// BuildProcessors the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
if test.shouldFail {
assert.Error(t, err)
return
@ -141,7 +141,7 @@ func TestPipelinesBuilder_BuildVarious(t *testing.T) {
require.NoError(t, err)
require.EqualValues(t, 1, len(allExporters))
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
require.NotNil(t, pipelineProcessors)
@ -205,9 +205,9 @@ func testPipeline(t *testing.T, pipelineName string, exporterNames []string) {
require.Nil(t, err)
// BuildProcessors the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
require.NotNil(t, pipelineProcessors)
@ -266,7 +266,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
cfg, err := configtest.LoadConfigFile(t, "testdata/bad_processor_factory.yaml", factories)
require.Nil(t, err)
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
// First test only trace receivers by removing the metrics pipeline.
@ -276,7 +276,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
delete(cfg.Service.Pipelines, "logs")
require.Equal(t, 1, len(cfg.Service.Pipelines))
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.Error(t, err)
assert.Zero(t, len(pipelineProcessors))
@ -285,7 +285,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
cfg.Service.Pipelines["metrics"] = metricsPipeline
require.Equal(t, 1, len(cfg.Service.Pipelines))
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.Error(t, err)
assert.Zero(t, len(pipelineProcessors))
@ -294,7 +294,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
cfg.Service.Pipelines["logs"] = logsPipeline
require.Equal(t, 1, len(cfg.Service.Pipelines))
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.Error(t, err)
assert.Zero(t, len(pipelineProcessors))
}

View File

@ -99,11 +99,11 @@ func testReceivers(
require.Nil(t, err)
// Build the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
receivers, err := NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err := NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.NoError(t, err)
require.NotNil(t, receivers)
@ -199,16 +199,16 @@ func TestReceiversBuilder_BuildCustom(t *testing.T) {
cfg := createExampleConfig(dataType)
// Build the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
if test.shouldFail {
assert.Error(t, err)
return
}
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
receivers, err := NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err := NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.NoError(t, err)
require.NotNil(t, receivers)
@ -271,11 +271,11 @@ func TestReceiversBuilder_DataTypeError(t *testing.T) {
receiver.(*componenttest.ExampleReceiver).FailTraceCreation = true
// Build the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
receivers, err := NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err := NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
// This should fail because "examplereceiver" is attached to "traces" pipeline
// which is a configuration error.
@ -331,9 +331,9 @@ func TestReceiversBuilder_ErrorOnNilReceiver(t *testing.T) {
require.Nil(t, err)
// Build the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
// First test only trace receivers by removing the metrics pipeline.
@ -343,7 +343,7 @@ func TestReceiversBuilder_ErrorOnNilReceiver(t *testing.T) {
delete(cfg.Service.Pipelines, "logs")
require.Equal(t, 1, len(cfg.Service.Pipelines))
receivers, err := NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err := NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.Error(t, err)
assert.Zero(t, len(receivers))
@ -352,7 +352,7 @@ func TestReceiversBuilder_ErrorOnNilReceiver(t *testing.T) {
cfg.Service.Pipelines["metrics"] = metricsPipeline
require.Equal(t, 1, len(cfg.Service.Pipelines))
receivers, err = NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err = NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.Error(t, err)
assert.Zero(t, len(receivers))
@ -361,7 +361,7 @@ func TestReceiversBuilder_ErrorOnNilReceiver(t *testing.T) {
cfg.Service.Pipelines["logs"] = logsPipeline
require.Equal(t, 1, len(cfg.Service.Pipelines))
receivers, err = NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err = NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.Error(t, err)
assert.Zero(t, len(receivers))
}
@ -374,11 +374,11 @@ func TestReceiversBuilder_Unused(t *testing.T) {
assert.NoError(t, err)
// Build the pipeline
allExporters, err := NewExportersBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, factories.Exporters).Build()
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
assert.NoError(t, err)
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
assert.NoError(t, err)
receivers, err := NewReceiversBuilder(zap.NewNop(), componenttest.TestApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
receivers, err := NewReceiversBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, pipelineProcessors, factories.Receivers).Build()
assert.NoError(t, err)
assert.NotNil(t, receivers)

View File

@ -59,7 +59,7 @@ func TestApplication_Start(t *testing.T) {
return nil
}
app, err := New(Parameters{Factories: factories, ApplicationStartInfo: componenttest.TestApplicationStartInfo(), LoggingOptions: []zap.Option{zap.Hooks(hook)}})
app, err := New(Parameters{Factories: factories, ApplicationStartInfo: component.DefaultApplicationStartInfo(), LoggingOptions: []zap.Option{zap.Hooks(hook)}})
require.NoError(t, err)
assert.Equal(t, app.rootCmd, app.Command())
@ -119,7 +119,7 @@ func TestApplication_ReportError(t *testing.T) {
factories, err := defaultcomponents.Components()
require.NoError(t, err)
app, err := New(Parameters{Factories: factories, ApplicationStartInfo: componenttest.TestApplicationStartInfo()})
app, err := New(Parameters{Factories: factories, ApplicationStartInfo: component.DefaultApplicationStartInfo()})
require.NoError(t, err)
app.rootCmd.SetArgs([]string{"--config=testdata/otelcol-config-minimal.yaml"})
@ -143,7 +143,7 @@ func TestApplication_StartAsGoRoutine(t *testing.T) {
require.NoError(t, err)
params := Parameters{
ApplicationStartInfo: componenttest.TestApplicationStartInfo(),
ApplicationStartInfo: component.DefaultApplicationStartInfo(),
ConfigFactory: func(_ *viper.Viper, _ *cobra.Command, factories component.Factories) (*configmodels.Config, error) {
return constructMimumalOpConfig(t, factories), nil
},

View File

@ -24,7 +24,7 @@ import (
"github.com/stretchr/testify/require"
"golang.org/x/sys/windows/svc"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service/defaultcomponents"
)
@ -34,7 +34,7 @@ func TestWindowsService_Execute(t *testing.T) {
factories, err := defaultcomponents.Components()
require.NoError(t, err)
s := NewWindowsService(Parameters{Factories: factories, ApplicationStartInfo: componenttest.TestApplicationStartInfo()})
s := NewWindowsService(Parameters{Factories: factories, ApplicationStartInfo: component.DefaultApplicationStartInfo()})
appDone := make(chan struct{})
requests := make(chan svc.ChangeRequest)