Skip to content

Commit 51c1f6f

Browse files
author
Omur
committed
embedded driver start
1 parent 697e578 commit 51c1f6f

6 files changed

Lines changed: 184 additions & 3 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,4 +356,5 @@ jdk_8_maven/em/external/rest/spring-batch-rest/target
356356
/jdk_8_maven/em/embedded/rest/spring-actuator-demo/target
357357
/jdk_8_maven/em/external/rest/spring-actuator-demo/target
358358

359-
/jdk_21_maven/cs/rest-gui/webgoat/target
359+
/jdk_21_maven/cs/rest-gui/webgoat/target
360+
/jdk_21_maven/em/embedded/rest-gui/webgoat/target

jdk_21_maven/cs/rest-gui/webgoat/src/main/java/org/owasp/webgoat/server/StartWebGoat.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@
3030
import org.owasp.webgoat.webwolf.WebWolf;
3131
import org.springframework.boot.ResourceBanner;
3232
import org.springframework.boot.WebApplicationType;
33+
import org.springframework.boot.autoconfigure.SpringBootApplication;
3334
import org.springframework.boot.builder.SpringApplicationBuilder;
3435
import org.springframework.context.ApplicationContext;
3536
import org.springframework.core.io.ClassPathResource;
3637

3738
@Slf4j
3839
public class StartWebGoat {
39-
40+
static ApplicationContext webGoatContext; //MODIFIED
4041
public static void main(String[] args) {
4142
var parentBuilder =
4243
new SpringApplicationBuilder().parent(ParentConfig.class).web(WebApplicationType.NONE);
@@ -46,7 +47,8 @@ public static void main(String[] args) {
4647
.web(WebApplicationType.SERVLET)
4748
.run(args);
4849

49-
ApplicationContext webGoatContext =
50+
//MODIFIED
51+
webGoatContext =
5052
parentBuilder
5153
.child(WebGoat.class)
5254
.banner(new ResourceBanner(new ClassPathResource("banner-webgoat.txt")))
@@ -56,6 +58,11 @@ public static void main(String[] args) {
5658
printStartUpMessage(webGoatContext);
5759
}
5860

61+
//MODIFIED: Added this method to allow access to the ApplicationContext
62+
public static ApplicationContext getApplicationContext() {
63+
return webGoatContext;
64+
}
65+
5966
private static void printStartUpMessage(ApplicationContext webGoatContext) {
6067
var url = webGoatContext.getEnvironment().getProperty("webgoat.url");
6168
var sslEnabled =

jdk_21_maven/em/embedded/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
<modules>
1515
<module>rest</module>
16+
<module>rest-gui</module>
1617
</modules>
1718

1819
</project>
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-jdk21-em-embedded</artifactId>
8+
<version>3.4.1-SNAPSHOT</version>
9+
</parent>
10+
11+
<artifactId>evomaster-benchmark-jdk21-em-embedded-rest-gui</artifactId>
12+
<packaging>pom</packaging>
13+
14+
<modules>
15+
<module>webgoat</module>
16+
</modules>
17+
18+
</project>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
8+
<artifactId>evomaster-benchmark-jdk21-em-embedded-rest-gui-webgoat</artifactId>
9+
<packaging>jar</packaging>
10+
11+
<parent>
12+
<groupId>org.evomaster</groupId>
13+
<artifactId>evomaster-benchmark-jdk21-em-embedded-rest-gui</artifactId>
14+
<version>3.4.1-SNAPSHOT</version>
15+
</parent>
16+
17+
<dependencies>
18+
<dependency>
19+
<groupId>org.owasp.webgoat</groupId>
20+
<artifactId>webgoat</artifactId>
21+
<version>2024.2-SNAPSHOT</version>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.springframework.boot</groupId>
25+
<artifactId>spring-boot-starter-web</artifactId>
26+
<version>3.3.5</version>
27+
</dependency>
28+
<dependency>
29+
<groupId>com.fasterxml.jackson.datatype</groupId>
30+
<artifactId>jackson-datatype-jsr310</artifactId>
31+
<version>2.17.0</version>
32+
</dependency>
33+
</dependencies>
34+
35+
36+
</project>
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package em.embedded.webgoat;
2+
3+
import org.evomaster.client.java.controller.EmbeddedSutController;
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.sql.DbSpecification;
8+
import org.evomaster.client.java.controller.problem.ProblemInfo;
9+
import org.evomaster.client.java.controller.problem.RestProblem;
10+
import org.owasp.webgoat.server.StartWebGoat;
11+
import org.springframework.boot.SpringApplication;
12+
import org.springframework.context.ConfigurableApplicationContext;
13+
14+
import java.util.Collections;
15+
import java.util.List;
16+
import java.util.Map;
17+
18+
19+
/**
20+
* Class used to start/stop the SUT. This will be controller by the EvoMaster process
21+
*/
22+
public class EmbeddedEvoMasterController extends EmbeddedSutController {
23+
24+
public static void main(String[] args) {
25+
26+
int port = 40100;
27+
if (args.length > 0) {
28+
port = Integer.parseInt(args[0]);
29+
}
30+
31+
EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
32+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
33+
34+
starter.start();
35+
}
36+
37+
38+
private ConfigurableApplicationContext ctx;
39+
40+
41+
public EmbeddedEvoMasterController() {
42+
this(0);
43+
}
44+
45+
public EmbeddedEvoMasterController(int port) {
46+
setControllerPort(port);
47+
}
48+
49+
@Override
50+
public String startSut() {
51+
52+
StartWebGoat app = new StartWebGoat();
53+
54+
app.main(new String[]{
55+
"--server.port=0",
56+
"--spring.profiles.active=dev"
57+
});
58+
59+
60+
ctx = (ConfigurableApplicationContext) app.getApplicationContext();
61+
62+
return "http://localhost:" + getSutPort();
63+
}
64+
65+
protected int getSutPort() {
66+
return (Integer) ((Map) ctx.getEnvironment()
67+
.getPropertySources().get("server.ports").getSource())
68+
.get("local.server.port");
69+
}
70+
71+
72+
@Override
73+
public boolean isSutRunning() {
74+
return ctx != null && ctx.isRunning();
75+
}
76+
77+
@Override
78+
public void stopSut() {
79+
ctx.stop();
80+
ctx.close();
81+
}
82+
83+
@Override
84+
public String getPackagePrefixesToCover() {
85+
return "org.owasp.webgoat.";
86+
}
87+
88+
@Override
89+
public void resetStateOfSUT() {
90+
91+
}
92+
93+
94+
@Override
95+
public List<DbSpecification> getDbSpecifications() {
96+
return null;
97+
}
98+
99+
100+
@Override
101+
public List<AuthenticationDto> getInfoForAuthentication() {
102+
return null;
103+
}
104+
105+
106+
@Override
107+
public ProblemInfo getProblemInfo() {
108+
return new RestProblem(
109+
"http://localhost:" + getSutPort() + "/WebGoat/v3/api-docs",
110+
null
111+
);
112+
}
113+
114+
@Override
115+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
116+
return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
117+
}
118+
}

0 commit comments

Comments
 (0)