Class TimeoutExtensionDispatcher


  • public final class TimeoutExtensionDispatcher
    extends java.lang.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 int PER_CALLBACK_TIMEOUT_SECONDS
      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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      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 hasExtensions()  
      • Methods inherited from class java.lang.Object

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

      • PER_CALLBACK_TIMEOUT_SECONDS

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

      • TimeoutExtensionDispatcher

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

      • 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.