All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openbase.jul.test.OnTimeoutDeadlockChecker.kt Maven / Gradle / Ivy

The newest version!
package org.openbase.jul.communication.mqtt.test

import org.junit.jupiter.api.extension.ExtensionContext
import org.junit.jupiter.api.extension.TestExecutionExceptionHandler
import org.openbase.jul.exception.StackTracePrinter
import org.openbase.jul.exception.printer.LogLevel
import org.slf4j.LoggerFactory
import java.util.concurrent.TimeoutException

open class OnTimeoutDeadlockChecker(
    private val filter: String? = null,
) : TestExecutionExceptionHandler {

    private val logger = LoggerFactory.getLogger(javaClass)

    override fun handleTestExecutionException(context: ExtensionContext?, throwable: Throwable?) {
        when (throwable) {
            is TimeoutException -> {

                logger.warn("Timeout caught during test, analyse stacktrace...")
                // detect deadlocks
                if (StackTracePrinter.detectDeadLocksAndPrintStackTraces(logger)) {
                    return
                }
                logger.info(
                    "No deadlocks were found, so stacktraces of all threads are printed for further investigation..."
                )
                StackTracePrinter.printAllStackTraces(
                    filter,
                    logger,
                    LogLevel.WARN,
                    false
                )
            }
        }

        throwable?.also { throw it }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy