Skip to content

Commit d6912e9

Browse files
committed
Merge branch 'master' of https://github.com/EMResearch/EMB into develop
2 parents 749e7f4 + 1777aaf commit d6912e9

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

README.md

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@
44

55

66

7-
[EvoMaster](http://evomaster.org) Benchmark (EMB):
7+
[EvoMaster](http://evomaster.org) Benchmark (EMB):
88
a set of web/enterprise applications for scientific research in Software Engineering.
99

1010
We collected several different systems running on the JVM, in different programming languages such as Java and Kotlin.
1111
In this documentation, we will refer to these projects as System Under Test (SUT).
1212
Currently, the SUTs are either _REST_, _GraphQL_ or _RPC_ APIs.
1313

1414
For each SUT, we implemented _driver_ classes, which can programmatically _start_, _stop_ and _reset_ the state of SUT (e.g., data in SQL databases).
15-
As well as enable setting up different properties in a _uniform_ way, like choosing TCP port numbers for the HTTP servers.
16-
If a SUT uses any external services (e.g., a SQL database), these will be automatically started via Docker in these driver classes.
15+
As well as enable setting up different properties in a _uniform_ way, like choosing TCP port numbers for the HTTP servers.
16+
If a SUT uses any external services (e.g., a SQL database), these will be automatically started via Docker in these driver classes.
1717

1818

1919
This collection of SUTs was originally assembled for easing experimentation with the fuzzer called [EvoMaster](http://evomaster.org).
20-
However, finding this type of application is not trivial among open-source projects.
21-
Furthermore, it is not simple to sort out all the technical details on how to set these applications up and start them in a simple, uniform approach.
22-
Therefore, this repository provides the important contribution of providing all these necessary scripts for researchers that need this kind of case study.
20+
However, finding this type of application is not trivial among open-source projects.
21+
Furthermore, it is not simple to sort out all the technical details on how to set these applications up and start them in a simple, uniform approach.
22+
Therefore, this repository provides the important contribution of providing all these necessary scripts for researchers that need this kind of case study.
2323

24-
**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 EMB to enable *black-box* experiments (and to be able to replicate old experiments), but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
24+
**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 EMB to enable *black-box* experiments (and to be able to replicate old experiments), but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
2525

2626

2727

@@ -32,8 +32,8 @@ A video providing some high level overview of EMB can be found [here](https://yo
3232

3333

3434
## License
35-
All the code that is new for this repository (e.g., the driver classes) is released under Apache 2.0 license.
36-
However, this repository contains as well sources from different open-source
35+
All the code that is new for this repository (e.g., the driver classes) is released under Apache 2.0 license.
36+
However, this repository contains as well sources from different open-source
3737
projects, each one with its own license, as clarified in more details beneath.
3838

3939
## Example
@@ -44,11 +44,11 @@ To see an example of using these drivers with EvoMaster to generate test cases,
4444

4545
If you are using EMB in an academic work, you can cite the following:
4646

47-
> A. Arcuri, M. Zhang, A. Golmohammadi, A. Belhadi, J. P. Galeotti, B. Marculescu, S. Seran.
48-
**EMB: A Curated Corpus of Web/Enterprise Applications And Library Support for Software Testing Research**.
47+
> A. Arcuri, M. Zhang, A. Golmohammadi, A. Belhadi, J. P. Galeotti, B. Marculescu, S. Seran.
48+
**EMB: A Curated Corpus of Web/Enterprise Applications And Library Support for Software Testing Research**.
4949
In *IEEE International Conference on Software Testing, Validation and Verification (ICST)*, 2023.
5050

51-
51+
5252
## Current Case Studies
5353

5454
The projects were selected based on searches using keywords on GitHub APIs, using convenience sampling.
@@ -62,10 +62,10 @@ The reason is that we want to keep an easy to use, constant set of case studies
6262

6363
The SUTs called _NCS_ (Numerical Case Study) and _SCS_ (String Case study) are artificial, developed by us.
6464
They are based on numerical and string-based functions previously used in the literature of unit test generation.
65-
We just re-implemented in different languages, and put them behind a web service.
65+
We just re-implemented in different languages, and put them behind a web service.
6666

6767
For the RESTful APIs, each API has an endpoint where the OpenAPI/Swagger schemas can be downloaded from.
68-
For simplicity, all schemas are also available as JSON/YML files under the folder [openapi-swagger](./openapi-swagger).
68+
For simplicity, all schemas are also available as JSON/YML files under the folder [openapi-swagger](./openapi-swagger).
6969

7070
More details (e.g., #LOCs and used databases) on these APIs can be found [in this table](statistics/table_emb.md).
7171

@@ -85,7 +85,7 @@ More details (e.g., #LOCs and used databases) on these APIs can be found [in thi
8585

8686
* Market (MIT), [jdk_11_maven/cs/rest-gui/market](jdk_11_maven/cs/rest-gui/market), from [https://github.com/aleksey-lukyanets/market](https://github.com/aleksey-lukyanets/market)
8787

88-
* Features-Service (Apache), [jdk_8_maven/cs/rest/original/features-service](jdk_8_maven/cs/rest/original/features-service), from [https://github.com/JavierMF/features-service](https://github.com/JavierMF/features-service)
88+
* Features-Service (Apache), [jdk_8_maven/cs/rest/original/features-service](jdk_8_maven/cs/rest/original/features-service), from [https://github.com/JavierMF/features-service](https://github.com/JavierMF/features-service)
8989

9090
* Scout-API (MIT), [jdk_8_maven/cs/rest/original/scout-api](jdk_8_maven/cs/rest/original/scout-api), from [https://github.com/mikaelsvensson/scout-api](https://github.com/mikaelsvensson/scout-api)
9191

@@ -95,11 +95,11 @@ More details (e.g., #LOCs and used databases) on these APIs can be found [in thi
9595

9696
* OCVN (MIT), [jdk_8_maven/cs/rest-gui/ocvn](jdk_8_maven/cs/rest-gui/ocvn), from [https://github.com/devgateway/ocvn](https://github.com/devgateway/ocvn)
9797

98-
* 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)
98+
* 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)
9999

100100
* 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)
101101

102-
* Languagetool (LGPL), [jdk_8_maven/cs/rest/original/languagetool](jdk_8_maven/cs/rest/original/languagetool), from [https://github.com/languagetool-org/languagetool](https://github.com/languagetool-org/languagetool)
102+
* Languagetool (LGPL), [jdk_8_maven/cs/rest/original/languagetool](jdk_8_maven/cs/rest/original/languagetool), from [https://github.com/languagetool-org/languagetool](https://github.com/languagetool-org/languagetool)
103103

104104
* CWA-Verification-Server (Apache), [jdk_11_maven/cs/rest/cwa-verification-server](jdk_11_maven/cs/rest/cwa-verification-server), from [https://github.com/corona-warn-app/cwa-verification-server](https://github.com/corona-warn-app/cwa-verification-server)
105105

@@ -197,15 +197,15 @@ Also, you will need to setup environment variables like `JAVA_HOME_8`, `JAVA_HOM
197197
The script will issue error messages if any prerequisite is missing.
198198
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).
199199

200-
Regarding Maven, most-third party dependencies are automatically downloaded from Maven Central.
200+
Regarding Maven, most-third party dependencies are automatically downloaded from Maven Central.
201201
However, some dependencies are from GitHub, which unfortunately require authentication to be able to download such dependencies.
202202
Unfortunately, they have [no intention](https://github.com/orgs/community/discussions/26634) to fix this huge usability issue :(
203203
In your home folder, you need to create a configuration file for Maven, in particular `.m2/settings.xml`, with the following configurations:
204204

205205
```
206206
<?xml version="1.0" encoding="UTF-8"?>
207-
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
208-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
207+
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
208+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
209209
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
210210
<servers>
211211
<server>
@@ -258,7 +258,7 @@ Each of these drivers has a "main" method that is running a REST API (binding on
258258

259259

260260

261-
You can also build (and install) each module separately, based on needs.
261+
You can also build (and install) each module separately, based on needs.
262262
For example, a Maven module can be installed with:
263263

264264
``mvn clean install -DskipTests``
@@ -270,7 +270,7 @@ On the other hand, the SUTs in the folder `jdk_11_gradle` require JDK 11 and Gra
270270

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

275275
The driver classes for Java are called `EmbeddedEvoMasterController`.
276276
Note that Java also has a different kind of driver called `ExternalEvoMasterController`.
@@ -284,7 +284,7 @@ The release of EMB are linked in version number with the release of EvoMaster, a
284284
In the Git repository of EMB, we did tag the versions of EMB.
285285
See the [releases](https://github.com/EMResearch/EMB/releases) page.
286286
For example, to use version `X`, you can check out the Git commit
287-
of EMB tagged with version `X`.
287+
of EMB tagged with version `X`.
288288
To see the current available tags, from a command-line you can execute:
289289

290290
`git tag`
@@ -295,9 +295,9 @@ Then, to switch to a specific tag X (e.g., `v1.0.0`), you can run:
295295

296296
Finally, if for any reason you need to switch back to the latest snapshot version, you can run:
297297

298-
`git checkout master`
298+
`git checkout master`
299299

300-
There is an issue if you try to checkout an old version.
300+
There is an issue if you try to checkout an old version.
301301
Not only Java broke backward compatibility with JDK 9, but also Maven...
302302
If you try to build with Maven and get an error regarding
303303
`maven-processor-plugin`, you might have to add manually
@@ -317,3 +317,7 @@ Branch *develop* is using the most recent SNAPSHOT version of _EvoMaster_.
317317
As that is not published online, you need to clone its repository, and build
318318
it locally (see its documentation on how to do it).
319319

320+
### Building on Apple Silicon
321+
322+
When building on Apple Silicon, use JDKs that are built for x86 instead of Arm (i.e., *AArch64*).
323+
Since, not all the dependencies are available for Arm, especially older versions.

0 commit comments

Comments
 (0)