Skip to content

Commit d63d3bc

Browse files
committed
add e2e test
1 parent 1e6371e commit d63d3bc

2 files changed

Lines changed: 66 additions & 1 deletion

File tree

core-tests/e2e-tests/spring/spring-rest-openapi-v3/src/main/kotlin/com/foo/rest/examples/spring/openapi/v3/flakinessdetect/FlakinessDetectRest.kt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController
1010
import java.time.LocalDateTime
1111
import java.time.format.DateTimeFormatter
1212
import java.util.UUID
13+
import java.util.concurrent.atomic.AtomicInteger
1314
import kotlin.math.abs
1415
import kotlin.math.max
1516
import kotlin.math.min
@@ -21,6 +22,7 @@ class FlakinessDetectRest {
2122
companion object{
2223
val formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS yyyy-MM-dd EEEE 'Week' ww")
2324
private val START_UP_OBJECT_TAG = arrayOf(javax.validation.constraints.Pattern.Flag.CASE_INSENSITIVE).toString()
25+
private val MULTI_EXECUTION_COUNTER = AtomicInteger(0)
2426
}
2527
@GetMapping(path = ["/objectFlag"])
2628
fun getEmptyFlag() : ResponseEntity<String> {
@@ -54,6 +56,19 @@ class FlakinessDetectRest {
5456
return ResponseEntity.ok(FlakinessDetectData(msg, num))
5557
}
5658

59+
@GetMapping(path = ["/multiexecution"])
60+
fun getMultiExecution() : ResponseEntity<MultiExecutionData> {
61+
val index = MULTI_EXECUTION_COUNTER.getAndIncrement() % 3
62+
63+
return ResponseEntity.ok(
64+
when (index) {
65+
0 -> MultiExecutionData("same", "a", "b")
66+
1 -> MultiExecutionData("same", "x", "b")
67+
else -> MultiExecutionData("same", "a", "y")
68+
}
69+
)
70+
}
71+
5772
@GetMapping("/price/estimate")
5873
fun estimatePrice(@RequestParam base: Int): Map<String, Int> {
5974
val randomJitter = randomInt(1000)
@@ -103,4 +118,10 @@ data class TimeAgoData(
103118
val calculatedPastTime: String
104119
)
105120

106-
class EmptyForFlag(val flag: String)
121+
data class MultiExecutionData(
122+
val stable: String,
123+
val first: String,
124+
val second: String
125+
)
126+
127+
class EmptyForFlag(val flag: String)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.evomaster.e2etests.spring.openapi.v3.flakinessdetect
2+
3+
import com.foo.rest.examples.spring.openapi.v3.flakinessdetect.FlakinessDetectController
4+
import org.evomaster.e2etests.spring.openapi.v3.SpringTestBase
5+
import org.junit.jupiter.api.Assertions.assertTrue
6+
import org.junit.jupiter.api.BeforeAll
7+
import org.junit.jupiter.api.Test
8+
9+
class FlakinessDetectWithMultiExecEMTest : SpringTestBase() {
10+
11+
companion object {
12+
@BeforeAll
13+
@JvmStatic
14+
fun init() {
15+
initClass(FlakinessDetectController())
16+
}
17+
}
18+
19+
@Test
20+
fun testRunEMWithMultipleFlakinessExecutions() {
21+
22+
val outputFolder = "FlakinessDetectMultipleExecutionsEM"
23+
val outputClass = "org.foo.FlakinessDetectMultipleExecutionsEM"
24+
25+
runTestHandlingFlakyAndCompilation(
26+
outputFolder,
27+
outputClass,
28+
30,
29+
true
30+
) { args: MutableList<String> ->
31+
32+
setOption(args, "minimize", "true")
33+
setOption(args, "handleFlakiness", "true")
34+
setOption(args, "execNumForDetectFlakiness", "2")
35+
setOption(args, "endpointFocus", "/api/flakinessdetect/multiexecution")
36+
37+
val solution = initAndRun(args)
38+
39+
assertTrue(solution.individuals.isNotEmpty())
40+
assertTextInTests(outputFolder, outputClass, "Flaky value of field \"'first'\"")
41+
assertTextInTests(outputFolder, outputClass, "Flaky value of field \"'second'\"")
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)