perftests-quarkus/README.md
2025-05-29 23:49:38 +02:00

120 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# perftests-quarkus
This is a test for Quarkus to handle large projets, in quantity of objects to manage.
To use this project, you have to generate the _actual_ code:
1. Set the root path in `src/main/java/fr/spacefox/perftests/quarkus/generator/Generator.java` constant `ROOT_PATH` to
the _actual_ path of your project sources.
2. You may change the number of elements to generate with `ELEMENTS` in the same file.
3. Run the Generator: now you have a giant Quarkus project ready to be used!
4. Build and play! You can keep the tests, they will run in a _reasonable_ amount of time.
5. You can run some kind of performance tests by using `perfs.jmx` in Apache JMeter
See also [the Spring Boot version](https://git.spacefox.fr/spacefox/perftests-springboot).
Requirements:
- JRE ⩾ 21
- PostgreSQL (you may use `src/test/docker/compose.yaml`)
**Note: generating too much `ELEMENTS` will not work due to Quarkus internals**.
Actual limit with this project is somewhere between 4100 and 4200.
Generated arborescence kind of follow the hexagonal / ports & adapters architecture, so Panache ORM is used with its
repository variant:
```
fr.spacefox.perftests.quarkus
.core
.port
.data
EntityNDatasourcePort.java
.serviceN
.model
ModelN.java
ServiceN
.data
.entityN
EntityN.java
EntityNRepository.java
Mapper.java
.rest
.endpointN
.schema
SchemaN.java
EndpointNResource.java
Mapper.java
+ tests
```
--------------------------
## Running the application in dev mode
You can run your application in dev mode that enables live coding using:
```shell script
./mvnw quarkus:dev
```
> **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at <http://localhost:8080/q/dev/>.
## Packaging and running the application
The application can be packaged using:
```shell script
./mvnw package
```
It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory.
Be aware that its not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory.
The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`.
If you want to build an _über-jar_, execute the following command:
```shell script
./mvnw package -Dquarkus.package.jar.type=uber-jar
```
The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`.
## Creating a native executable
You can create a native executable using:
```shell script
./mvnw package -Dnative
```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script
./mvnw package -Dnative -Dquarkus.native.container-build=true
```
You can then execute your native executable with: `./target/perftests-quarkus-1.0.0-SNAPSHOT-runner`
If you want to learn more about building native executables, please consult <https://quarkus.io/guides/maven-tooling>.
## Related Guides
- REST resources for Hibernate ORM with Panache ([guide](https://quarkus.io/guides/rest-data-panache)): Generate Jakarta REST resources for your Hibernate Panache entities and repositories
- JDBC Driver - PostgreSQL ([guide](https://quarkus.io/guides/datasource)): Connect to the PostgreSQL database via JDBC
## Provided Code
### REST Data with Panache
Generating Jakarta REST resources with Panache
[Related guide section...](https://quarkus.io/guides/rest-data-panache)
### RESTEasy JAX-RS
Easily start your RESTful Web Services
[Related guide section...](https://quarkus.io/guides/getting-started#the-jax-rs-resources)