Skip to content

Commit 00b4d91

Browse files
committed
embedded controller for gestaohospital / missing spring-context dependency for gestaohospital
1 parent f94863e commit 00b4d91

4 files changed

Lines changed: 216 additions & 1 deletion

File tree

jdk_8_maven/cs/rest-gui/gestaohospital/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@
5050
<groupId>org.springframework.boot</groupId>
5151
<artifactId>spring-boot-starter-data-mongodb</artifactId>
5252
</dependency>
53-
53+
54+
<dependency>
55+
<groupId>org.springframework</groupId>
56+
<artifactId>spring-context</artifactId>
57+
</dependency>
58+
5459
</dependencies>
5560

5661
<build>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
<properties>
8+
<mongo.version>3.12.10</mongo.version>
9+
</properties>
10+
11+
<artifactId>evomaster-benchmark-em-embedded-rest-gestaohospital</artifactId>
12+
<packaging>jar</packaging>
13+
14+
<parent>
15+
<groupId>org.evomaster</groupId>
16+
<artifactId>evomaster-benchmark-em-embedded-rest</artifactId>
17+
<version>1.4.1-SNAPSHOT</version>
18+
</parent>
19+
20+
21+
<dependencies>
22+
<dependency>
23+
<groupId>org.mongodb</groupId>
24+
<artifactId>mongo-java-driver</artifactId>
25+
<version>${mongo.version}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.codenation</groupId>
29+
<artifactId>gestaohospitalar</artifactId>
30+
<version>0.0.1</version>
31+
</dependency>
32+
<dependency>
33+
<groupId>org.testcontainers</groupId>
34+
<artifactId>testcontainers</artifactId>
35+
<scope>compile</scope>
36+
</dependency>
37+
<dependency>
38+
<groupId>junit</groupId>
39+
<artifactId>junit</artifactId>
40+
<scope>compile</scope>
41+
<version>4.11</version>
42+
</dependency>
43+
<dependency>
44+
<groupId>org.springframework</groupId>
45+
<artifactId>spring-jdbc</artifactId>
46+
<version>5.3.9</version>
47+
</dependency>
48+
</dependencies>
49+
50+
51+
</project>
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
package br.com.codenation.hospital;
2+
3+
import com.mongodb.MongoClient;
4+
import org.evomaster.client.java.controller.EmbeddedSutController;
5+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
6+
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
7+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
8+
import org.evomaster.client.java.controller.internal.db.DbSpecification;
9+
import org.evomaster.client.java.controller.problem.ProblemInfo;
10+
import org.evomaster.client.java.controller.problem.RestProblem;
11+
import org.springframework.boot.SpringApplication;
12+
import org.springframework.context.ConfigurableApplicationContext;
13+
import org.testcontainers.containers.GenericContainer;
14+
15+
import java.sql.Connection;
16+
import java.util.Arrays;
17+
import java.util.List;
18+
import java.util.Map;
19+
20+
21+
/**
22+
* Class used to start/stop the SUT. This will be controller by the EvoMaster process
23+
*/
24+
public class EmbeddedEvoMasterController extends EmbeddedSutController {
25+
26+
public static void main(String[] args) {
27+
28+
int port = 40100;
29+
if (args.length > 0) {
30+
port = Integer.parseInt(args[0]);
31+
}
32+
33+
EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
34+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
35+
36+
starter.start();
37+
}
38+
39+
40+
private ConfigurableApplicationContext ctx;
41+
42+
private static final int MONGODB_PORT = 27017;
43+
44+
private static final String MONGODB_VERSION = "3.2";
45+
46+
private static final String MONGODB_DATABASE_NAME = "HospitalDB";
47+
48+
private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION)
49+
.withExposedPorts(MONGODB_PORT);
50+
51+
52+
public EmbeddedEvoMasterController() {
53+
this(0);
54+
}
55+
56+
public EmbeddedEvoMasterController(int port) {
57+
setControllerPort(port);
58+
}
59+
60+
61+
@Override
62+
public String startSut() {
63+
64+
mongodbContainer.start();
65+
66+
ctx = SpringApplication.run(GestaohospitalarApplication.class,
67+
new String[]{"--server.port=0",
68+
"--liquibase.enabled=false",
69+
"--spring.data.mongodb.uri=mongodb://" + mongodbContainer.getContainerIpAddress() + ":" + mongodbContainer.getMappedPort(MONGODB_PORT) + "/" + MONGODB_DATABASE_NAME,
70+
"--spring.datasource.username=sa",
71+
"--spring.datasource.password",
72+
"--dg-toolkit.derby.port=0",
73+
"--spring.cache.type=NONE"
74+
});
75+
76+
return "http://localhost:" + getSutPort();
77+
}
78+
79+
protected int getSutPort() {
80+
return (Integer) ((Map) ctx.getEnvironment()
81+
.getPropertySources().get("server.ports").getSource())
82+
.get("local.server.port");
83+
}
84+
85+
86+
@Override
87+
public boolean isSutRunning() {
88+
return ctx != null && ctx.isRunning();
89+
}
90+
91+
@Override
92+
public void stopSut() {
93+
ctx.stop();
94+
ctx.close();
95+
96+
mongodbContainer.stop();
97+
}
98+
99+
@Override
100+
public String getPackagePrefixesToCover() {
101+
return "br.com.codenation.hospital.";
102+
}
103+
104+
@Override
105+
public void resetStateOfSUT() {
106+
MongoClient mongoClient = new MongoClient(mongodbContainer.getContainerIpAddress(),
107+
mongodbContainer.getMappedPort(MONGODB_PORT));
108+
109+
mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
110+
}
111+
112+
@Override
113+
public boolean handleLocalAuthenticationSetup(String authenticationInfo) {
114+
return super.handleLocalAuthenticationSetup(authenticationInfo);
115+
}
116+
117+
@Override
118+
public List<DbSpecification> getDbSpecifications() {
119+
return null;
120+
}
121+
122+
@Override
123+
public void resetDatabase(List<String> tablesToClean) {
124+
super.resetDatabase(tablesToClean);
125+
}
126+
127+
128+
@Override
129+
public List<AuthenticationDto> getInfoForAuthentication() {
130+
return null;
131+
}
132+
133+
/**
134+
* Returns null since the case study has no JDBC Connection
135+
*
136+
* @return
137+
*/
138+
@Override
139+
public Connection getConnection() {
140+
return null;
141+
}
142+
143+
144+
@Override
145+
public ProblemInfo getProblemInfo() {
146+
return new RestProblem(
147+
"http://localhost:" + getSutPort() + "/v2/api-docs",
148+
null
149+
);
150+
}
151+
152+
@Override
153+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
154+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
155+
}
156+
157+
158+
}

jdk_8_maven/em/embedded/rest/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<module>ocvn</module>
2424
<module>languagetool</module>
2525
<module>restcountries</module>
26+
<module>gestaohospital</module>
2627
</modules>
2728

2829
</project>

0 commit comments

Comments
 (0)