Skip to content

Commit 6d8e36f

Browse files
authored
Merge pull request #151 from WebFuzzing/quartz-manager-drivers
Quartz manager drivers
2 parents f6d032d + a256a73 commit 6d8e36f

File tree

17 files changed

+496
-5
lines changed

17 files changed

+496
-5
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,10 @@ jdk_8_maven/em/external/rest/spring-batch-rest/target
369369
/jdk_11_maven/em/embedded/rest/http-patch-spring/target
370370
/jdk_11_maven/em/external/rest/http-patch-spring/target
371371

372+
/jdk_11_maven/cs/rest-gui/quartz-manager/target
373+
/jdk_11_maven/em/embedded/rest/quartz-manager/target
374+
/jdk_11_maven/em/external/rest/quartz-manager/target
375+
372376
/jdk_8_maven/cs/rest/original/spring-ecommerce/target
373377
/jdk_8_maven/em/embedded/rest/spring-ecommerce/target
374-
/jdk_8_maven/em/external/rest/spring-ecommerce/target
378+
/jdk_8_maven/em/external/rest/spring-ecommerce/target

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ For simplicity, all schemas are also available as JSON/YML files under the folde
7070
> **IMPORTANT**: More details (e.g., #LOCs and used databases) on these APIs can be found [in this table](statistics/table_emb.md).
7171
7272

73-
### REST: Java/Kotlin (34)
73+
### REST: Java/Kotlin (35)
7474

7575
* **Bibliothek** (MIT), [jdk_17_gradle/cs/rest/bibliothek](jdk_17_gradle/cs/rest/bibliothek), from [https://github.com/PaperMC/bibliothek](https://github.com/PaperMC/bibliothek)
7676

@@ -112,6 +112,8 @@ For simplicity, all schemas are also available as JSON/YML files under the folde
112112

113113
* **ProxyPrint** (Apache), [jdk_8_maven/cs/rest/original/proxyprint](jdk_8_maven/cs/rest/original/proxyprint), from [https://github.com/ProxyPrint/proxyprint-kitchen](https://github.com/ProxyPrint/proxyprint-kitchen)
114114

115+
* **Quartz Manager** (Apache), [jdk_11_maven/cs/rest-gui/quartz-manager](jdk_11_maven/cs/rest-gui/quartz-manager), from [https://github.com/fabioformosa/quartz-manager](https://github.com/fabioformosa/quartz-manager)
116+
115117
* **Reservations API** (not-known license), [jdk_11_gradle/cs/rest/reservations-api](jdk_11_gradle/cs/rest/reservations-api), from [https://github.com/cyrilgavala/reservations-api](https://github.com/cyrilgavala/reservations-api)
116118

117119
* **Restcountries** (MPL), [jdk_8_maven/cs/rest/original/restcountries](jdk_8_maven/cs/rest/original/restcountries), from [https://github.com/apilayer/restcountries](https://github.com/apilayer/restcountries)

auth/quartz-manager-auth.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
auth:
2+
- name: USER_1
3+
loginEndpointAuth:
4+
payloadRaw: "username=foo&password=bar"
5+
- name: USER_2
6+
loginEndpointAuth:
7+
payloadRaw: "username=foo2&password=bar"
8+
9+
authTemplate:
10+
loginEndpointAuth:
11+
endpoint: /quartz-manager/auth/login
12+
verb: POST
13+
contentType: application/x-www-form-urlencoded
14+
token:
15+
extractFromField: /accessToken
16+
httpHeaderName: Authorization
17+
headerPrefix: "Bearer "
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM amazoncorretto:11-alpine-jdk
2+
3+
COPY ./dist/quartz-manager-sut.jar .
4+
COPY ./dist/jacocoagent.jar .
5+
6+
7+
8+
#ENV TOOL="undefined"
9+
#ENV RUN="0"
10+
11+
ENTRYPOINT \
12+
java \
13+
# unfortunately dumponexit is completely unreliable in Docker :(
14+
# -javaagent:jacocoagent.jar=destfile=./jacoco/quartz-manager__${TOOL}__${RUN}__jacoco.exec,append=false,dumponexit=true \
15+
-javaagent:jacocoagent.jar=output=tcpserver,address=*,port=6300,append=false,dumponexit=false \
16+
-jar quartz-manager-sut.jar \
17+
--server.port=8080 --quartz-manager.security.accounts.in-memory.users[0].username=foo --quartz-manager.security.accounts.in-memory.users[0].password=bar --quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin --quartz-manager.security.accounts.in-memory.users[1].username=foo2 --quartz-manager.security.accounts.in-memory.users[1].password=bar --quartz-manager.security.accounts.in-memory.users[1].roles[0]=admin

dockerfiles/quartz-manager.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
services:
2+
sut-quartz-manager:
3+
build:
4+
dockerfile: ./dockerfiles/quartz-manager.dockerfile
5+
context: ..
6+
# environment:
7+
# TOOL: ${TOOL:-undefined}
8+
# RUN: ${RUN:-0}
9+
ports:
10+
- "${HOST_PORT:-8080}:8080"
11+
- "${JACOCO_PORT:-6300}:6300"
12+
# volumes:
13+
# default env does not work on volumes
14+
# - ${JACOCODIR}:/jacoco
15+

jdk_11_maven/cs/rest-gui/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<modules>
1616
<module>market</module>
17+
<module>quartz-manager/quartz-manager-parent</module>
1718
</modules>
1819

19-
2020
</project>

jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
</parent>
1010

1111
<artifactId>quartz-manager-web-showcase</artifactId>
12-
13-
<packaging>war</packaging>
12+
<!--MODIFIED-->
13+
<!-- <packaging>war</packaging>-->
14+
<packaging>jar</packaging>
1415

1516
<name>Quartz Manager Web Showcase</name>
1617
<description>A webapp that imports Quartz Manager API lib and the frontend webjar</description>
@@ -147,6 +148,27 @@
147148
</plugin>
148149
</plugins>
149150
</pluginManagement>
151+
<!--MODIFIED-->
152+
<plugins>
153+
<plugin>
154+
<groupId>org.springframework.boot</groupId>
155+
<artifactId>spring-boot-maven-plugin</artifactId>
156+
<version>2.5.6</version>
157+
<configuration>
158+
<mainClass>it.fabioformosa.QuartzManagerDemoApplication</mainClass>
159+
<finalName>quartz-manager</finalName>
160+
<classifier>sut</classifier>
161+
</configuration>
162+
<executions>
163+
<execution>
164+
<goals>
165+
<goal>repackage</goal>
166+
</goals>
167+
</execution>
168+
</executions>
169+
</plugin>
170+
</plugins>
171+
<!--MODIFIED-->
150172
</build>
151173

152174

jdk_11_maven/em/embedded/rest/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<module>pay-publicapi</module>
1919
<module>tracking-system</module>
2020
<module>http-patch-spring</module>
21+
<module>quartz-manager</module>
2122
</modules>
2223

2324
</project>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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-jdk11-em-embedded-rest-quartz-manager</artifactId>
8+
<packaging>jar</packaging>
9+
10+
<parent>
11+
<groupId>org.evomaster</groupId>
12+
<artifactId>evomaster-benchmark-jdk11-em-embedded-rest</artifactId>
13+
<version>3.4.1-SNAPSHOT</version>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>it.fabioformosa.quartz-manager</groupId>
19+
<artifactId>quartz-manager-web-showcase</artifactId>
20+
<version>4.0.9</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>org.springdoc</groupId>
24+
<artifactId>springdoc-openapi-ui</artifactId>
25+
<version>1.5.12</version>
26+
<optional>true</optional>
27+
</dependency>
28+
</dependencies>
29+
30+
31+
</project>
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package em.embedded.quartz.manager;
2+
3+
4+
import it.fabioformosa.QuartzManagerDemoApplication;
5+
import org.evomaster.client.java.controller.AuthUtils;
6+
import org.evomaster.client.java.controller.EmbeddedSutController;
7+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
8+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
9+
import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto;
10+
import org.evomaster.client.java.controller.problem.ProblemInfo;
11+
import org.evomaster.client.java.controller.problem.RestProblem;
12+
import org.evomaster.client.java.sql.DbSpecification;
13+
import org.springframework.boot.SpringApplication;
14+
import org.springframework.context.ConfigurableApplicationContext;
15+
16+
import java.util.Arrays;
17+
import java.util.List;
18+
import java.util.Map;
19+
20+
/**
21+
* Class used to start/stop the SUT. This will be controller by the EvoMaster process
22+
*/
23+
public class EmbeddedEvoMasterController extends EmbeddedSutController {
24+
25+
public static void main(String[] args) {
26+
27+
int port = 40100;
28+
if (args.length > 0) {
29+
port = Integer.parseInt(args[0]);
30+
}
31+
32+
EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
33+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
34+
35+
starter.start();
36+
}
37+
38+
39+
private ConfigurableApplicationContext ctx;
40+
41+
42+
public EmbeddedEvoMasterController() {
43+
this(40100);
44+
}
45+
46+
public EmbeddedEvoMasterController(int port) {
47+
setControllerPort(port);
48+
}
49+
50+
@Override
51+
public String startSut() {
52+
53+
ctx = SpringApplication.run(QuartzManagerDemoApplication.class, new String[]{
54+
"--server.port=0",
55+
"--quartz-manager.security.accounts.in-memory.users[0].username=foo",
56+
"--quartz-manager.security.accounts.in-memory.users[0].password=bar",
57+
"--quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin",
58+
"--quartz-manager.security.accounts.in-memory.users[1].username=foo2",
59+
"--quartz-manager.security.accounts.in-memory.users[1].password=bar",
60+
"--quartz-manager.security.accounts.in-memory.users[1].roles[0]=admin",
61+
});
62+
63+
return "http://localhost:" + getSutPort();
64+
}
65+
66+
protected int getSutPort() {
67+
return (Integer) ((Map) ctx.getEnvironment()
68+
.getPropertySources().get("server.ports").getSource())
69+
.get("local.server.port");
70+
}
71+
72+
73+
@Override
74+
public boolean isSutRunning() {
75+
return ctx != null && ctx.isRunning();
76+
}
77+
78+
@Override
79+
public void stopSut() {
80+
ctx.stop();
81+
}
82+
83+
@Override
84+
public String getPackagePrefixesToCover() {
85+
return "it.fabioformosa.";
86+
}
87+
88+
@Override
89+
public void resetStateOfSUT() {
90+
}
91+
92+
@Override
93+
public ProblemInfo getProblemInfo() {
94+
95+
return new RestProblem(
96+
"http://localhost:" + getSutPort() + "/v3/api-docs",
97+
null,
98+
null
99+
);
100+
}
101+
102+
@Override
103+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
104+
return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
105+
}
106+
107+
@Override
108+
public List<AuthenticationDto> getInfoForAuthentication() {
109+
return Arrays.asList(
110+
AuthUtils.getForJsonToken(
111+
"USER_1",
112+
"/quartz-manager/auth/login",
113+
"username=foo&password=bar",
114+
"/accessToken",
115+
"Bearer ",
116+
"application/x-www-form-urlencoded"),
117+
AuthUtils.getForJsonToken(
118+
"USER_2",
119+
"/quartz-manager/auth/login",
120+
"username=foo2&password=bar",
121+
"/accessToken",
122+
"Bearer ",
123+
"application/x-www-form-urlencoded")
124+
);
125+
}
126+
127+
@Override
128+
public List<DbSpecification> getDbSpecifications() {
129+
return null;
130+
}
131+
}

0 commit comments

Comments
 (0)