Skip to content

Commit 8fdcad1

Browse files
committed
Merge branch 'develop' of https://github.com/WebFuzzing/EMB
# Conflicts: # experiments/schedule.py
2 parents 3170066 + fa0c7f8 commit 8fdcad1

File tree

227 files changed

+1206
-520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

227 files changed

+1206
-520
lines changed

.github/workflows/ci.yaml

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,19 @@ on:
99

1010
jobs:
1111

12-
projects:
12+
# TODO need to use profiles to avoid dependencies to EM in the build... would work on master, but not on develop due to snapshot versions
13+
# docker-build:
14+
# # this one doesn't use EvoMaster drivers
15+
# runs-on: ubuntu-latest
16+
# steps:
17+
# - name: Checkout WFD
18+
# uses: actions/checkout@v6
19+
# - name: Build All With Docker
20+
# run: python scripts/dist-docker.py
21+
22+
direct-builds:
23+
# TODO put back once issue fixed
24+
# needs: docker-build
1325
runs-on: ${{ matrix.os }}
1426
strategy:
1527
matrix:
@@ -18,7 +30,7 @@ jobs:
1830
include:
1931
# Maven
2032
- folder: jdk_8_maven
21-
jdk-version: 1.8
33+
jdk-version: 8
2234
command: mvn clean install -DskipTests
2335
- folder: jdk_11_maven
2436
jdk-version: 11
@@ -31,7 +43,7 @@ jobs:
3143
command: mvn clean install -DskipTests
3244
# Gradle
3345
- folder: jdk_8_gradle
34-
jdk-version: 1.8
46+
jdk-version: 8
3547
command: chmod +x gradlew & ./gradlew build -x test
3648
- folder: jdk_11_gradle
3749
jdk-version: 11
@@ -41,11 +53,13 @@ jobs:
4153
command: chmod +x gradlew & ./gradlew build -x test
4254
steps:
4355
- name: Setup JDK for EvoMaster
44-
uses: actions/setup-java@v1
56+
uses: actions/setup-java@v5
4557
with:
46-
java-version: 1.8
58+
# client library is on 8, but, to build whole EM, need higher.
59+
java-version: 17
60+
distribution: 'zulu'
4761
- name: Checkout EvoMaster
48-
uses: actions/checkout@v4
62+
uses: actions/checkout@v6
4963
with:
5064
repository: WebFuzzing/EvoMaster
5165
path: evomaster
@@ -56,12 +70,13 @@ jobs:
5670
- name: Install EvoMaster client-java
5771
run: mvn clean install -DskipTests
5872
working-directory: evomaster/client-java
59-
- name: Setup JDK for EMB
60-
uses: actions/setup-java@v1
73+
- name: Setup JDK for WFD
74+
uses: actions/setup-java@v5
6175
with:
6276
java-version: ${{ matrix.jdk-version }}
63-
- name: Checkout EMB
64-
uses: actions/checkout@v4
65-
- name: Build EMB
77+
distribution: 'zulu'
78+
- name: Checkout WFD
79+
uses: actions/checkout@v6
80+
- name: Build WFD
6681
run: ${{ matrix.command }}
6782
working-directory: ${{ matrix.folder }}

README.md

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ __White-box Testing__. For each SUT, we implemented _driver_ classes for _EvoMas
2525
As well as enable setting up different properties in a _uniform_ way, like choosing TCP port numbers for the HTTP servers.
2626
If a SUT uses any external services (e.g., a SQL database), these will be automatically started via Docker in these driver classes.
2727

28-
**NOTE**: version 1.6.1 was last one in which we still updated drivers for JavaScript and C\#. Those SUTs are not built anymore by default, and latest versions of *EvoMaster* might not work on those old drivers. Updating drivers for different programming languages (and re-implement white-box heuristics) is a massive amount of work, which unfortunately has little to no value for the scientific community (based on our experience). Those SUTs are still here in WFD to be able to replicate old experiments, but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
28+
**NOTE**: version 1.6.1 was last one in which we still updated drivers for JavaScript and C\#. Those SUTs are not built anymore by default, and latest versions of *EvoMaster* will not work on those old drivers. Updating drivers for different programming languages (and re-implement white-box heuristics) is a massive amount of work, which unfortunately has little to no value for the scientific community (based on our experience). Those SUTs are still here in WFD to be able to replicate old experiments, but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
2929

3030

3131

@@ -242,7 +242,7 @@ Auth configuration files can found in the [auth](auth) folder.
242242

243243
## Using This Repository
244244

245-
Due to several reasons, the software in this repository is not published as a library (e.g., on Maven and NPM).
245+
Due to several reasons, the software in this repository is not published as a library (e.g., on Maven).
246246
To use WFD, you need to clone this repository:
247247

248248
```
@@ -251,16 +251,22 @@ git clone https://github.com/WebFuzzing/Dataset.git
251251

252252
There are at least 2 main use cases for WFD:
253253

254-
* Run experiments black-box fuzzers
254+
* Run experiments __black-box__ fuzzers
255255

256-
* Run experiments with white-box _EvoMaster_
256+
* Run experiments with __white-box__ _EvoMaster_
257257

258258

259-
Everything can be setup by running the script `scripts/dist.py`.
259+
_Black-box_ testing: you can build all the SUTs via Docker using `scripts/dist-docker.py`. Once the script is completed, all the SUTs will be available under the `dist` folder. Each SUT can be started with the Docker Compose files under `dockerfiles`. For example:
260+
261+
```
262+
docker-compose -f dockerfiles/reservations-api.yaml up
263+
```
264+
265+
_White-box_ testing: everything can be setup by running the script `scripts/dist.py`.
260266
Note that you will need installed at least Maven, Gradle, JDK 8, JDK 11, JDK 17, JDK 21, NPM, as well as Docker.
261267
Also, you will need to setup environment variables like `JAVA_HOME_8`, `JAVA_HOME_11`, `JAVA_HOME_17` and `JAVA_HOME_21`.
262268
The script will issue error messages if any prerequisite is missing.
263-
Once the script is completed, all the SUTs will be available under the `dist` folder, and a `dist.zip` will be created as well (if `scripts/dist.py` is run with `True` as input).
269+
Once the script is completed, not only all the SUTs will be available under the `dist` folder, but also all the _driver_ executables for _EvoMaster_.
264270

265271
Regarding Maven, most-third party dependencies are automatically downloaded from Maven Central.
266272
However, some dependencies are from GitHub, which unfortunately require authentication to be able to download such dependencies.
@@ -296,22 +302,6 @@ In latest versions of Maven, you need to create an authorization token in GitHub
296302

297303

298304

299-
[//]: # (There is also a Docker file to run `dist.py`, named `build.dockerfile`.)
300-
301-
[//]: # (It can be built with:)
302-
303-
[//]: # ()
304-
[//]: # (```)
305-
306-
[//]: # (docker build -f build.dockerfile -t emb .)
307-
308-
[//]: # (```)
309-
310-
[//]: # ()
311-
[//]: # (The `dist` folder with all SUTs will be under `/emb/dist`. )
312-
313-
314-
315305
In the built `dist` folder, the files will be organized as follows:
316306
`<name>-sut.jar` will be the non-instrumented SUTs, whereas their executable drivers for white-box testing will be called `<name>-evomaster-runner.jar`.
317307
Instrumentation can be done at runtime by attaching the `evomaster-agent.jar` JavaAgent. If you are running experiments with EvoMaster, this will be automatically attached when running experiments with experiment scripts (discussed in next section). Or it can be attached manually with JVM option `-Devomaster.instrumentation.jar.path=evomaster-agent.jar` when starting the driver.
@@ -327,7 +317,7 @@ Each folder represents a set of SUTs (and drivers) that can be built using the s
327317
For example, the folder `jdk_8_maven` contains all the SUTs that need JDK 8 and are built with Maven.
328318
On the other hand, the SUTs in the folder `jdk_11_gradle` require JDK 11 and Gradle.
329319

330-
For thr JVM, each module has 2 submodules, called `cs` (short for "Case Study") and `em` (short for "EvoMaster").
320+
Each module has 2 submodules, called `cs` (short for "Case Study") and `em` (short for "EvoMaster").
331321
`cs` contains all the source code of the different SUTs, whereas `em` contains all the drivers.
332322
Note: building a top-module will build as well all of its internal submodules.
333323

dockerfiles/bibliothek.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
3129
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
3530
db:
3631
image: mongo:6
3732
tmpfs:

dockerfiles/blogapi.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
3129
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
3530
depends_on:
3631
db:
3732
condition: service_healthy

dockerfiles/catwatch.yaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,5 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
31-
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
29+
- "${JACOCO_PORT:-6300}:6300"

dockerfiles/cwa-verification.yaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,5 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
31-
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
29+
- "${JACOCO_PORT:-6300}:6300"

dockerfiles/erc20-rest-service.yaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,5 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
31-
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
29+
- "${JACOCO_PORT:-6300}:6300"

dockerfiles/familie-ba-sak.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
3129
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
3530
db:
3631
image: postgres:13.13
3732
tmpfs:

dockerfiles/features-service.yaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,5 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
31-
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
29+
- "${JACOCO_PORT:-6300}:6300"

dockerfiles/genome-nexus.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ services:
2525
context: ..
2626
environment:
2727
AUTH_PORT: ${AUTH_PORT:-8081}
28-
# TOOL: ${TOOL:-undefined}
29-
# RUN: ${RUN:-0}
3028
ports:
3129
- "${JACOCO_PORT:-6300}:6300"
32-
# volumes:
33-
# default env does not work on volumes
34-
# - ${JACOCODIR}:/jacoco
3530
db:
3631
image: mongo:3.6.2
3732
tmpfs:

0 commit comments

Comments
 (0)