Skip to content

Commit 665ea4a

Browse files
refactor: restore parameterless NewFactory functions for Beat receivers (#49571)
To keep them compatible with OpenTelemetry Collector Builder.
1 parent eff0889 commit 665ea4a

File tree

8 files changed

+34
-31
lines changed

8 files changed

+34
-31
lines changed

changelog/fragments/1773087971-change-beat-receiver-factory-to-have-default-home-and-path-directories.yaml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,7 @@ kind: feature
1313

1414
# REQUIRED for all kinds
1515
# Change summary; a 80ish characters long description of the change.
16-
summary: Change beat receiver factory to require default home and path directory
17-
18-
# REQUIRED for breaking-change, deprecation, known-issue
19-
# Long description; in case the summary is not enough to describe the change
20-
# this field accommodate a description without length limits.
21-
# description:
22-
23-
# REQUIRED for breaking-change, deprecation, known-issue
24-
# impact:
25-
26-
# REQUIRED for breaking-change, deprecation, known-issue
27-
# action:
16+
summary: Add NewFactoryWithSettings for Beat receivers to provide default home and path directories
2817

2918
# REQUIRED for all kinds
3019
# Affected component; usually one of "elastic-agent", "fleet-server", "filebeat", "metricbeat", "auditbeat", "all", etc.

x-pack/filebeat/fbreceiver/factory.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,21 @@ func createReceiver(ctx context.Context, set receiver.Settings, baseCfg componen
5454
return &filebeatReceiver{BeatReceiver: br}, nil
5555
}
5656

57-
// NewFactory creates a new receiver Factory. The supplied
57+
// NewFactory creates a new receiver Factory with empty default paths.
58+
// It is compatible with the OpenTelemetry Collector Builder, which expects
59+
// parameterless NewFactory functions.
60+
func NewFactory() receiver.Factory {
61+
return NewFactoryWithSettings(Settings{})
62+
}
63+
64+
// NewFactoryWithSettings creates a new receiver Factory. The supplied
5865
// Settings.Home should be the path that contains the "module"
5966
// directory so modules can be found and loaded. The supplied
6067
// Settings.Data should point to the directory where state information
6168
// will be kept. Both can be overridden by passing in path
6269
// information in the configuration when the receiver in instantiated.
6370
// This just provides defaults.
64-
func NewFactory(s Settings) receiver.Factory {
71+
func NewFactoryWithSettings(s Settings) receiver.Factory {
6572
return receiver.NewFactory(
6673
component.MustNewType(Name),
6774
func() component.Config {

x-pack/filebeat/fbreceiver/receiver_leak_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func TestLeak(t *testing.T) {
6161
},
6262
}
6363

64-
factory := NewFactory(Settings{Home: t.TempDir()})
64+
factory := NewFactoryWithSettings(Settings{Home: t.TempDir()})
6565

6666
t.Run("healthy consumer", func(t *testing.T) {
6767
defer oteltest.VerifyNoLeaks(t)

x-pack/filebeat/fbreceiver/receiver_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func TestNewReceiver(t *testing.T) {
8383
Name: "r1",
8484
Beat: "filebeat",
8585
Config: &config,
86-
Factory: NewFactory(Settings{Home: t.TempDir()}),
86+
Factory: NewFactoryWithSettings(Settings{Home: t.TempDir()}),
8787
},
8888
},
8989
AssertFunc: func(c *assert.CollectT, logs map[string][]mapstr.M, zapLogs *observer.ObservedLogs) {
@@ -150,7 +150,7 @@ func benchmarkFactoryWithLogLevel(b *testing.B, level zapcore.Level) {
150150
zapcore.Lock(zapcore.AddSync(&zapLogs)),
151151
level)
152152

153-
factory := NewFactory(Settings{Home: tmpDir})
153+
factory := NewFactoryWithSettings(Settings{Home: tmpDir})
154154

155155
receiverSettings := receiver.Settings{}
156156
receiverSettings.Logger = zap.New(core)
@@ -243,7 +243,7 @@ func newMultiReceiverHelper(t *testing.T, number int) multiReceiverHelper {
243243
func TestMultipleReceivers(t *testing.T) {
244244
const nReceivers = 2
245245

246-
factory := NewFactory(Settings{Home: t.TempDir()})
246+
factory := NewFactoryWithSettings(Settings{Home: t.TempDir()})
247247

248248
helpers := make([]multiReceiverHelper, nReceivers)
249249
configs := make([]oteltest.ReceiverConfig, nReceivers)
@@ -403,7 +403,7 @@ func TestReceiverStatus(t *testing.T) {
403403
Name: "r1",
404404
Beat: "filebeat",
405405
Config: &config,
406-
Factory: NewFactory(Settings{Home: t.TempDir()}),
406+
Factory: NewFactoryWithSettings(Settings{Home: t.TempDir()}),
407407
},
408408
},
409409
Status: test.status,
@@ -686,7 +686,7 @@ func TestConsumeContract(t *testing.T) {
686686
// Run the contract checker. This will trigger test failures if any problems are found.
687687
receivertest.CheckConsumeContract(receivertest.CheckConsumeContractParams{
688688
T: t,
689-
Factory: NewFactory(Settings{Home: t.TempDir()}),
689+
Factory: NewFactoryWithSettings(Settings{Home: t.TempDir()}),
690690
Signal: pipeline.SignalLogs,
691691
Config: cfg,
692692
Generator: gen,
@@ -719,7 +719,7 @@ func TestReceiverHook(t *testing.T) {
719719
}
720720
// For filebeatreceiver, we expect 3 hooks to be registered:
721721
// one for beat metrics, one for input metrics and one for getting the registry.
722-
oteltest.TestReceiverHook(t, &cfg, NewFactory(Settings{Home: t.TempDir()}), receiverSettings, 3)
722+
oteltest.TestReceiverHook(t, &cfg, NewFactoryWithSettings(Settings{Home: t.TempDir()}), receiverSettings, 3)
723723
}
724724

725725
func hostFromSocket(socket string) string {

x-pack/metricbeat/mbreceiver/factory.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,21 @@ func createReceiver(ctx context.Context, set receiver.Settings, baseCfg componen
5959
return &metricbeatReceiver{BeatReceiver: br}, nil
6060
}
6161

62-
// NewFactory creates a new receiver Factory. The supplied
62+
// NewFactory creates a new receiver Factory with empty default paths.
63+
// It is compatible with the OpenTelemetry Collector Builder, which expects
64+
// parameterless NewFactory functions.
65+
func NewFactory() receiver.Factory {
66+
return NewFactoryWithSettings(Settings{})
67+
}
68+
69+
// NewFactoryWithSettings creates a new receiver Factory. The supplied
6370
// Settings.Home should be the path that contains the "module"
6471
// directory so modules can be found and loaded. The supplied
6572
// Settings.Data should point to the directory where state information
6673
// will be kept. Both can be overridden by passing in path
6774
// information in the configuration when the receiver in instantiated.
6875
// This just provides defaults.
69-
func NewFactory(s Settings) receiver.Factory {
76+
func NewFactoryWithSettings(s Settings) receiver.Factory {
7077
return receiver.NewFactory(
7178
component.MustNewType(Name),
7279
func() component.Config {

x-pack/metricbeat/mbreceiver/receiver_leak_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func TestLeak(t *testing.T) {
6363
},
6464
},
6565
}
66-
factory := NewFactory(Settings{Home: t.TempDir()})
66+
factory := NewFactoryWithSettings(Settings{Home: t.TempDir()})
6767

6868
t.Run("healthy consumer", func(t *testing.T) {
6969
defer oteltest.VerifyNoLeaks(t)

x-pack/metricbeat/mbreceiver/receiver_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func TestNewReceiver(t *testing.T) {
7878
Name: "r1",
7979
Beat: "metricbeat",
8080
Config: &config,
81-
Factory: NewFactory(Settings{Home: t.TempDir()}),
81+
Factory: NewFactoryWithSettings(Settings{Home: t.TempDir()}),
8282
},
8383
},
8484
AssertFunc: func(c *assert.CollectT, logs map[string][]mapstr.M, zapLogs *observer.ObservedLogs) {
@@ -174,7 +174,7 @@ func TestMultipleReceivers(t *testing.T) {
174174
},
175175
}
176176

177-
factory := NewFactory(Settings{Home: t.TempDir()})
177+
factory := NewFactoryWithSettings(Settings{Home: t.TempDir()})
178178
oteltest.CheckReceivers(oteltest.CheckReceiversParams{
179179
T: t,
180180
Receivers: []oteltest.ReceiverConfig{
@@ -347,7 +347,7 @@ func BenchmarkFactory(b *testing.B) {
347347
zapcore.Lock(zapcore.AddSync(&zapLogs)),
348348
zapcore.InfoLevel)
349349

350-
factory := NewFactory(Settings{Home: tmpDir})
350+
factory := NewFactoryWithSettings(Settings{Home: tmpDir})
351351

352352
receiverSettings := receiver.Settings{}
353353
receiverSettings.Logger = zap.New(core)
@@ -421,7 +421,7 @@ func TestReceiverStatus(t *testing.T) {
421421
Name: "r1",
422422
Beat: "metricbeat",
423423
Config: &config,
424-
Factory: NewFactory(Settings{Home: t.TempDir()}),
424+
Factory: NewFactoryWithSettings(Settings{Home: t.TempDir()}),
425425
},
426426
},
427427
Status: test.status,
@@ -457,5 +457,5 @@ func TestReceiverHook(t *testing.T) {
457457

458458
// For metricbeatreceiver, we expect 2 hooks to be registered:
459459
// one for beat metrics and one for input metrics.
460-
oteltest.TestReceiverHook(t, &cfg, NewFactory(Settings{Home: t.TempDir()}), receiverSettings, 2)
460+
oteltest.TestReceiverHook(t, &cfg, NewFactoryWithSettings(Settings{Home: t.TempDir()}), receiverSettings, 2)
461461
}

x-pack/otel/oteltestcol/collector.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ func (c *Collector) Shutdown() {
102102

103103
func getComponent() (otelcol.Factories, error) {
104104
receivers, err := otelcol.MakeFactoryMap(
105-
fbreceiver.NewFactory(fbreceiver.Settings{}),
106-
mbreceiver.NewFactory(mbreceiver.Settings{}),
105+
fbreceiver.NewFactory(),
106+
mbreceiver.NewFactory(),
107107
)
108108
if err != nil {
109109
return otelcol.Factories{}, nil //nolint:nilerr //ignoring this error

0 commit comments

Comments
 (0)