@@ -3,6 +3,7 @@ package org.utbot.instrumentation.process
3
3
import com.jetbrains.rd.util.*
4
4
import com.jetbrains.rd.util.lifetime.Lifetime
5
5
import kotlinx.coroutines.*
6
+ import org.mockito.Mockito
6
7
import org.utbot.common.*
7
8
import org.utbot.framework.plugin.api.util.UtContext
8
9
import org.utbot.instrumentation.agent.Agent
@@ -63,6 +64,21 @@ fun logLevelArgument(level: LogLevel): String {
63
64
return " $ENABLE_LOGS_OPTION =$level "
64
65
}
65
66
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
+
66
82
private fun findLogLevel (args : Array <String >): LogLevel {
67
83
val logArgument = args.find{ it.contains(ENABLE_LOGS_OPTION ) } ? : return LogLevel .Fatal
68
84
@@ -95,6 +111,7 @@ fun main(args: Array<String>) = runBlocking {
95
111
96
112
try {
97
113
ClientProtocolBuilder ().withProtocolTimeout(messageFromMainTimeout).start(port) {
114
+ this .protocol.scheduler.queue { warmupMockito() }
98
115
val kryoHelper = KryoHelper (lifetime)
99
116
logger.info { " setup started" }
100
117
AbstractSettings .setupFactory(RdSettingsContainerFactory (protocol.settingsModel))
0 commit comments