diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-13 14:41:28 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-13 14:41:28 +0300 |
| commit | de3405c275898c8cd528a636dbd40e1b685cfaa5 (patch) | |
| tree | 53711959800677aa694e18331476add24a21b8ef /internal/statsengine/engine_reset_test.go | |
| parent | d392eebe5bd127e1573734321b0cabaad4182d7c (diff) | |
use errgroup instead of WaitGroup for concurrent snapshot builders
Replace sync.WaitGroup with errgroup.Group in buildSubSnapshots so errors from
sub-builders (buildSyscallSnapshots, buildFileSnapshots, buildProcessSnapshots,
buildHistogramSnapshot) are captured and propagated rather than silently dropped.
Change Engine.Snapshot() to return (*Snapshot, error), update runtime.SnapshotSource
and dashboard.SnapshotSource interfaces accordingly, and adjust all callers in
tui.go, dashboard/model.go, and the test helpers.
Each sub-builder now returns (result, error); the error return is currently
always nil but establishes the contract for future validation. The per-type
Snapshot() convenience methods (histogram, syscall, file, process) panic on
error since they are internal helpers where failure would be a programming bug.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/statsengine/engine_reset_test.go')
| -rw-r--r-- | internal/statsengine/engine_reset_test.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/internal/statsengine/engine_reset_test.go b/internal/statsengine/engine_reset_test.go index e798686..c09c059 100644 --- a/internal/statsengine/engine_reset_test.go +++ b/internal/statsengine/engine_reset_test.go @@ -10,13 +10,19 @@ import ( func TestEngineResetClearsAccumulatedStats(t *testing.T) { e := NewEngine(8) e.Ingest(newEnginePair(types.SYS_ENTER_READ, 7, types.READ_CLASSIFIED, "test", 1, "/tmp/a", 7, 1000, 50)) - before := e.Snapshot() + before, err := e.Snapshot() + if err != nil { + t.Fatalf("unexpected snapshot error: %v", err) + } if before.TotalSyscalls == 0 { t.Fatalf("expected non-zero totals before reset") } e.Reset() - after := e.Snapshot() + after, err := e.Snapshot() + if err != nil { + t.Fatalf("unexpected snapshot error after reset: %v", err) + } if after.TotalSyscalls != 0 || after.TotalBytes != 0 || after.TotalErrors != 0 { t.Fatalf("expected totals cleared after reset, got %+v", after) } |
