- Run all local engines in parallel using goroutines + sync.WaitGroup - Individual engine failures are captured as unresponsive_engines entries instead of aborting the entire search request - Context cancellation is respected: cancelled engines report as unresponsive - Upstream proxy failure is also gracefully handled (single unresponsive entry) - Extract unresponsiveResponse() and emptyResponse() helpers for consistency - Add comprehensive tests: - ConcurrentEngines: verifies parallelism (2x100ms engines complete in ~100ms) - GracefulDegradation: one engine fails, one succeeds, both represented - AllEnginesFail: no error returned, all engines in unresponsive_engines - ContextCancellation: engine respects context timeout, reports unresponsive
14 lines
274 B
Modula-2
14 lines
274 B
Modula-2
module github.com/ashie/gosearch
|
|
|
|
go 1.25.0
|
|
|
|
require (
|
|
github.com/BurntSushi/toml v1.5.0
|
|
github.com/PuerkitoBio/goquery v1.12.0
|
|
)
|
|
|
|
require (
|
|
github.com/andybalholm/cascadia v1.3.3 // indirect
|
|
golang.org/x/net v0.52.0 // indirect
|
|
golang.org/x/sync v0.20.0 // indirect
|
|
)
|