Testing a Quarkus monolith
Find a file
2025-05-29 23:49:38 +02:00
.mvn/wrapper Initial commit 2025-05-29 23:16:35 +02:00
src Initial commit 2025-05-29 23:16:35 +02:00
.dockerignore Initial commit 2025-05-29 23:16:35 +02:00
.gitignore Initial commit 2025-05-29 23:16:35 +02:00
mvnw Initial commit 2025-05-29 23:16:35 +02:00
mvnw.cmd Initial commit 2025-05-29 23:16:35 +02:00
perfs.jmx Initial commit 2025-05-29 23:16:35 +02:00
pom.xml Initial commit 2025-05-29 23:16:35 +02:00
README.md Add documentation 2025-05-29 23:49:38 +02:00

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.

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:

./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:

./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:

./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:

./mvnw package -Dnative

Or, if you don't have GraalVM installed, you can run the native executable build in a container using:

./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.

  • REST resources for Hibernate ORM with Panache (guide): Generate Jakarta REST resources for your Hibernate Panache entities and repositories
  • JDBC Driver - PostgreSQL (guide): Connect to the PostgreSQL database via JDBC

Provided Code

REST Data with Panache

Generating Jakarta REST resources with Panache

Related guide section...

RESTEasy JAX-RS

Easily start your RESTful Web Services

Related guide section...