Class TimeoutExtension

  • All Implemented Interfaces:
    org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.InvocationInterceptor

    class TimeoutExtension
    extends java.lang.Object
    implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.InvocationInterceptor
    Since:
    5.5
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static interface  TimeoutExtension.TimeoutProvider  
      • Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor

        org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T extends java.lang.Object>
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void beforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)  
      void beforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)  
      private <T> org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> decorate​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext, TimeoutDuration timeout)  
      private java.lang.String describe​(org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      private org.junit.jupiter.api.Timeout.ThreadMode getAnnotationThreadMode​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      private TimeoutDuration getDefaultTimeout​(org.junit.jupiter.api.extension.ExtensionContext extensionContext, TimeoutExtension.TimeoutProvider defaultTimeoutProvider)  
      private TimeoutConfiguration getGlobalTimeoutConfiguration​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      private <T> T intercept​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext, TimeoutDuration explicitTimeout, TimeoutExtension.TimeoutProvider defaultTimeoutProvider)  
      void interceptAfterAllMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      void interceptAfterEachMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      void interceptBeforeAllMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      void interceptBeforeEachMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      private void interceptLifecycleMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext, TimeoutExtension.TimeoutProvider defaultTimeoutProvider)  
      private <T> T interceptTestableMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext, TimeoutExtension.TimeoutProvider defaultTimeoutProvider)  
      <T> T interceptTestFactoryMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      void interceptTestMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      void interceptTestTemplateMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      private boolean isTimeoutDisabled​(java.lang.String mode)
      Determine if timeouts are disabled for the supplied mode.
      private boolean isTimeoutDisabled​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      Determine if timeouts are disabled for the supplied extension context.
      private void readAndStoreTimeoutSoChildrenInheritIt​(org.junit.jupiter.api.extension.ExtensionContext context)  
      private java.util.Optional<TimeoutDuration> readTimeoutFromAnnotation​(java.util.Optional<java.lang.reflect.AnnotatedElement> element)  
      private java.util.Optional<org.junit.jupiter.api.Timeout.ThreadMode> readTimeoutThreadModeFromAnnotation​(java.util.Optional<java.lang.reflect.AnnotatedElement> element)  
      private org.junit.jupiter.api.Timeout.ThreadMode resolveTimeoutThreadMode​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor

        interceptDynamicTest, interceptDynamicTest, interceptTestClassConstructor
    • Field Detail

      • NAMESPACE

        private static final org.junit.jupiter.api.extension.ExtensionContext.Namespace NAMESPACE
      • TESTABLE_METHOD_TIMEOUT_KEY

        private static final java.lang.String TESTABLE_METHOD_TIMEOUT_KEY
        See Also:
        Constant Field Values
      • TESTABLE_METHOD_TIMEOUT_THREAD_MODE_KEY

        private static final java.lang.String TESTABLE_METHOD_TIMEOUT_THREAD_MODE_KEY
        See Also:
        Constant Field Values
      • GLOBAL_TIMEOUT_CONFIG_KEY

        private static final java.lang.String GLOBAL_TIMEOUT_CONFIG_KEY
        See Also:
        Constant Field Values
      • ENABLED_MODE_VALUE

        private static final java.lang.String ENABLED_MODE_VALUE
        See Also:
        Constant Field Values
      • DISABLED_MODE_VALUE

        private static final java.lang.String DISABLED_MODE_VALUE
        See Also:
        Constant Field Values
      • DISABLED_ON_DEBUG_MODE_VALUE

        private static final java.lang.String DISABLED_ON_DEBUG_MODE_VALUE
        See Also:
        Constant Field Values
    • Constructor Detail

      • TimeoutExtension

        TimeoutExtension()
    • Method Detail

      • beforeAll

        public void beforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)
        Specified by:
        beforeAll in interface org.junit.jupiter.api.extension.BeforeAllCallback
      • beforeEach

        public void beforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)
        Specified by:
        beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
      • readAndStoreTimeoutSoChildrenInheritIt

        private void readAndStoreTimeoutSoChildrenInheritIt​(org.junit.jupiter.api.extension.ExtensionContext context)
      • interceptBeforeAllMethod

        public void interceptBeforeAllMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                             org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                             org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                      throws java.lang.Throwable
        Specified by:
        interceptBeforeAllMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptBeforeEachMethod

        public void interceptBeforeEachMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                              org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                              org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                       throws java.lang.Throwable
        Specified by:
        interceptBeforeEachMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptTestMethod

        public void interceptTestMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                        org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                        org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                 throws java.lang.Throwable
        Specified by:
        interceptTestMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptTestTemplateMethod

        public void interceptTestTemplateMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                                org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                                org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                         throws java.lang.Throwable
        Specified by:
        interceptTestTemplateMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptTestFactoryMethod

        public <T> T interceptTestFactoryMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation,
                                                org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                                org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                         throws java.lang.Throwable
        Specified by:
        interceptTestFactoryMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptAfterEachMethod

        public void interceptAfterEachMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                             org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                             org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                      throws java.lang.Throwable
        Specified by:
        interceptAfterEachMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptAfterAllMethod

        public void interceptAfterAllMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                            org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                            org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                                     throws java.lang.Throwable
        Specified by:
        interceptAfterAllMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
        Throws:
        java.lang.Throwable
      • interceptLifecycleMethod

        private void interceptLifecycleMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<java.lang.Void> invocation,
                                              org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                              org.junit.jupiter.api.extension.ExtensionContext extensionContext,
                                              TimeoutExtension.TimeoutProvider defaultTimeoutProvider)
                                       throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • readTimeoutFromAnnotation

        private java.util.Optional<TimeoutDuration> readTimeoutFromAnnotation​(java.util.Optional<java.lang.reflect.AnnotatedElement> element)
      • readTimeoutThreadModeFromAnnotation

        private java.util.Optional<org.junit.jupiter.api.Timeout.ThreadMode> readTimeoutThreadModeFromAnnotation​(java.util.Optional<java.lang.reflect.AnnotatedElement> element)
      • interceptTestableMethod

        private <T> T interceptTestableMethod​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation,
                                              org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                              org.junit.jupiter.api.extension.ExtensionContext extensionContext,
                                              TimeoutExtension.TimeoutProvider defaultTimeoutProvider)
                                       throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • intercept

        private <T> T intercept​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation,
                                org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                org.junit.jupiter.api.extension.ExtensionContext extensionContext,
                                TimeoutDuration explicitTimeout,
                                TimeoutExtension.TimeoutProvider defaultTimeoutProvider)
                         throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • getGlobalTimeoutConfiguration

        private TimeoutConfiguration getGlobalTimeoutConfiguration​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      • decorate

        private <T> org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> decorate​(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation,
                                                                                                 org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                                                                                 org.junit.jupiter.api.extension.ExtensionContext extensionContext,
                                                                                                 TimeoutDuration timeout)
      • resolveTimeoutThreadMode

        private org.junit.jupiter.api.Timeout.ThreadMode resolveTimeoutThreadMode​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      • getAnnotationThreadMode

        private org.junit.jupiter.api.Timeout.ThreadMode getAnnotationThreadMode​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      • describe

        private java.lang.String describe​(org.junit.jupiter.api.extension.ReflectiveInvocationContext<java.lang.reflect.Method> invocationContext,
                                          org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      • isTimeoutDisabled

        private boolean isTimeoutDisabled​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
        Determine if timeouts are disabled for the supplied extension context.
      • isTimeoutDisabled

        private boolean isTimeoutDisabled​(java.lang.String mode)
        Determine if timeouts are disabled for the supplied mode.