diff --git a/libbeat/otelbeat/oteltest/oteltest.go b/libbeat/otelbeat/oteltest/oteltest.go index b7a68b351bc9..30f75d11abae 100644 --- a/libbeat/otelbeat/oteltest/oteltest.go +++ b/libbeat/otelbeat/oteltest/oteltest.go @@ -151,19 +151,35 @@ func CheckReceivers(params CheckReceiversParams) { // Ensure the logger fields from the otel collector are present for _, zl := range zapLogs.All() { - require.Contains(t, zl.ContextMap(), "otelcol.component.kind") - require.Equal(t, "receiver", zl.ContextMap()["otelcol.component.kind"]) - require.Contains(t, zl.ContextMap(), "otelcol.signal") - require.Equal(t, "logs", zl.ContextMap()["otelcol.signal"]) - require.Contains(t, zl.ContextMap(), "otelcol.component.id") + require.Contains(ct, zl.ContextMap(), "otelcol.component.kind") + require.Equal(ct, "receiver", zl.ContextMap()["otelcol.component.kind"]) + require.Contains(ct, zl.ContextMap(), "otelcol.signal") + require.Equal(ct, "logs", zl.ContextMap()["otelcol.signal"]) + require.Contains(ct, zl.ContextMap(), "otelcol.component.id") compID, ok := zl.ContextMap()["otelcol.component.id"].(string) - require.True(t, ok, "otelcol.component.id should be a string") - require.Contains(t, zl.ContextMap(), "service.name") - require.Equal(t, beatForCompID(compID), zl.ContextMap()["service.name"]) + require.True(ct, ok, "otelcol.component.id should be a string") + require.Contains(ct, zl.ContextMap(), "service.name") + require.Equal(ct, beatForCompID(compID), zl.ContextMap()["service.name"]) break } +<<<<<<< HEAD params.AssertFunc(ct, logs, zapLogs) +======= + require.NotNil(ct, host.Evt, "expected not nil, got nil") + + if params.Status.Error == "" { + require.Equalf(ct, host.Evt.Status(), componentstatus.StatusOK, "expected %v, got %v", params.Status.Status, host.Evt.Status()) + require.Nilf(ct, host.Evt.Err(), "expected nil, got %v", host.Evt.Err()) + } else { + require.Equalf(ct, host.Evt.Status(), params.Status.Status, "expected %v, got %v", params.Status.Status, host.Evt.Status()) + require.ErrorContainsf(ct, host.Evt.Err(), params.Status.Error, "expected error to contain '%v': %v", params.Status.Error, host.Evt.Err()) + } + + if params.AssertFunc != nil { + params.AssertFunc(ct, logs, zapLogs) + } +>>>>>>> dd5cbacf4 ([oteltest][fbreceiver] Fix flaky test (#45127)) }, 2*time.Minute, 100*time.Millisecond, "timeout waiting for logger fields from the OTel collector are present in the logs and other assertions to be met") } diff --git a/x-pack/filebeat/fbreceiver/receiver_test.go b/x-pack/filebeat/fbreceiver/receiver_test.go index 0ea975781850..cfac66cee374 100644 --- a/x-pack/filebeat/fbreceiver/receiver_test.go +++ b/x-pack/filebeat/fbreceiver/receiver_test.go @@ -247,6 +247,83 @@ func TestMultipleReceivers(t *testing.T) { }) } +<<<<<<< HEAD +======= +func TestReceiverDegraded(t *testing.T) { + testCases := []struct { + name string + status oteltest.ExpectedStatus + benchmarkStatus string + }{ + { + name: "failed input", + status: oteltest.ExpectedStatus{ + Status: componentstatus.StatusPermanentError, + Error: "benchmark input failed", + }, + benchmarkStatus: "failed", + }, + { + name: "degraded input", + status: oteltest.ExpectedStatus{ + Status: componentstatus.StatusRecoverableError, + Error: "benchmark input degraded", + }, + benchmarkStatus: "degraded", + }, + { + name: "running input", + status: oteltest.ExpectedStatus{ + Status: componentstatus.StatusOK, + Error: "", + }, + }, + } + + for _, test := range testCases { + t.Run(test.name, func(t *testing.T) { + config := Config{ + Beatconfig: map[string]any{ + "filebeat": map[string]any{ + "inputs": []map[string]any{ + { + "type": "benchmark", + "enabled": true, + "message": "test", + "count": 1, + "status": test.benchmarkStatus, + }, + }, + }, + "output": map[string]any{ + "otelconsumer": map[string]any{}, + }, + "logging": map[string]any{ + "level": "debug", + "selectors": []string{ + "*", + }, + }, + "path.home": t.TempDir(), + }, + } + oteltest.CheckReceivers(oteltest.CheckReceiversParams{ + T: t, + Receivers: []oteltest.ReceiverConfig{ + { + Name: "r1", + Beat: "filebeat", + Config: &config, + Factory: NewFactory(), + }, + }, + Status: test.status, + }) + }) + } +} + +>>>>>>> dd5cbacf4 ([oteltest][fbreceiver] Fix flaky test (#45127)) func genSocketPath() string { randData := make([]byte, 16) for i := range len(randData) {