Skip to content

Commit 8b8d9f3

Browse files
authored
Remove undue 'byFuzzer' suffix rendering #1666 (#1673)
Remove undue byFuzzer suffix rendering
1 parent f0095ab commit 8b8d9f3

File tree

2 files changed

+59
-69
lines changed

2 files changed

+59
-69
lines changed

utbot-summary/src/main/kotlin/org/utbot/summary/Summarization.kt

Lines changed: 48 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,12 @@ class Summarization(val sourceFile: File?, val invokeDescriptions: List<InvokeDe
9595
when (summaryGenerationType) {
9696
SummariesGenerationType.FULL -> {
9797
executionClusters += generateSummariesForTestsWithNonEmptyPathsProducedBySymbolicExecutor(testSet)
98-
executionClusters += generateSummariesForTestsProducedByFuzzer(testSet)
98+
executionClusters += generateFuzzerBasedSummariesForTests(testSet)
9999
executionClusters += generateSummariesForTestsWithEmptyPathsProducedBySymbolicExecutor(testSet)
100100
}
101101
SummariesGenerationType.LIGHT -> {
102-
executionClusters += generateSummariesForTestsProducedBySymbolicExecutorWithoutSources(testSet)
103-
executionClusters += generateSummariesForTestsProducedByFuzzer(testSet)
102+
executionClusters += generateFuzzerBasedSummariesForTests(testSet, MethodDescriptionSource.SYMBOLIC)
103+
executionClusters += generateFuzzerBasedSummariesForTests(testSet)
104104
}
105105
SummariesGenerationType.NONE -> error("We must not fill summaries if SummariesGenerationType is NONE")
106106
}
@@ -228,83 +228,56 @@ class Summarization(val sourceFile: File?, val invokeDescriptions: List<InvokeDe
228228
return clustersToReturn.toList()
229229
}
230230

231-
private fun generateSummariesForTestsProducedBySymbolicExecutorWithoutSources(
232-
testSet: UtMethodTestSet
233-
) : List<UtExecutionCluster> {
234-
val clustersToReturn: MutableList<UtExecutionCluster> = mutableListOf()
235-
236-
val testSetWithFuzzedExecutions = prepareTestSetForByteCodeAnalysis(testSet)
237-
val executions = testSetWithFuzzedExecutions.executions as List<UtSymbolicExecution>
238-
239-
if (executions.isNotEmpty()) {
240-
executions.forEach { utExecution ->
241-
242-
val nameSuggester = sequenceOf(ModelBasedNameSuggester(), MethodBasedNameSuggester())
243-
val testMethodName = try {
244-
nameSuggester.flatMap {
245-
val executableId = testSet.method
246-
val description = FuzzedMethodDescription(executableId).apply {
247-
compilableName = if (!executableId.isConstructor) executableId.name else null
248-
}
249-
it.suggest(
250-
description,
251-
utExecution.stateBefore.parameters.map { value -> FuzzedValue(value) },
252-
utExecution.result
253-
)
254-
}.firstOrNull()
255-
} catch (t: Throwable) {
256-
logger.error(t) { "Cannot create suggested test name for $utExecution" }
257-
null
258-
}
259-
utExecution.testMethodName = testMethodName?.testName
260-
utExecution.displayName = testMethodName?.displayName
261-
utExecution.summary = testMethodName?.javaDoc
262-
}
263-
264-
val clusteredExecutions = groupFuzzedExecutions(testSetWithFuzzedExecutions)
265-
clusteredExecutions.forEach {
266-
clustersToReturn.add(
267-
UtExecutionCluster(
268-
UtClusterInfo(it.header),
269-
it.executions
270-
)
271-
)
272-
}
273-
}
274-
275-
return clustersToReturn.toList()
276-
}
277-
278-
private fun generateSummariesForTestsProducedByFuzzer(
279-
testSet: UtMethodTestSet
231+
private fun generateFuzzerBasedSummariesForTests(
232+
testSet: UtMethodTestSet,
233+
descriptionSource: MethodDescriptionSource = MethodDescriptionSource.FUZZER
280234
): List<UtExecutionCluster> {
281235
val clustersToReturn: MutableList<UtExecutionCluster> = mutableListOf()
282-
val testSetWithFuzzedExecutions = prepareTestSetWithFuzzedExecutions(testSet)
283-
val executionsProducedByFuzzer = testSetWithFuzzedExecutions.executions as List<UtFuzzedExecution>
284-
285-
if (executionsProducedByFuzzer.isNotEmpty()) {
286-
executionsProducedByFuzzer.forEach { utExecution ->
236+
val methodTestSet = when (descriptionSource) {
237+
MethodDescriptionSource.FUZZER -> prepareTestSetWithFuzzedExecutions(testSet)
238+
MethodDescriptionSource.SYMBOLIC -> prepareTestSetForByteCodeAnalysis(testSet)
239+
}
287240

288-
val nameSuggester = sequenceOf(ModelBasedNameSuggester(), MethodBasedNameSuggester())
241+
if (methodTestSet.executions.isNotEmpty()) {
242+
methodTestSet.executions.forEach { utExecution ->
243+
val nameSuggester = sequenceOf(ModelBasedNameSuggester(), MethodBasedNameSuggester(descriptionSource))
289244
val testMethodName = try {
290245
nameSuggester.flatMap {
291-
it.suggest(
292-
utExecution.fuzzedMethodDescription as FuzzedMethodDescription,
293-
utExecution.fuzzingValues as List<FuzzedValue>,
294-
utExecution.result
295-
)
246+
when (descriptionSource) {
247+
MethodDescriptionSource.FUZZER -> {
248+
with(utExecution as UtFuzzedExecution) {
249+
it.suggest(
250+
utExecution.fuzzedMethodDescription as FuzzedMethodDescription,
251+
utExecution.fuzzingValues as List<FuzzedValue>,
252+
utExecution.result
253+
)
254+
}
255+
}
256+
257+
MethodDescriptionSource.SYMBOLIC -> {
258+
val executableId = testSet.method
259+
val description = FuzzedMethodDescription(executableId).apply {
260+
compilableName = if (!executableId.isConstructor) executableId.name else null
261+
}
262+
it.suggest(
263+
description,
264+
utExecution.stateBefore.parameters.map { value -> FuzzedValue(value) },
265+
utExecution.result
266+
)
267+
}
268+
}
296269
}.firstOrNull()
297270
} catch (t: Throwable) {
298271
logger.error(t) { "Cannot create suggested test name for $utExecution" } // TODO: add better explanation or default behaviour
299272
null
300273
}
274+
301275
utExecution.testMethodName = testMethodName?.testName
302276
utExecution.displayName = testMethodName?.displayName
303277
utExecution.summary = testMethodName?.javaDoc
304278
}
305279

306-
val clusteredExecutions = groupFuzzedExecutions(testSetWithFuzzedExecutions)
307-
280+
val clusteredExecutions = groupFuzzedExecutions(methodTestSet)
308281
clusteredExecutions.forEach {
309282
clustersToReturn.add(
310283
UtExecutionCluster(
@@ -445,4 +418,13 @@ private fun invokeDescriptions(testSet: UtMethodTestSet, searchDirectory: Path):
445418
}
446419
}
447420

448-
data class InvokeDescription(val sootMethod: SootMethod, val ast: MethodDeclaration)
421+
data class InvokeDescription(val sootMethod: SootMethod, val ast: MethodDeclaration)
422+
423+
/**
424+
* Sometimes, we need to use fuzzer for preparing summaries even for [UtSymbolicExecution]s.
425+
* See [Summarization.generateFuzzerBasedSummariesForTests].
426+
*/
427+
enum class MethodDescriptionSource {
428+
FUZZER,
429+
SYMBOLIC,
430+
}

utbot-summary/src/main/kotlin/org/utbot/summary/fuzzer/names/MethodBasedNameSuggester.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,17 @@ package org.utbot.summary.fuzzer.names
33
import org.utbot.framework.plugin.api.UtExecutionResult
44
import org.utbot.fuzzer.FuzzedMethodDescription
55
import org.utbot.fuzzer.FuzzedValue
6+
import org.utbot.summary.MethodDescriptionSource
67

7-
class MethodBasedNameSuggester : NameSuggester {
8-
override fun suggest(description: FuzzedMethodDescription, values: List<FuzzedValue>, result: UtExecutionResult?): Sequence<TestSuggestedInfo> {
9-
return sequenceOf(TestSuggestedInfo("test${description.compilableName?.capitalize() ?: "Created"}ByFuzzer"))
8+
class MethodBasedNameSuggester(private val source: MethodDescriptionSource = MethodDescriptionSource.FUZZER) : NameSuggester {
9+
override fun suggest(
10+
description: FuzzedMethodDescription,
11+
values: List<FuzzedValue>,
12+
result: UtExecutionResult?
13+
): Sequence<TestSuggestedInfo> {
14+
val compilableName = description.compilableName?.capitalize() ?: "Created"
15+
// See [Summarization.generateSummariesForTests].
16+
val suffix = if (source == MethodDescriptionSource.FUZZER) "ByFuzzer" else ""
17+
return sequenceOf(TestSuggestedInfo("test${compilableName}${suffix}"))
1018
}
1119
}

0 commit comments

Comments
 (0)