@@ -3,14 +3,12 @@ package com.foo.base
33import org.evomaster.client.java.controller.InstrumentedSutStarter
44import org.evomaster.client.java.controller.api.dto.ActionDto
55import org.evomaster.core.remote.service.RemoteController
6- import org.evomaster.ci.utils.CIUtils
76import org.evomaster.core.remote.service.RemoteControllerImplementation
87import org.junit.jupiter.api.*
98import org.junit.jupiter.api.Assertions.*
109import java.io.File
1110
1211
13- @Disabled(" No CI (Travis, CircleCI and GitHub) likes this test... :( " )
1412class BaseIT {
1513
1614
@@ -19,26 +17,35 @@ class BaseIT {
1917 private val starter = InstrumentedSutStarter (driver)
2018 private lateinit var remote: RemoteController
2119
20+
2221 private fun setupJarAgent (){
2322
24- val path = File (" ../client-java/instrumentation/target" ).walk()
23+ val folder = File (" ../../../client-java/instrumentation/target" ).absoluteFile
24+ if (! folder.exists()){
25+ throw IllegalStateException (" Target folder does not exist: ${folder.absolutePath} " )
26+ }
27+
28+ val files = folder.listFiles()
29+
30+ val path = files
2531 .filter { it.name.endsWith(" .jar" ) }
2632 .find {
2733 it.name.matches(Regex (" evomaster-client-java-instrumentation-\\ d+\\ .\\ d+\\ .\\ d+(-SNAPSHOT)?\\ .jar" ))
28- }!!
29- .absolutePath
34+ }?.absolutePath
35+ if (path == null ) {
36+ val names = files.map { it.name }
37+ throw IllegalStateException (" evomaster-client-java-instrumentation jar file not found in target folder: ${folder.absolutePath} ." +
38+ " | Content: ${names.joinToString(" , " )} " )
39+ }
3040
3141 System .setProperty(" evomaster.instrumentation.jar.path" , path)
3242 }
3343
3444 @JvmStatic
3545 @BeforeAll
3646 fun beforeAll () {
37- // Travis and CircleCI do not like this test...
38- CIUtils .skipIfOnTravis()
39- CIUtils .skipIfOnCircleCI()
40-
4147 setupJarAgent()
48+ driver.setNeedsJdk17Options(true )
4249 driver.controllerPort = 0
4350 starter.start()
4451 remote = RemoteControllerImplementation (" localhost" , driver.controllerServerPort, false , false )
@@ -58,45 +65,66 @@ class BaseIT {
5865
5966 @Test
6067 fun testSearchCommands (){
61- remote.startANewSearch()
62- remote.startSUT()
68+ val startedNewSearch = remote.startANewSearch()
69+ assertTrue(startedNewSearch, " Failed to start new search" )
70+
71+ val startedSUT = remote.startSUT()
72+ assertTrue(startedSUT, " Failed to start SUT" )
6373
64- remote.registerNewAction(ActionDto ().apply { index = 0 })
74+ val actionRegistered = remote.registerNewAction(ActionDto ().apply { index = 0 })
75+ assertTrue(actionRegistered, " Failed to register action" )
6576
6677 val results = remote.getTestResults()
67- assertNotNull(results)
78+ assertNotNull(results, " Failed to get results " )
6879 assertEquals(0 , results!! .targets.size)
6980 }
7081
7182 @Test
7283 fun testRestart (){
7384
7485 // make sure it is started
75- assertTrue(remote.startSUT())
86+ assertTrue(remote.startSUT(), " Failed to start SUT " )
7687 var info = remote.getSutInfo()
77- assertNotNull(info)
88+ assertNotNull(info, " Failed to get SUT info " )
7889
7990 // stop it
80- assertTrue(remote.stopSUT())
91+ assertTrue(remote.stopSUT(), " Failed to stop SUT " )
8192 info = remote.getSutInfo()
82- assertNull(info)
93+ assertNull(info, " Failed to get SUT info after stop " )
8394
95+ val n = 3
96+ for (i in 0 until n){
97+ driver.sutPort++
8498
85- // start it again
86- driver.sutPort++ // let's try to avoid issue with TCP port taking too long to be released
87- assertTrue(remote.startSUT())
88- info = remote.getSutInfo()
89- assertNotNull(info)
99+ val started = remote.startSUT()
100+ val before = remote.getSutInfo()
101+ val stopped = remote.stopSUT()
102+ val after = remote.getSutInfo()
90103
91- // stop it
92- assertTrue(remote.stopSUT())
93- info = remote.getSutInfo()
94- assertNull(info)
104+ if (started && stopped && before != null && after == null ) {
105+ // all good
106+ return
107+ }
108+ }
95109
96- // start it again
97- driver.sutPort++
98- assertTrue(remote.startSUT())
99- info = remote.getSutInfo()
100- assertNotNull(info)
110+ fail<Any >(" Failed to start/stop SUT with $n attempts" )
111+
112+ // REFACTORED due to possible issues with port collisions
113+ // //start it again
114+ // driver.sutPort++ //let's try to avoid issue with TCP port taking too long to be released
115+ // assertTrue(remote.startSUT(), "Failed to re-start SUT on port ${driver.sutPort}")
116+ // info = remote.getSutInfo()
117+ // assertNotNull(info, "Failed to get SUT info after re-start")
118+ //
119+ // //stop it
120+ // assertTrue(remote.stopSUT(), "Failed to re-stop SUT")
121+ // info = remote.getSutInfo()
122+ // assertNull(info, "Failed to get SUT info after re-stop")
123+ //
124+ // //start it again
125+ // driver.sutPort++
126+ // assertTrue(remote.startSUT(), "Failed to re-start SUT in 3rd time on port ${driver.sutPort}")
127+ // info = remote.getSutInfo()
128+ // assertNotNull(info)
101129 }
102130}
0 commit comments