Skip to content

Commit a3b2388

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 4a34d82 commit a3b2388

File tree

35 files changed

+1973
-583
lines changed

35 files changed

+1973
-583
lines changed

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,5 @@ djl_api_version=0.17.0
4343
pytorch_native_version=1.9.1
4444
# soot also depends on asm, so there could be two different versions
4545

46-
kotlin.stdlib.default.dependency=false
46+
kotlin.stdlib.default.dependency=false
47+
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m

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
@@ -71,4 +71,5 @@ jar {
7171
}
7272

7373
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
74+
zip64 = true
7475
}

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/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.utbot.framework.util.jimpleBody
3939
import org.utbot.framework.util.runSoot
4040
import org.utbot.framework.util.toModel
4141
import org.utbot.instrumentation.ConcreteExecutor
42+
import org.utbot.instrumentation.warmup
4243
import org.utbot.instrumentation.warmup.Warmup
4344
import java.io.File
4445
import java.nio.file.Path

utbot-instrumentation-tests/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ dependencies {
1111
testImplementation project(':utbot-instrumentation')
1212
testImplementation project(':utbot-sample')
1313
testImplementation group: 'org.jacoco', name: 'org.jacoco.report', version: jacoco_version
14+
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: '2022.2.5'
15+
implementation group: 'com.jetbrains.rd', name: 'rd-gen', version: '2022.2.5'
16+
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: '2022.2.5'
1417
}
1518

1619
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: 40 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.2.5"
6+
}
17
apply from: "${parent.projectDir}/gradle/include/jvm-project.gradle"
28

39
dependencies {
410
implementation 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,14 @@ 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+
// todo on kotlin 1.7 move to 2022.3+
21+
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: '2022.2.5'
22+
implementation group: 'com.jetbrains.rd', name: 'rd-gen', version: '2022.2.5'
23+
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: '2022.2.5'
24+
25+
implementation group: 'net.java.dev.jna', name: 'jna-platform', version: '5.5.0'
26+
27+
1328
// TODO: this is necessary for inline classes mocking in UtExecutionInstrumentation
1429
implementation group: 'org.mockito', name: 'mockito-core', version: '4.2.0'
1530
implementation group: 'org.mockito', name: 'mockito-inline', version: '4.2.0'
@@ -32,3 +47,28 @@ configurations {
3247
artifacts {
3348
instrumentationArchive jar
3449
}
50+
51+
def repoRoot = project.projectDir
52+
def hashBaseDir = new File(repoRoot, "build/rdgen")
53+
def rdBaseDir = new File(repoRoot, "src/main/kotlin/org/utbot/instrumentation/rd")
54+
def rdOutputDir = new File(rdBaseDir, "generated")
55+
56+
task generateProtocolModels(type: RdGenTask) {
57+
group = "rdgen"
58+
// todo which extensions
59+
def rdParams = extensions.getByName("params") as RdGenExtension
60+
rdParams.verbose = true
61+
62+
rdParams.sources(new File(rdBaseDir, "models"))
63+
rdParams.hashFolder = new File(hashBaseDir, "models").canonicalPath
64+
rdParams.packages = "org.utbot.instrumentation.rd.models"
65+
66+
rdParams.generator {
67+
language = "kotlin"
68+
transform = "symmetric"
69+
root = "org.utbot.instrumentation.rd.models.ProtocolRoot"
70+
71+
directory = rdOutputDir.canonicalPath
72+
namespace = "org.utbot.instrumentation.rd.generated"
73+
}
74+
}

0 commit comments

Comments
 (0)