[JS IR] Enable logging for stepping tests

The IrJsSteppingTestGenerated.testTryCatchExpression test is flaky.
Let's enable some logging to see what's what.
This commit is contained in:
Sergej Jaskiewicz
2022-08-08 18:29:44 +02:00
committed by Space
parent 66a870301c
commit d24bbb63f5
@@ -13,7 +13,10 @@ import kotlinx.serialization.SerializationException
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import org.jetbrains.kotlin.utils.addToStdlib.cast import org.jetbrains.kotlin.utils.addToStdlib.cast
import java.util.logging.ConsoleHandler
import java.util.logging.Level
import java.util.logging.Logger import java.util.logging.Logger
import java.util.logging.MemoryHandler
import kotlin.coroutines.* import kotlin.coroutines.*
/** /**
@@ -91,7 +94,16 @@ private const val NODE_WS_DEBUG_URL_PREFIX = "Debugger listening on ws://"
*/ */
private class NodeJsInspectorClientContextImpl(engine: NodeJsInspectorClient) : NodeJsInspectorClientContext, CDPRequestEvaluator { private class NodeJsInspectorClientContextImpl(engine: NodeJsInspectorClient) : NodeJsInspectorClientContext, CDPRequestEvaluator {
private val logger = Logger.getLogger(this::class.java.name) private val consoleLoggingHandler = ConsoleHandler().apply {
level = Level.FINER
}
private val memoryLoggingHandler = MemoryHandler(consoleLoggingHandler, 5000, Level.WARNING)
private val logger = Logger.getLogger(this::class.java.name).apply {
level = Level.FINER
addHandler(memoryLoggingHandler)
}
private val nodeProcess = ProcessBuilder( private val nodeProcess = ProcessBuilder(
System.getProperty("javascript.engine.path.NodeJs"), System.getProperty("javascript.engine.path.NodeJs"),
@@ -153,11 +165,16 @@ private class NodeJsInspectorClientContextImpl(engine: NodeJsInspectorClient) :
suspend fun listenForMessages(receiveMessage: (String) -> Boolean) { suspend fun listenForMessages(receiveMessage: (String) -> Boolean) {
val session = webSocketSession ?: error("Session closed") val session = webSocketSession ?: error("Session closed")
do { do {
val message = when (val frame = session.incoming.receive()) { val message = try {
is Frame.Text -> frame.readText() when (val frame = session.incoming.receive()) {
else -> error("Unexpected frame kind: $frame") is Frame.Text -> frame.readText()
else -> error("Unexpected frame kind: $frame")
}
} catch (e: Exception) {
logger.log(Level.SEVERE, "Could not receive message", e)
throw e
} }
logger.fine { logger.finer {
"Received message:\n${prettyPrintJson(message)}" "Received message:\n${prettyPrintJson(message)}"
} }
} while (!receiveMessage(message)) } while (!receiveMessage(message))
@@ -177,7 +194,7 @@ private class NodeJsInspectorClientContextImpl(engine: NodeJsInspectorClient) :
private suspend fun sendPlainTextMessage(message: String) { private suspend fun sendPlainTextMessage(message: String) {
val session = webSocketSession ?: error("Session closed") val session = webSocketSession ?: error("Session closed")
logger.fine { logger.finer {
"Sent message:\n${prettyPrintJson(message)}" "Sent message:\n${prettyPrintJson(message)}"
} }
session.send(message) session.send(message)
@@ -207,6 +224,7 @@ private class NodeJsInspectorClientContextImpl(engine: NodeJsInspectorClient) :
* Releases all the resources and destroys the Node.js process. * Releases all the resources and destroys the Node.js process.
*/ */
suspend fun release() { suspend fun release() {
logger.fine { "Releasing $this" }
webSocketSession?.close() webSocketSession?.close()
webSocketSession = null webSocketSession = null
webSocketClient.close() webSocketClient.close()