Skip to content

Commit cda887d

Browse files
authored
[chore] add generated tests for receivers (#29682)
Continuation of the work on #27849 - now opening a way to create lifecycle tests for receivers.
1 parent 01927d4 commit cda887d

File tree

4 files changed

+178
-8
lines changed

4 files changed

+178
-8
lines changed

cmd/mdatagen/templates/component_test.go.tmpl

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ import (
1818
"go.opentelemetry.io/collector/consumer/consumertest"
1919
"go.opentelemetry.io/collector/processor"
2020
"go.opentelemetry.io/collector/processor/processortest"
21+
{{ end }}
22+
{{ if isReceiver }}
23+
"go.opentelemetry.io/collector/consumer/consumertest"
24+
"go.opentelemetry.io/collector/receiver"
25+
"go.opentelemetry.io/collector/receiver/receivertest"
2126
{{ end }}
2227
"go.opentelemetry.io/collector/confmap/confmaptest"
23-
28+
{{ if or (isExporter) (isProcessor) }}
2429
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata"
30+
{{ end }}
2531
)
2632

2733
// assertNoErrorHost implements a component.Host that asserts that there were no errors.
@@ -224,3 +230,72 @@ func Test_ComponentLifecycle(t *testing.T) {
224230
}
225231
}
226232
{{ end }}
233+
234+
{{ if isReceiver }}
235+
func Test_ComponentLifecycle(t *testing.T) {
236+
factory := NewFactory()
237+
238+
tests := []struct{
239+
name string
240+
createFn func(ctx context.Context, set receiver.CreateSettings, cfg component.Config) (component.Component, error)
241+
}{
242+
{{ if supportsLogs }}
243+
{
244+
name: "logs",
245+
createFn: func(ctx context.Context, set receiver.CreateSettings, cfg component.Config) (component.Component, error) {
246+
return factory.CreateLogsReceiver(ctx, set, cfg, consumertest.NewNop())
247+
},
248+
},
249+
{{ end }}
250+
{{ if supportsMetrics }}
251+
{
252+
name: "metrics",
253+
createFn: func(ctx context.Context, set receiver.CreateSettings, cfg component.Config) (component.Component, error) {
254+
return factory.CreateMetricsReceiver(ctx, set, cfg, consumertest.NewNop())
255+
},
256+
},
257+
{{ end }}
258+
{{ if supportsTraces }}
259+
{
260+
name: "traces",
261+
createFn: func(ctx context.Context, set receiver.CreateSettings, cfg component.Config) (component.Component, error) {
262+
return factory.CreateTracesReceiver(ctx, set, cfg, consumertest.NewNop())
263+
},
264+
},
265+
{{ end }}
266+
}
267+
268+
cm, err := confmaptest.LoadConf("metadata.yaml")
269+
require.NoError(t, err)
270+
cfg := factory.CreateDefaultConfig()
271+
sub, err := cm.Sub("tests::config")
272+
require.NoError(t, err)
273+
require.NoError(t, component.UnmarshalConfig(sub, cfg))
274+
275+
for _, test := range tests {
276+
t.Run(test.name + "-shutdown", func(t *testing.T) {
277+
c, err := test.createFn(context.Background(), receivertest.NewNopCreateSettings(), cfg)
278+
require.NoError(t, err)
279+
err = c.Shutdown(context.Background())
280+
require.NoError(t, err)
281+
})
282+
283+
t.Run(test.name + "-lifecycle", func(t *testing.T) {
284+
{{ if skipLifecycle }}
285+
// TODO support lifecycle
286+
t.SkipNow()
287+
{{ end }}
288+
firstRcvr, err := test.createFn(context.Background(), receivertest.NewNopCreateSettings(), cfg)
289+
require.NoError(t, err)
290+
host := newAssertNoErrorHost(t)
291+
require.NoError(t, err)
292+
require.NoError(t, firstRcvr.Start(context.Background(), host))
293+
require.NoError(t, firstRcvr.Shutdown(context.Background()))
294+
secondRcvr, err := test.createFn(context.Background(), receivertest.NewNopCreateSettings(), cfg)
295+
require.NoError(t, err)
296+
require.NoError(t, secondRcvr.Start(context.Background(), host))
297+
require.NoError(t, secondRcvr.Shutdown(context.Background()))
298+
})
299+
}
300+
}
301+
{{ end }}

receiver/splunkhecreceiver/generated_component_test.go

Lines changed: 93 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/splunkhecreceiver/metadata.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ status:
88
codeowners:
99
active: ["atoulme"]
1010
emeritus:
11+
tests:
12+
config:

receiver/splunkhecreceiver/receiver_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ func Test_splunkhecReceiver_TLS(t *testing.T) {
456456
require.NoError(t, r.Shutdown(context.Background()))
457457
}()
458458

459-
mh := newAssertNoErrorHost(t)
459+
mh := newAssertNoErrHost(t)
460460
require.NoError(t, r.Start(context.Background(), mh), "should not have failed to start log reception")
461461
require.NoError(t, r.Start(context.Background(), mh), "should not fail to start log on second Start call")
462462

@@ -898,21 +898,21 @@ func (b badReqBody) Close() error {
898898
return nil
899899
}
900900

901-
// assertNoErrorHost implements a component.Host that asserts that there were no errors.
902-
type assertNoErrorHost struct {
901+
// assertNoErrHost implements a component.Host that asserts that there were no errors.
902+
type assertNoErrHost struct {
903903
component.Host
904904
*testing.T
905905
}
906906

907-
// newAssertNoErrorHost returns a new instance of assertNoErrorHost.
908-
func newAssertNoErrorHost(t *testing.T) component.Host {
909-
return &assertNoErrorHost{
907+
// newAssertNoErrHost returns a new instance of assertNoErrHost.
908+
func newAssertNoErrHost(t *testing.T) component.Host {
909+
return &assertNoErrHost{
910910
Host: componenttest.NewNopHost(),
911911
T: t,
912912
}
913913
}
914914

915-
func (aneh *assertNoErrorHost) ReportFatalError(err error) {
915+
func (aneh *assertNoErrHost) ReportFatalError(err error) {
916916
assert.NoError(aneh, err)
917917
}
918918

0 commit comments

Comments
 (0)