Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,9 @@ scripts/dockerize/dockerfiles
/jdk_21_maven/cs/rest/lovemining/target/
/jdk_21_maven/em/external/rest/lovemining/target/
/jdk_21_maven/em/embedded/rest/lovemining/target/
/jdk_21_maven/cs/rest/movies-xml/target/
/jdk_21_maven/em/external/rest/movies-xml/target/
/jdk_21_maven/em/embedded/rest/movies-xml/target/
/jdk_11_maven/em/embedded/rest/tracking-system/target/
/jdk_11_maven/em/external/rest/tracking-system/target/
/jdk_17_maven/em/embedded/rest/tiltaksgjennomforing/target/
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ How to setup authentication information, based on the current content of the ini
Auth configuration files can found in the [auth](auth) folder.


### REST: Java/Kotlin (45)
### REST: Java/Kotlin (46)

* **AdoptMe** (not-known license), [jdk_21_maven/cs/rest/adoptme](jdk_21_maven/cs/rest/adoptme), from [https://github.com/daanimelian/Programacion3-TPO](https://github.com/daanimelian/Programacion3-TPO)

Expand Down Expand Up @@ -129,6 +129,8 @@ Auth configuration files can found in the [auth](auth) folder.

* **Microcks** (Apache), [jdk_21_maven/cs/rest-gui/microcks](jdk_21_maven/cs/rest-gui/microcks), from [https://github.com/microcks/microcks](https://github.com/microcks/microcks)

* **Movies XML** (LGPL), [jdk_21_maven/cs/rest/movies-xml](jdk_21_maven/cs/rest/movies-xml), from [https://github.com/suarezrominajulieta/movies-xml](https://github.com/suarezrominajulieta/movies-xml)

* **NCS**, [jdk_8_maven/cs/rest/artificial/ncs](jdk_8_maven/cs/rest/artificial/ncs), (not-known license, artificial numerical examples coming from different sources)

* **News** (LGPL), [jdk_8_maven/cs/rest/artificial/news](jdk_8_maven/cs/rest/artificial/news), from [https://github.com/arcuri82/testing_security_development_enterprise_systems](https://github.com/arcuri82/testing_security_development_enterprise_systems)
Expand Down
13 changes: 13 additions & 0 deletions dockerfiles/movies-xml.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM amazoncorretto:21-alpine-jdk

COPY ./dist/movies-xml-sut.jar .
COPY ./dist/jacocoagent.jar .




ENTRYPOINT \
java \
-javaagent:jacocoagent.jar=output=tcpserver,address=*,port=6300,append=false,dumponexit=false \
-jar movies-xml-sut.jar \
--server.port=8080
30 changes: 30 additions & 0 deletions dockerfiles/movies-xml.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
services:
mitmproxy:
image: mitmproxy/mitmproxy:10.2.4
user: "0:0"
environment:
MITM_LOG_DIR: /custom-logs
MITM_LOG_FILE: ${MITM_LOG_FILE:-minlog.csv}
command: >
mitmdump
--mode reverse:http://sut-movies-xml:8080
--listen-host 0.0.0.0
--listen-port 8080
--set keep_host_header=true
-s /addons/minlog.py
volumes:
- ${HOST_LOG_DIR:-./mitm-logs}:/custom-logs
- ./addons:/addons:ro
ports:
- "${HOST_PORT:-8080}:8080"
depends_on:
- sut-movies-xml
sut-movies-xml:
image: webfuzzing/wfd-movies-xml:FINAL
# build:
# dockerfile: ./dockerfiles/movies-xml.dockerfile
# context: ..
environment:
AUTH_PORT: ${AUTH_PORT:-8081}
ports:
- "${JACOCO_PORT:-6300}:6300"
1 change: 1 addition & 0 deletions experiments/bb-exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ def __init__(self, name, auth, sleep, schemaformat, classfiles):
"jdk_21_maven/cs/rest-gui/microcks/distro/uber-async-minion/target/classes",
"jdk_21_maven/cs/rest-gui/microcks/minions/async/target/classes",
"jdk_21_maven/cs/rest-gui/microcks/webapp/target/classes"]),
Sut("movies-xml",False,SLEEP,JSON,["jdk_21_maven/cs/rest/movies-xml/target/classes"]),
Sut("ocvn",True,SLEEP,JSON,["jdk_8_maven/cs/rest-gui/ocvn/persistence/target/classes",
"jdk_8_maven/cs/rest-gui/ocvn/persistence-mongodb/target/classes",
"jdk_8_maven/cs/rest-gui/ocvn/web/target/classes"]),
Expand Down
1 change: 1 addition & 0 deletions experiments/wb-exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ def __init__(self, name, platform):
Sut("lovemining", JDK_21),
Sut("market", JDK_11),
Sut("microcks", JDK_21),
Sut("movies-xml", JDK_21),
Sut("ocvn", JDK_8),
Sut("ohsome-api", JDK_17),
Sut("pay-publicapi",JDK_11),
Expand Down
1 change: 1 addition & 0 deletions jacoco.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ COPY jdk_21_maven/cs/rest-gui/microcks/distro/uber/target/classes ${CLASS_FILES
COPY jdk_21_maven/cs/rest-gui/microcks/distro/uber-async-minion/target/classes ${CLASS_FILES}/jdk_21_maven/cs/rest-gui/microcks/distro/uber-async-minion/target/classes
COPY jdk_21_maven/cs/rest-gui/microcks/minions/async/target/classes ${CLASS_FILES}/jdk_21_maven/cs/rest-gui/microcks/minions/async/target/classes
COPY jdk_21_maven/cs/rest-gui/microcks/webapp/target/classes ${CLASS_FILES}/jdk_21_maven/cs/rest-gui/microcks/webapp/target/classes
COPY jdk_21_maven/cs/rest/movies-xml/target/classes ${CLASS_FILES}/jdk_21_maven/cs/rest/movies-xml/target/classes
COPY jdk_8_maven/cs/rest-gui/ocvn/persistence/target/classes ${CLASS_FILES}/jdk_8_maven/cs/rest-gui/ocvn/persistence/target/classes
COPY jdk_8_maven/cs/rest-gui/ocvn/persistence-mongodb/target/classes ${CLASS_FILES}/jdk_8_maven/cs/rest-gui/ocvn/persistence-mongodb/target/classes
COPY jdk_8_maven/cs/rest-gui/ocvn/web/target/classes ${CLASS_FILES}/jdk_8_maven/cs/rest-gui/ocvn/web/target/classes
Expand Down
1 change: 1 addition & 0 deletions jdk_21_maven/cs/rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<module>redis-sample</module>
<module>arimaa</module>
<module>lovemining</module>
<module>movies-xml</module>
</modules>


Expand Down
37 changes: 37 additions & 0 deletions jdk_21_maven/em/embedded/rest/movies-xml/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>evomaster-benchmark-jdk21-em-embedded-rest-movies-xml</artifactId>
<packaging>jar</packaging>

<parent>
<groupId>org.evomaster</groupId>
<artifactId>evomaster-benchmark-jdk21-em-embedded-rest</artifactId>
<version>4.3.1-SNAPSHOT</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.5.16</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- The SUT as a library -->
<dependency>
<groupId>org.movies</groupId>
<artifactId>movies-xml</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package em.embedded.org.movies.xml;

import org.evomaster.client.java.controller.EmbeddedSutController;
import org.evomaster.client.java.controller.InstrumentedSutStarter;
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto;
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
import org.evomaster.client.java.controller.problem.ProblemInfo;
import org.evomaster.client.java.controller.problem.RestProblem;
import org.evomaster.client.java.sql.DbSpecification;
import org.movies.xml.MoviesXmlApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class EmbeddedEvoMasterController extends EmbeddedSutController {

public static void main(String[] args) {

int port = 40100;
if (args.length > 0) {
port = Integer.parseInt(args[0]);
}

EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);

starter.start();
}

private ConfigurableApplicationContext ctx;
private Connection sqlConnection;
private List<DbSpecification> dbSpecification;

public EmbeddedEvoMasterController() {
this(40100);
}

public EmbeddedEvoMasterController(int port) {
setControllerPort(port);
}

@Override
public String startSut() {

ctx = SpringApplication.run(MoviesXmlApplication.class, new String[]{
"--server.port=0",
"--logging.level.root=OFF",
"--logging.level.org.springframework=INFO"
});

closeDataBaseConnection();
try {
sqlConnection = ctx.getBean(JdbcTemplate.class).getDataSource().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.H2, sqlConnection));

return "http://localhost:" + getSutPort();
}

protected int getSutPort() {
return (Integer) ((Map) ctx.getEnvironment()
.getPropertySources().get("server.ports").getSource())
.get("local.server.port");
}

@Override
public boolean isSutRunning() {
return ctx != null && ctx.isRunning();
}

@Override
public void stopSut() {
closeDataBaseConnection();
ctx.stop();
ctx.close();
}

private void closeDataBaseConnection() {
if (sqlConnection != null) {
try {
sqlConnection.close();
} catch (SQLException e) {
e.printStackTrace();
}
sqlConnection = null;
}
}

@Override
public String getPackagePrefixesToCover() {
return "org.movies.xml.";
}

@Override
public void resetStateOfSUT() {
}

@Override
public List<DbSpecification> getDbSpecifications() {
return dbSpecification;
}

@Override
public List<AuthenticationDto> getInfoForAuthentication() {
return null;
}

@Override
public ProblemInfo getProblemInfo() {
return new RestProblem(
"http://localhost:" + getSutPort() + "/v3/api-docs",
null
);
}

@Override
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
}
}
1 change: 1 addition & 0 deletions jdk_21_maven/em/embedded/rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<module>redis-sample</module>
<module>arimaa</module>
<module>lovemining</module>
<module>movies-xml</module>
</modules>

</project>
71 changes: 71 additions & 0 deletions jdk_21_maven/em/external/rest/movies-xml/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>evomaster-benchmark-jdk21-em-external-rest-movies-xml</artifactId>
<packaging>jar</packaging>

<parent>
<groupId>org.evomaster</groupId>
<artifactId>evomaster-benchmark-jdk21-em-external-rest</artifactId>
<version>4.3.1-SNAPSHOT</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.5.16</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- The SUT's H2 is in-memory, so the driver has to host it over TCP to see the data -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>movies-xml-evomaster-runner</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>em.external.org.movies.xml.ExternalEvoMasterController
</Main-Class>
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
</Premain-Class>
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
</Agent-Class>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
Loading
Loading