@@ -3,6 +3,7 @@ package org.utbot.instrumentation.process
33import com.jetbrains.rd.util.*
44import com.jetbrains.rd.util.lifetime.Lifetime
55import kotlinx.coroutines.*
6+ import org.mockito.Mockito
67import org.utbot.common.*
78import org.utbot.framework.plugin.api.util.UtContext
89import org.utbot.instrumentation.agent.Agent
@@ -63,6 +64,21 @@ fun logLevelArgument(level: LogLevel): String {
6364 return " $ENABLE_LOGS_OPTION =$level "
6465}
6566
67+ interface DummyForMockitoWarmup {
68+ fun method1 ()
69+ }
70+
71+ /* *
72+ * Mockito initialization take ~0.5-1 sec, which forces first `invoke` request to timeout
73+ * it is crucial in tests as we start process just for 1-2 such requests
74+ */
75+ fun warmupMockito () {
76+ try {
77+ val unused = Mockito .mock(DummyForMockitoWarmup ::class .java)
78+ } catch (ignored: Throwable ) {
79+ }
80+ }
81+
6682private fun findLogLevel (args : Array <String >): LogLevel {
6783 val logArgument = args.find{ it.contains(ENABLE_LOGS_OPTION ) } ? : return LogLevel .Fatal
6884
@@ -95,6 +111,7 @@ fun main(args: Array<String>) = runBlocking {
95111
96112 try {
97113 ClientProtocolBuilder ().withProtocolTimeout(messageFromMainTimeout).start(port) {
114+ this .protocol.scheduler.queue { warmupMockito() }
98115 val kryoHelper = KryoHelper (lifetime)
99116 logger.info { " setup started" }
100117 AbstractSettings .setupFactory(RdSettingsContainerFactory (protocol.settingsModel))
0 commit comments