Skip to content

Commit 04413f1

Browse files
committed
[instrumentation-rd]
1. switched from Protocol.Command to rd generated model 2. added utbot-rd project featuring LifetimedProcess, ProcessWithRdServer and minor rd-related utility classes 3. Switched from message-driven ConcreteExecutor to callback rd model, featuring UtInstrumentationProcess
1 parent 058c682 commit 04413f1

File tree

36 files changed

+1991
-578
lines changed

36 files changed

+1991
-578
lines changed

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,5 @@ org.gradle.parallel=false
5151
org.gradle.jvmargs="-XX:MaxHeapSize=3072m"
5252
kotlin.compiler.execution.strategy=in-process
5353

54-
org.gradle.jvmargs=-Xmx6144m
54+
org.gradle.jvmargs=-Xmx6144m
55+
#kotlin.stdlib.default.dependency=false

settings.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
pluginManagement {
2+
resolutionStrategy {
3+
eachPlugin {
4+
if (requested.id.name == "rdgen") {
5+
useModule("com.jetbrains.rd:rd-gen:${requested.version}")
6+
}
7+
}
8+
}
9+
}
10+
111
rootProject.name = 'utbot'
212

313
include 'utbot-core'
@@ -17,4 +27,5 @@ include 'utbot-summary'
1727
include 'utbot-gradle'
1828
//include 'utbot-maven'
1929
include 'utbot-summary-tests'
30+
include 'utbot-rd'
2031

utbot-analytics/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,5 @@ jar {
8282
}
8383

8484
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
85+
zip64 = true
8586
}

utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/UtExecutionResult.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ class ConcreteExecutionFailureException(cause: Throwable, errorFile: File, val p
4848
appendLine("----------------------------------------")
4949
appendLine("The child process is dead")
5050
appendLine("Cause:\n${cause.message}")
51-
appendLine("Last 20 lines of the error log ${errorFile.absolutePath}:")
51+
appendLine("Last 100 lines of the error log ${errorFile.absolutePath}:")
5252
appendLine("----------------------------------------")
5353
errorFile.useLines { lines ->
5454
val lastLines = LinkedList<String>()
5555
for (line in lines) {
5656
lastLines.add(line)
57-
if (lastLines.size > 20) {
57+
if (lastLines.size > 100) {
5858
lastLines.removeFirst()
5959
}
6060
}

utbot-framework/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ dependencies {
3434
//implementation 'junit:junit:4.13.1'
3535
api project(':utbot-framework-api')
3636

37+
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: '2022.3.1'
38+
implementation group: 'com.jetbrains.rd', name: 'rd-gen', version: '2022.3.1'
39+
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: '2022.3.1'
40+
3741
implementation "com.github.UnitTestBot:soot:${soot_commit_hash}"
3842

3943
implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: jackson_version

utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import kotlinx.coroutines.GlobalScope
55
import kotlinx.coroutines.cancel
66
import kotlinx.coroutines.flow.Flow
77
import kotlinx.coroutines.flow.catch
8-
import kotlinx.coroutines.flow.collect
98
import kotlinx.coroutines.isActive
109
import kotlinx.coroutines.launch
1110
import kotlinx.coroutines.runBlocking
@@ -39,6 +38,7 @@ import org.utbot.framework.util.jimpleBody
3938
import org.utbot.framework.util.runSoot
4039
import org.utbot.framework.util.toModel
4140
import org.utbot.instrumentation.ConcreteExecutor
41+
import org.utbot.instrumentation.warmup
4242
import org.utbot.instrumentation.warmup.Warmup
4343
import java.io.File
4444
import java.nio.file.Path

utbot-instrumentation-tests/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ dependencies {
1616
testImplementation configurations.fetchInstrumentationJar
1717
testImplementation project(':utbot-sample')
1818
testImplementation group: 'org.jacoco', name: 'org.jacoco.report', version: jacoco_version
19+
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: '2022.3.1'
20+
implementation group: 'com.jetbrains.rd', name: 'rd-gen', version: '2022.3.1'
21+
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: '2022.3.1'
1922
}
2023

2124
processResources {

utbot-instrumentation-tests/src/test/kotlin/org/utbot/examples/TestCoverageInstrumentation.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.utbot.examples
22

3+
import com.jetbrains.rd.util.reactive.RdFault
34
import org.utbot.examples.samples.ExampleClass
45
import org.utbot.examples.statics.substitution.StaticSubstitution
56
import org.utbot.examples.statics.substitution.StaticSubstitutionExamples
@@ -74,9 +75,10 @@ class TestCoverageInstrumentation {
7475
}
7576

7677
assertInstanceOf(
77-
IllegalArgumentException::class.java,
78+
RdFault::class.java,
7879
exc.cause!!
7980
)
81+
assertTrue((exc.cause as RdFault).reasonTypeFqn == "IllegalArgumentException")
8082
}
8183
}
8284

@@ -96,9 +98,10 @@ class TestCoverageInstrumentation {
9698
}
9799

98100
assertInstanceOf(
99-
IllegalArgumentException::class.java,
101+
RdFault::class.java,
100102
exc.cause!!
101103
)
104+
assertTrue((exc.cause as RdFault).reasonTypeFqn == "IllegalArgumentException")
102105

103106
it.execute(ExampleClass::bar, arrayOf(testObject, 2))
104107
val coverageInfo1 = it.collectCoverage(ExampleClass::class.java)

utbot-instrumentation-tests/src/test/kotlin/org/utbot/examples/TestInvokeInstrumentation.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.utbot.examples
22

3+
import com.jetbrains.rd.util.reactive.RdFault
34
import org.utbot.examples.samples.ClassWithSameMethodNames
45
import org.utbot.examples.samples.ExampleClass
56
import org.utbot.examples.samples.staticenvironment.StaticExampleClass
@@ -46,9 +47,10 @@ class TestInvokeInstrumentation {
4647
)
4748
}
4849
assertInstanceOf(
49-
IllegalArgumentException::class.java,
50+
RdFault::class.java,
5051
exc.cause!!
5152
)
53+
assertTrue((exc.cause as RdFault).reasonTypeFqn == "IllegalArgumentException")
5254
}
5355
}
5456

utbot-instrumentation-tests/src/test/kotlin/org/utbot/examples/TestIsolated.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.utbot.examples
22

3+
import com.jetbrains.rd.util.reactive.RdFault
34
import org.utbot.examples.samples.ExampleClass
45
import org.utbot.examples.samples.staticenvironment.StaticExampleClass
56
import org.utbot.instrumentation.ConcreteExecutor
@@ -52,9 +53,10 @@ class TestIsolated {
5253
}
5354

5455
assertInstanceOf(
55-
IllegalArgumentException::class.java,
56+
RdFault::class.java,
5657
exc.cause!!
5758
)
59+
assertTrue((exc.cause as RdFault).reasonTypeFqn == "IllegalArgumentException")
5860
}
5961
}
6062

utbot-instrumentation/build.gradle

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
import com.jetbrains.rd.generator.gradle.RdGenExtension
2+
import com.jetbrains.rd.generator.gradle.RdGenTask
3+
4+
plugins {
5+
id 'com.jetbrains.rdgen' version "2022.3.1"
6+
}
17
apply from: "${parent.projectDir}/gradle/include/jvm-project.gradle"
28

39
dependencies {
410
api project(':utbot-framework-api')
11+
implementation project(':utbot-rd')
512

613
implementation group: 'org.ow2.asm', name: 'asm', version: asm_version
714
implementation group: 'org.ow2.asm', name: 'asm-commons', version: asm_version
@@ -10,6 +17,13 @@ dependencies {
1017
implementation group: 'de.javakaffee', name: 'kryo-serializers', version: kryo_serializers_version
1118
implementation group: 'io.github.microutils', name: 'kotlin-logging', version: kotlin_logging_version
1219

20+
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: '2022.3.1'
21+
implementation group: 'com.jetbrains.rd', name: 'rd-gen', version: '2022.3.1'
22+
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: '2022.3.1'
23+
24+
implementation group: 'net.java.dev.jna', name: 'jna-platform', version: '5.5.0'
25+
26+
1327
// TODO: this is necessary for inline classes mocking in UtExecutionInstrumentation
1428
implementation group: 'org.mockito', name: 'mockito-core', version: '4.2.0'
1529
implementation group: 'org.mockito', name: 'mockito-inline', version: '4.2.0'
@@ -55,3 +69,28 @@ configurations {
5569
artifacts {
5670
instrumentationArchive jar
5771
}
72+
73+
def repoRoot = project.projectDir
74+
def hashBaseDir = new File(repoRoot, "build/rdgen")
75+
def rdBaseDir = new File(repoRoot, "src/main/kotlin/org/utbot/instrumentation/rd")
76+
def rdOutputDir = new File(rdBaseDir, "generated")
77+
78+
task generateProtocolModels(type: RdGenTask) {
79+
group = "rdgen"
80+
// todo which extensions
81+
def rdParams = extensions.getByName("params") as RdGenExtension
82+
rdParams.verbose = true
83+
84+
rdParams.sources(new File(rdBaseDir, "models"))
85+
rdParams.hashFolder = new File(hashBaseDir, "models").canonicalPath
86+
rdParams.packages = "org.utbot.instrumentation.rd.models"
87+
88+
rdParams.generator {
89+
language = "kotlin"
90+
transform = "symmetric"
91+
root = "org.utbot.instrumentation.rd.models.ProtocolRoot"
92+
93+
directory = rdOutputDir.canonicalPath
94+
namespace = "org.utbot.instrumentation.rd.generated"
95+
}
96+
}

0 commit comments

Comments
 (0)