test/e2e: use shared deadline for proxy readiness and fix doc comment

- Use a single deadline in waitForClientProxyReady so total wait across
  all proxies does not exceed the given timeout
- Fix WaitForOutput doc comment to accurately describe single pattern
  with count semantics
This commit is contained in:
fatedier
2026-03-09 18:45:12 +08:00
parent adcd2e64b6
commit 01413c3853
2 changed files with 9 additions and 3 deletions

View File

@@ -128,10 +128,16 @@ func waitForClientProxyReady(configPath string, p *process.Process, timeout time
return false return false
} }
// Use a single deadline so the total wait across all proxies does not exceed timeout.
deadline := time.Now().Add(timeout)
for _, cfg := range proxyCfgs { for _, cfg := range proxyCfgs {
remaining := time.Until(deadline)
if remaining <= 0 {
return false
}
name := cfg.GetBaseConfig().Name name := cfg.GetBaseConfig().Name
pattern := fmt.Sprintf("[%s] start proxy success", name) pattern := fmt.Sprintf("[%s] start proxy success", name)
if err := p.WaitForOutput(pattern, 1, timeout); err != nil { if err := p.WaitForOutput(pattern, 1, remaining); err != nil {
return false return false
} }
} }

View File

@@ -124,8 +124,8 @@ func (p *Process) SetBeforeStopHandler(fn func()) {
p.beforeStopHandler = fn p.beforeStopHandler = fn
} }
// WaitForOutput polls the combined process output until all patterns are found // WaitForOutput polls the combined process output until the pattern is found
// or the timeout is reached. It also returns early if the process exits. // count time(s) or the timeout is reached. It also returns early if the process exits.
func (p *Process) WaitForOutput(pattern string, count int, timeout time.Duration) error { func (p *Process) WaitForOutput(pattern string, count int, timeout time.Duration) error {
deadline := time.Now().Add(timeout) deadline := time.Now().Add(timeout)
for time.Now().Before(deadline) { for time.Now().Before(deadline) {