diff --git a/observability/reporter_test.go b/observability/reporter_test.go index d8109e46..11c06ec0 100644 --- a/observability/reporter_test.go +++ b/observability/reporter_test.go @@ -138,24 +138,26 @@ func TestReporter_BufferAndFlush(t *testing.T) { }) ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) reporter.Start(ctx) - // Wait for flush - time.Sleep(200 * time.Millisecond) - cancel() - time.Sleep(100 * time.Millisecond) + deadline := time.Now().Add(2 * time.Second) + for { + mu.Lock() + execFlushed := receivedPaths["/api/v1/admin/ingest/executions"] > 0 + logsFlushed := receivedPaths["/api/v1/admin/ingest/logs"] > 0 + eventsFlushed := receivedPaths["/api/v1/admin/ingest/events"] > 0 + mu.Unlock() - mu.Lock() - defer mu.Unlock() + if execFlushed && logsFlushed && eventsFlushed { + break + } - if receivedPaths["/api/v1/admin/ingest/executions"] == 0 { - t.Error("expected executions to be flushed") - } - if receivedPaths["/api/v1/admin/ingest/logs"] == 0 { - t.Error("expected logs to be flushed") - } - if receivedPaths["/api/v1/admin/ingest/events"] == 0 { - t.Error("expected events to be flushed") + if time.Now().After(deadline) { + t.Fatalf("timed out waiting for reports to be flushed, got: %#v", receivedPaths) + } + + time.Sleep(10 * time.Millisecond) } } @@ -166,9 +168,11 @@ func TestReporter_StopFlushesRemaining(t *testing.T) { received := false server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - mu.Lock() - received = true - mu.Unlock() + if r.URL.Path == "/api/v1/admin/ingest/executions" { + mu.Lock() + received = true + mu.Unlock() + } w.WriteHeader(http.StatusOK) })) defer server.Close() diff --git a/plugin/manager_test.go b/plugin/manager_test.go index fc6b6b62..fac68b0f 100644 --- a/plugin/manager_test.go +++ b/plugin/manager_test.go @@ -1,13 +1,10 @@ package plugin import ( - "database/sql" "encoding/json" "net/http" "net/http/httptest" "testing" - - _ "modernc.org/sqlite" ) // --- PluginManager additional coverage tests --- @@ -35,11 +32,7 @@ func TestPluginManager_NilDB(t *testing.T) { } func TestPluginManager_RestoreState(t *testing.T) { - db, err := sql.Open("sqlite", ":memory:") - if err != nil { - t.Fatalf("open db: %v", err) - } - defer db.Close() + db := openTestDB(t) // First manager: register, enable, and persist pm1 := NewPluginManager(db, nil) @@ -76,18 +69,20 @@ func TestPluginManager_RestoreState_NilDB(t *testing.T) { } func TestPluginManager_AllPlugins(t *testing.T) { - db, err := sql.Open("sqlite", ":memory:") - if err != nil { - t.Fatalf("open db: %v", err) - } - defer db.Close() + db := openTestDB(t) pm := NewPluginManager(db, nil) p1 := newSimplePlugin("alpha", "1.0.0", "Alpha plugin") p2 := newSimplePlugin("beta", "2.0.0", "Beta plugin") - _ = pm.Register(p1) - _ = pm.Register(p2) - _ = pm.Enable("alpha") + if err := pm.Register(p1); err != nil { + t.Fatalf("Register p1: %v", err) + } + if err := pm.Register(p2); err != nil { + t.Fatalf("Register p2: %v", err) + } + if err := pm.Enable("alpha"); err != nil { + t.Fatalf("Enable alpha: %v", err) + } all := pm.AllPlugins() if len(all) != 2 { @@ -175,11 +170,7 @@ func TestPluginManager_SetContext(t *testing.T) { } func TestPluginManager_EnableWithVersionConstraint(t *testing.T) { - db, err := sql.Open("sqlite", ":memory:") - if err != nil { - t.Fatalf("open db: %v", err) - } - defer db.Close() + db := openTestDB(t) pm := NewPluginManager(db, nil) base := newSimplePlugin("base-lib", "2.0.0", "Base library") @@ -195,11 +186,7 @@ func TestPluginManager_EnableWithVersionConstraint(t *testing.T) { } func TestPluginManager_EnableWithVersionConstraint_Failure(t *testing.T) { - db, err := sql.Open("sqlite", ":memory:") - if err != nil { - t.Fatalf("open db: %v", err) - } - defer db.Close() + db := openTestDB(t) pm := NewPluginManager(db, nil) base := newSimplePlugin("base-lib", "1.0.0", "Base library")