Skip to content

Commit 3f54e7e

Browse files
committed
working on external
1 parent 5e67f59 commit 3f54e7e

6 files changed

Lines changed: 332 additions & 1 deletion

File tree

jdk_17_maven/em/embedded/rest/familie-ba-sak/pom.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
<dependency>
3535
<groupId>org.testcontainers</groupId>
3636
<artifactId>testcontainers</artifactId>
37-
<version>1.19.1</version>
3837
<scope>compile</scope>
3938
</dependency>
4039
<dependency>

jdk_17_maven/em/external/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@
1414
<modules>
1515
<module>web</module>
1616
<module>grpc</module>
17+
<module>rest</module>
1718
</modules>
1819

20+
21+
<dependencyManagement>
22+
<dependencies>
23+
<dependency>
24+
<groupId>org.postgresql</groupId>
25+
<artifactId>postgresql</artifactId>
26+
<version>42.1.4</version>
27+
</dependency>
28+
</dependencies>
29+
</dependencyManagement>
1930
</project>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
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+
<parent>
7+
<groupId>org.evomaster</groupId>
8+
<artifactId>evomaster-benchmark-jdk17-em-external-rest</artifactId>
9+
<version>2.0.1-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-jdk17-em-external-rest-familie-ba-sak</artifactId>
13+
<packaging>jar</packaging>
14+
15+
<dependencies>
16+
<dependency>
17+
<groupId>org.testcontainers</groupId>
18+
<artifactId>testcontainers</artifactId>
19+
<scope>compile</scope>
20+
</dependency>
21+
<dependency>
22+
<groupId>org.postgresql</groupId>
23+
<artifactId>postgresql</artifactId>
24+
</dependency>
25+
</dependencies>
26+
27+
<build>
28+
<plugins>
29+
<plugin>
30+
<groupId>org.apache.maven.plugins</groupId>
31+
<artifactId>maven-shade-plugin</artifactId>
32+
<executions>
33+
<execution>
34+
<phase>package</phase>
35+
<goals>
36+
<goal>shade</goal>
37+
</goals>
38+
<configuration>
39+
<finalName>familie-ba-sak-evomaster-runner</finalName>
40+
<transformers>
41+
<transformer
42+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
43+
<manifestEntries>
44+
<Main-Class>em.external.familie.ba.sak.ExternalEvoMasterController
45+
</Main-Class>
46+
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
47+
</Premain-Class>
48+
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
49+
</Agent-Class>
50+
<Can-Redefine-Classes>true</Can-Redefine-Classes>
51+
<Can-Retransform-Classes>true</Can-Retransform-Classes>
52+
</manifestEntries>
53+
</transformer>
54+
</transformers>
55+
</configuration>
56+
</execution>
57+
</executions>
58+
</plugin>
59+
</plugins>
60+
</build>
61+
62+
63+
</project>
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
package em.external.familie.ba.sak;
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.auth.AuthenticationDto;
6+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
7+
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
8+
import org.evomaster.client.java.sql.DbCleaner;
9+
import org.evomaster.client.java.sql.SqlScriptRunner;
10+
import org.evomaster.client.java.sql.SqlScriptRunnerCached;
11+
import org.evomaster.client.java.sql.DbSpecification;
12+
import org.evomaster.client.java.controller.problem.GraphQlProblem;
13+
import org.evomaster.client.java.controller.problem.ProblemInfo;
14+
import org.testcontainers.containers.GenericContainer;
15+
16+
import java.io.InputStream;
17+
import java.io.InputStreamReader;
18+
import java.sql.Connection;
19+
import java.sql.DriverManager;
20+
import java.sql.SQLException;
21+
import java.util.Arrays;
22+
import java.util.Collections;
23+
import java.util.List;
24+
25+
public class ExternalEvoMasterController extends ExternalSutController {
26+
27+
28+
public static void main(String[] args) {
29+
30+
int controllerPort = 40100;
31+
if (args.length > 0) {
32+
controllerPort = Integer.parseInt(args[0]);
33+
}
34+
int sutPort = 12345;
35+
if (args.length > 1) {
36+
sutPort = Integer.parseInt(args[1]);
37+
}
38+
String jarLocation = "cs/rest/familie-ba-sak/target";
39+
if (args.length > 2) {
40+
jarLocation = args[2];
41+
}
42+
if(! jarLocation.endsWith(".jar")) {
43+
jarLocation += "/familie-ba-sak-sut.jar";
44+
}
45+
46+
int timeoutSeconds = 120;
47+
if(args.length > 3){
48+
timeoutSeconds = Integer.parseInt(args[3]);
49+
}
50+
String command = "java";
51+
if(args.length > 4){
52+
command = args[4];
53+
}
54+
55+
56+
ExternalEvoMasterController controller =
57+
new ExternalEvoMasterController(controllerPort, jarLocation,
58+
sutPort, timeoutSeconds, command);
59+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
60+
61+
starter.start();
62+
}
63+
64+
private final int timeoutSeconds;
65+
private final int sutPort;
66+
private String jarLocation;
67+
private Connection sqlConnection;
68+
//private String INIT_DB_SCRIPT_PATH = "/populateDB.sql";
69+
70+
private List<DbSpecification> dbSpecification;
71+
72+
private String initSQLScript;
73+
74+
private static final String POSTGRES_VERSION = "13.13";
75+
76+
private static final String POSTGRES_PASSWORD = "password";
77+
78+
private static final int POSTGRES_PORT = 5432;
79+
80+
private static final GenericContainer postgres = new GenericContainer("postgres:" + POSTGRES_VERSION)
81+
.withEnv("POSTGRES_PASSWORD", POSTGRES_PASSWORD)
82+
.withEnv("POSTGRES_HOST_AUTH_METHOD", "trust") //to allow all connections without a password
83+
.withEnv("POSTGRES_DB", "familiebasak")
84+
.withTmpFs(Collections.singletonMap("/var/lib/postgresql/data", "rw"))
85+
.withExposedPorts(POSTGRES_PORT);
86+
87+
public ExternalEvoMasterController(){
88+
this(40100, "../core/target", 12345, 120, "java");
89+
}
90+
91+
public ExternalEvoMasterController(String jarLocation) {
92+
this();
93+
this.jarLocation = jarLocation;
94+
}
95+
96+
public ExternalEvoMasterController(
97+
int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command
98+
) {
99+
100+
if(jarLocation==null || jarLocation.isEmpty()){
101+
throw new IllegalArgumentException("Missing jar location");
102+
}
103+
104+
105+
this.sutPort = sutPort;
106+
this.jarLocation = jarLocation;
107+
this.timeoutSeconds = timeoutSeconds;
108+
setControllerPort(controllerPort);
109+
setJavaCommand(command);
110+
}
111+
112+
113+
@Override
114+
public String[] getInputParameters() {
115+
return new String[]{"--server.port=" + sutPort};
116+
}
117+
118+
public String[] getJVMParameters() {
119+
120+
return new String[]{
121+
"-Dspring.datasource.url=" + dbUrl(),
122+
"-Dspring.cache.type=none",
123+
"-Dspring.profiles.active=postgresql,spring-data-jpa",
124+
"-Dspring.jmx.enabled=false",
125+
};
126+
}
127+
128+
private String dbUrl() {
129+
130+
String host = postgres.getContainerIpAddress();
131+
int port = postgres.getMappedPort(5432);
132+
133+
String url = "jdbc";
134+
url += ":postgresql://"+host+":"+port+"/petclinic";
135+
136+
return url;
137+
}
138+
139+
@Override
140+
public String getBaseURL() {
141+
return "http://localhost:" + sutPort;
142+
}
143+
144+
@Override
145+
public String getPathToExecutableJar() {
146+
return jarLocation;
147+
}
148+
149+
@Override
150+
public String getLogMessageOfInitializedServer() {
151+
return "Tomcat started on port";
152+
}
153+
154+
@Override
155+
public long getMaxAwaitForInitializationInSeconds() {
156+
return timeoutSeconds;
157+
}
158+
159+
@Override
160+
public void preStart() {
161+
postgres.start();
162+
}
163+
164+
@Override
165+
public void postStart() {
166+
closeDataBaseConnection();
167+
168+
try {
169+
sqlConnection = DriverManager.getConnection(dbUrl(), "postgres", POSTGRES_PASSWORD);
170+
171+
dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.POSTGRES,sqlConnection)
172+
.withSchemas("public")
173+
);
174+
} catch (Exception e) {
175+
throw new RuntimeException(e);
176+
}
177+
}
178+
179+
@Override
180+
public void resetStateOfSUT() {
181+
}
182+
183+
@Override
184+
public void preStop() {
185+
closeDataBaseConnection();
186+
}
187+
188+
@Override
189+
public void postStop() {
190+
postgres.stop();
191+
}
192+
193+
private void closeDataBaseConnection() {
194+
if (sqlConnection != null) {
195+
try {
196+
sqlConnection.close();
197+
} catch (SQLException e) {
198+
e.printStackTrace();
199+
}
200+
sqlConnection = null;
201+
}
202+
}
203+
204+
@Override
205+
public String getPackagePrefixesToCover() {
206+
return "org.springframework.samples.petclinic";
207+
}
208+
209+
@Override
210+
public ProblemInfo getProblemInfo() {
211+
return new GraphQlProblem("/graphql");
212+
}
213+
214+
@Override
215+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
216+
return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
217+
}
218+
219+
220+
@Override
221+
public List<AuthenticationDto> getInfoForAuthentication() {
222+
return null;
223+
}
224+
225+
@Override
226+
public List<DbSpecification> getDbSpecifications() {
227+
return dbSpecification;
228+
}
229+
}
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>2.0.1-SNAPSHOT</version>
9+
</parent>
10+
11+
<artifactId>evomaster-benchmark-jdk17-em-external-rest</artifactId>
12+
<packaging>pom</packaging>
13+
14+
15+
<modules>
16+
<module>familie-ba-sak</module>
17+
</modules>
18+
19+
</project>

jdk_17_maven/em/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@
4747
</dependency>
4848
</dependencies>
4949

50+
<dependencyManagement>
51+
<dependencies>
52+
<dependency>
53+
<groupId>org.testcontainers</groupId>
54+
<artifactId>testcontainers</artifactId>
55+
<version>1.19.1</version>
56+
<scope>test</scope>
57+
</dependency>
58+
</dependencies>
59+
</dependencyManagement>
5060

5161
<build>
5262
<plugins>

0 commit comments

Comments
 (0)