Class TimeoutExtensionDispatcher

java.lang.Object
org.apache.maven.plugin.surefire.extensions.timeout.TimeoutExtensionDispatcher

public final class TimeoutExtensionDispatcher extends Object
Discovers and invokes ForkedProcessTimeoutExtension instances when a forked test JVM is killed due to forkedProcessTimeoutInSeconds.

Extensions are loaded once per Surefire run via ServiceLoader from the plugin classloader (the same classloader that loaded the ForkedProcessTimeoutExtension interface).

Each extension callback is invoked on an internal executor and capped at PER_CALLBACK_TIMEOUT_SECONDS seconds; any thrown Throwable or timeout is logged at warn level and never affects the test result.

Since:
3.6.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Maximum wall-clock time allowed per extension callback.
  • Constructor Summary

    Constructors
    Constructor
    Description
    TimeoutExtensionDispatcher(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Shuts down the internal executor.
    void
    fireForkExited(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext context, org.apache.maven.surefire.api.suite.RunResult result)
    Synchronously invokes ForkedProcessTimeoutExtension.onForkExited(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext, org.apache.maven.surefire.api.suite.RunResult) on every registered extension, after the forked JVM exited.
    void
    fireTimeoutDetected(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext context)
    Synchronously invokes ForkedProcessTimeoutExtension.onTimeoutDetected(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext) on every registered extension.
    boolean
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PER_CALLBACK_TIMEOUT_SECONDS

      public static final int PER_CALLBACK_TIMEOUT_SECONDS
      Maximum wall-clock time allowed per extension callback.
      See Also:
  • Constructor Details

    • TimeoutExtensionDispatcher

      public TimeoutExtensionDispatcher(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger)
  • Method Details

    • hasExtensions

      public boolean hasExtensions()
      Returns:
      true when at least one extension is registered
    • fireTimeoutDetected

      public void fireTimeoutDetected(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext context)
      Synchronously invokes ForkedProcessTimeoutExtension.onTimeoutDetected(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext) on every registered extension. Should be called immediately after Surefire detects the timeout and before the kill is sent.
    • fireForkExited

      public void fireForkExited(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext context, org.apache.maven.surefire.api.suite.RunResult result)
      Synchronously invokes ForkedProcessTimeoutExtension.onForkExited(org.apache.maven.surefire.extensions.ForkedProcessTimeoutContext, org.apache.maven.surefire.api.suite.RunResult) on every registered extension, after the forked JVM exited.
    • close

      public void close()
      Shuts down the internal executor. Safe to call multiple times.