Commit Graph

8 Commits

  • test/e2e: replace sleeps with event-driven waits in chaos/group/store tests (#5231)
    * test/e2e: replace sleeps with event-driven waits in chaos/group/store tests
    
    Replace 21 time.Sleep calls with deterministic waiting using
    WaitForOutput, WaitForTCPReady, and a new WaitForTCPUnreachable helper.
    Add CountOutput method for snapshot-based incremental log matching.
    
    * test/e2e: validate interval and cap dial/sleep to remaining deadline in WaitForTCPUnreachable
  • test/e2e: replace RunProcesses client sleep with log-based proxy readiness detection (#5226)
    * test/e2e: replace RunProcesses client sleep with log-based proxy readiness detection
    
    Replace the fixed 1500ms sleep in RunProcesses with event-driven proxy
    registration detection by monitoring frpc log output for "start proxy
    success" messages.
    
    Key changes:
    - Add thread-safe SafeBuffer to replace bytes.Buffer in Process, enabling
      concurrent read/write of process output during execution
    - Add Process.WaitForOutput() to poll process output for pattern matches
      with timeout and early exit on process termination
    - Add waitForClientProxyReady() that uses config.LoadClientConfig() to
      extract proxy names, then waits for each proxy's success log
    - For visitor-only clients (no deterministic readiness signal), fall back
      to the original sleep with elapsed time deducted
    
    * 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
  • test/e2e: optimize RunFrps/RunFrpc with process exit detection (#5225)
    * test/e2e: optimize RunFrps/RunFrpc with process exit detection
    
    Refactor Process to track subprocess lifecycle via a done channel,
    replacing direct cmd.Wait() in Stop() to avoid double-Wait races.
    RunFrps/RunFrpc now use select on the done channel instead of fixed
    sleeps, allowing short-lived processes (verify, startup failures) to
    return immediately while preserving existing timeout behavior for
    long-running daemons.
    
    * test/e2e: guard Process against double-Start and Stop-before-Start
    
    Add started flag to prevent double-Start panics and allow Stop to
    return immediately when the process was never started. Use sync.Once
    for closing the done channel as defense-in-depth against double close.
  • test/e2e: optimize e2e test time by replacing sleeps with TCP readiness checks (#5223)
    Replace the fixed 500ms sleep after each frps startup in RunProcesses
    with a TCP dial-based readiness check that polls the server bind port.
    This reduces the e2e suite wall time from ~97s to ~43s.
    
    Also simplify the RunProcesses API to accept a single server template
    string instead of a slice, matching how every call site uses it.