Skip to content

Commit 0418952

Browse files
committed
[utbot-rider]
Mockito warmup as it takes too much time in tests to initialize it
1 parent 1005e2e commit 0418952

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

utbot-instrumentation/src/main/kotlin/org/utbot/instrumentation/process/InstrumentedProcessMain.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.utbot.instrumentation.process
33
import com.jetbrains.rd.util.*
44
import com.jetbrains.rd.util.lifetime.Lifetime
55
import kotlinx.coroutines.*
6+
import org.mockito.Mockito
67
import org.utbot.common.*
78
import org.utbot.framework.plugin.api.util.UtContext
89
import 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+
6682
private 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

Comments
 (0)