Skip to content

Commit 25e0fef

Browse files
committed
preparing external driver
1 parent 592a846 commit 25e0fef

6 files changed

Lines changed: 329 additions & 1 deletion

File tree

jdk_17_maven/cs/web/spring-petclinic/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,15 @@
229229
</additionalProperties>
230230
</configuration>
231231
</execution>
232+
<execution>
233+
<goals>
234+
<goal>repackage</goal>
235+
</goals>
236+
<configuration>
237+
<finalName>spring-petclinic</finalName>
238+
<classifier>sut</classifier>
239+
</configuration>
240+
</execution>
232241
</executions>
233242
</plugin>
234243
<plugin>
@@ -318,6 +327,7 @@
318327
<plugin>
319328
<groupId>org.apache.maven.plugins</groupId>
320329
<artifactId>maven-dependency-plugin</artifactId>
330+
<version>3.6.0</version>
321331
<executions>
322332
<execution>
323333
<id>unpack</id>

jdk_17_maven/em/external/pom.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<parent>
6+
<groupId>org.evomaster</groupId>
7+
<artifactId>evomaster-benchmark-jdk17-em</artifactId>
8+
<version>1.6.2-SNAPSHOT</version>
9+
</parent>
10+
11+
<artifactId>evomaster-benchmark-jdk17-em-external</artifactId>
12+
<packaging>pom</packaging>
13+
14+
<modules>
15+
<module>web</module>
16+
</modules>
17+
18+
</project>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<parent>
6+
<groupId>org.evomaster</groupId>
7+
<artifactId>evomaster-benchmark-jdk17-em-external</artifactId>
8+
<version>1.6.2-SNAPSHOT</version>
9+
</parent>
10+
11+
<artifactId>evomaster-benchmark-jdk17-em-external-web</artifactId>
12+
<packaging>pom</packaging>
13+
14+
15+
<modules>
16+
<module>spring-petclinic</module>
17+
</modules>
18+
19+
</project>
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<artifactId>evomaster-benchmark-jdk17-em-external-web-spring-petclinic</artifactId>
8+
<packaging>jar</packaging>
9+
10+
<parent>
11+
<groupId>org.evomaster</groupId>
12+
<artifactId>evomaster-benchmark-jdk17-em-external-web</artifactId>
13+
<version>1.6.2-SNAPSHOT</version>
14+
</parent>
15+
16+
17+
<dependencies>
18+
<dependency>
19+
<groupId>com.h2database</groupId>
20+
<artifactId>h2</artifactId>
21+
<version>1.4.193</version>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.evomaster</groupId>
25+
<artifactId>evomaster-client-java-dependencies</artifactId>
26+
<version>${evomaster-version}</version>
27+
<type>pom</type>
28+
<scope>test</scope>
29+
<exclusions>
30+
<exclusion>
31+
<groupId>org.slf4j</groupId>
32+
<artifactId>slf4j-api</artifactId>
33+
</exclusion>
34+
</exclusions>
35+
</dependency>
36+
</dependencies>
37+
38+
<build>
39+
<plugins>
40+
<plugin>
41+
<groupId>org.apache.maven.plugins</groupId>
42+
<artifactId>maven-shade-plugin</artifactId>
43+
<executions>
44+
<execution>
45+
<phase>package</phase>
46+
<goals>
47+
<goal>shade</goal>
48+
</goals>
49+
<configuration>
50+
<finalName>spring-petclinic-evomaster-runner</finalName>
51+
<transformers>
52+
<transformer
53+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
54+
<manifestEntries>
55+
<Main-Class>em.external.petclinic.ExternalEvoMasterController
56+
</Main-Class>
57+
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
58+
</Premain-Class>
59+
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
60+
</Agent-Class>
61+
<Can-Redefine-Classes>true</Can-Redefine-Classes>
62+
<Can-Retransform-Classes>true</Can-Retransform-Classes>
63+
</manifestEntries>
64+
</transformer>
65+
</transformers>
66+
</configuration>
67+
</execution>
68+
</executions>
69+
</plugin>
70+
</plugins>
71+
</build>
72+
73+
74+
</project>
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
package em.external.petclinic;
2+
3+
import org.evomaster.client.java.controller.ExternalSutController;
4+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
5+
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
6+
import org.evomaster.client.java.controller.db.DbCleaner;
7+
import org.evomaster.client.java.controller.internal.db.DbSpecification;
8+
import org.evomaster.client.java.controller.problem.ProblemInfo;
9+
import org.evomaster.client.java.controller.problem.RestProblem;
10+
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
11+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
12+
import org.evomaster.client.java.controller.problem.WebProblem;
13+
import org.h2.tools.Server;
14+
15+
import java.sql.Connection;
16+
import java.sql.DriverManager;
17+
import java.sql.SQLException;
18+
import java.util.Arrays;
19+
import java.util.List;
20+
21+
public class ExternalEvoMasterController extends ExternalSutController {
22+
23+
public static void main(String[] args) {
24+
25+
int controllerPort = 40100;
26+
if (args.length > 0) {
27+
controllerPort = Integer.parseInt(args[0]);
28+
}
29+
int sutPort = 12345;
30+
if (args.length > 1) {
31+
sutPort = Integer.parseInt(args[1]);
32+
}
33+
String jarLocation = "cs/web/spring-petclinic/target";
34+
if (args.length > 2) {
35+
jarLocation = args[2];
36+
}
37+
if(! jarLocation.endsWith(".jar")) {
38+
jarLocation += "/petclinic-sut.jar";
39+
}
40+
int timeoutSeconds = 120;
41+
if(args.length > 3){
42+
timeoutSeconds = Integer.parseInt(args[3]);
43+
}
44+
45+
String command = "java";
46+
if(args.length > 4){
47+
command = args[4];
48+
}
49+
50+
ExternalEvoMasterController controller =
51+
new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command);
52+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
53+
54+
starter.start();
55+
}
56+
57+
58+
private final int timeoutSeconds;
59+
private final int sutPort;
60+
private final int dbPort;
61+
private String jarLocation;
62+
private Connection sqlConnection;
63+
private List<DbSpecification> dbSpecification;
64+
private Server h2;
65+
66+
public ExternalEvoMasterController() {
67+
this(40100, "../core/target", 12345, 120, "java");
68+
}
69+
70+
public ExternalEvoMasterController(String jarLocation) {
71+
this();
72+
this.jarLocation = jarLocation;
73+
}
74+
75+
public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) {
76+
this.sutPort = sutPort;
77+
this.dbPort = sutPort + 1;
78+
this.jarLocation = jarLocation;
79+
this.timeoutSeconds = timeoutSeconds;
80+
setControllerPort(controllerPort);
81+
setJavaCommand(command);
82+
}
83+
84+
private String dbUrl( ) {
85+
86+
String url = "jdbc";
87+
url += ":h2:tcp://localhost:" + dbPort + "/mem:testdb_" + dbPort;
88+
89+
return url;
90+
}
91+
92+
@Override
93+
public String[] getInputParameters() {
94+
return new String[]{"--server.port=" + sutPort};
95+
}
96+
97+
public String[] getJVMParameters() {
98+
return new String[]{
99+
"-Dspring.datasource.url=" + dbUrl() + ";DB_CLOSE_DELAY=-1",
100+
"-Dspring.jpa.database-platform=org.hibernate.dialect.H2Dialect",
101+
"-Dspring.datasource.username=sa",
102+
"-Dspring.datasource.password"
103+
};
104+
}
105+
106+
@Override
107+
public String getBaseURL() {
108+
return "http://localhost:" + sutPort;
109+
}
110+
111+
@Override
112+
public String getPathToExecutableJar() {
113+
return jarLocation;
114+
}
115+
116+
@Override
117+
public String getLogMessageOfInitializedServer() {
118+
return "Started Application in ";
119+
}
120+
121+
@Override
122+
public long getMaxAwaitForInitializationInSeconds() {
123+
return timeoutSeconds;
124+
}
125+
126+
@Override
127+
public void preStart() {
128+
129+
try {
130+
//starting H2
131+
h2 = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "" + dbPort);
132+
h2.start();
133+
} catch (SQLException e) {
134+
throw new RuntimeException(e);
135+
}
136+
}
137+
138+
@Override
139+
public void postStart() {
140+
closeDataBaseConnection();
141+
142+
try {
143+
Class.forName("org.h2.Driver");
144+
sqlConnection = DriverManager.getConnection(dbUrl(), "sa", "");
145+
dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.H2,sqlConnection));
146+
} catch (Exception e) {
147+
throw new RuntimeException(e);
148+
}
149+
}
150+
151+
@Override
152+
public void resetStateOfSUT() {
153+
//DbCleaner.clearDatabase_H2(sqlConnection);
154+
}
155+
156+
@Override
157+
public void preStop() {
158+
closeDataBaseConnection();
159+
}
160+
161+
@Override
162+
public void postStop() {
163+
if (h2 != null) {
164+
h2.stop();
165+
}
166+
}
167+
168+
private void closeDataBaseConnection() {
169+
if (sqlConnection != null) {
170+
try {
171+
sqlConnection.close();
172+
} catch (SQLException e) {
173+
e.printStackTrace();
174+
}
175+
sqlConnection = null;
176+
}
177+
}
178+
179+
@Override
180+
public String getPackagePrefixesToCover() {
181+
return "org.springframework.samples.petclinic.";
182+
}
183+
184+
185+
@Override
186+
public ProblemInfo getProblemInfo() {
187+
return new WebProblem("/");
188+
}
189+
190+
@Override
191+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
192+
return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
193+
}
194+
195+
196+
@Override
197+
public List<AuthenticationDto> getInfoForAuthentication() {
198+
return null;
199+
}
200+
201+
202+
203+
@Override
204+
public List<DbSpecification> getDbSpecifications() {
205+
return dbSpecification;
206+
}
207+
}

jdk_17_maven/em/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<packaging>pom</packaging>
1313

1414
<modules>
15-
<!-- <module>external</module>-->
15+
<module>external</module>
1616
<module>embedded</module>
1717
</modules>
1818

0 commit comments

Comments
 (0)