@@ -18,10 +18,16 @@ import (
18
18
"go.opentelemetry.io/collector/consumer/consumertest"
19
19
"go.opentelemetry.io/collector/processor"
20
20
"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"
21
26
{{ end }}
22
27
"go.opentelemetry.io/collector/confmap/confmaptest"
23
-
28
+ {{ if or (isExporter) (isProcessor) }}
24
29
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata"
30
+ {{ end }}
25
31
)
26
32
27
33
// assertNoErrorHost implements a component.Host that asserts that there were no errors.
@@ -224,3 +230,72 @@ func Test_ComponentLifecycle(t *testing.T) {
224
230
}
225
231
}
226
232
{{ 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 }}
0 commit comments