A small standalone test suite for MicroProfile on WildFly/EAP.
Tests have been executed against WildFly and EAP XP versions supporting MicroProfile 6.1 specs
Currently, the following MicroProfile specs are supported:
- MicroProfile Config
- MicroProfile JWT RBAC
- MicroProfile Health
- MicroProfile Fault Tolerance
- MicroProfile OpenAPI
Although mostly related to MicroProfile platform integration, the test suite contains observability related tests,
too, which verify the Micrometer integration into WildFly/EAP.
- JDK 11
- Docker
Maven is not a hard requirement as mvnw is delivered with this repository.
Podman can be aliased to be used as a Docker alternative - i.e. alias docker=podman, or you can pass the
-Ddocker.command=podman system property to the test suite when executing Maven.
There's one module per each supported MicroProfile specs, see Supported MicroProfile specs.
- tooling-cpu-load - utilities to support performance testing as the
microprofile-fault-tolerance
CpuLoadTest - tooling-docker - utilities needed to run and manage
dockeras a part a given test scenario, e.g.: the microprofile-fault-toleranceDatabaseCrashTest - tooling-mp-jwt-auth-tool - utilities required by security operations, e.g.: keys' generation utilities, which are used by the microprofile-jwt module
- tooling-server-configuration - server configuration utilities, see the module README
- tooling-observability - tooling which is used for Observability related tasks, e.g.: Jaeger or OTel Docker containers
Just execute:
mvn clean verifyor
./mvnw clean verifyYou might want to use profile bootablejar.profile (activation property ts.bootable) to test with bootable jar.
In case you need to provide a channel manifest for testing with bootable jar, use properties channel-manifest.*, e.g.:
-Dchannel-manifest.groupId=org.jboss.eap.channels
-Dchannel-manifest.artifactId=eap-8.0-plus-eap-xp-5.0
-Dchannel-manifest.version=1.0.1.GA-redhat-20240304which implicitly activate profile bootablejar.profile.channels;
Test deployments can be exported by Arquillian:
mvn clean verify -Darquillian.deploymentExportPath=target/deployments/or
./mvnw clean verify -Darquillian.deploymentExportPath=target/deployments/The test suite can be used to test custom WildFly and EAP builds, just execute something like:
mvn clean verify -pl microprofile-health -am -Djboss.dist=$HOME/projects/wildfly-27.0.0.Beta1-SNAPSHOTor
./mvnw clean verify -pl microprofile-health -am -Djboss.dist=$HOME/projects/wildfly-27.0.0.Beta1-SNAPSHOTThe test suite can be used to execute against a running instance of WildFly or EAP, just start the server in advance and type:
mvn clean verify -pl microprofile-health -amor
./mvnw clean verify -pl microprofile-health -amPlease note allowConnectingToRunningServer property in arquillian.xml, which is the feature that supports this very
use case.
- Follow instructions on https://jenkins.io/doc/book/installing/ to install and run Jenkins
- Install Pipeline and AnsiColor plugins - see https://jenkins.io/doc/book/managing/plugins/ for more details
- Create a new
pipelinejob (New Item-> ChoosePipelineoption and enter job namemicroprofile-test-suite) - Copy content of Jenkinsfile into Pipeline script section and
Save- Change
linuxlabel inagent { label 'linux' }to reflect the label assigned to your Jenkins nodes - Change
oracle-java-11injdk 'oracle-java-11'to a label matching an installed JDK
- Change
- Trigger the build by
Build Nowbutton - NOTE FIRST RUN WILL FAIL DUE TO ISSUES https://issues.jenkins-ci.org/browse/JENKINS-40574/ and https://issues.jenkins-ci.org/browse/JENKINS-41929 but all the subsequent runs will work
The following command can be used to ensure that code changes are compilable, -Djboss.dist=foo is just a workaround
to skip unpacking the WildFly zip.
mvn clean verify -DskipTests -DskipITs -Djboss.dist=fooor
./mvnw clean verify -DskipTests -DskipITs -Djboss.dist=fooThe distribution bundle contains this testsuite, a pre-loaded local Maven repository and a dump of Docker images used in
tests.
Generating the eap-microprofile-test-suite-dist.zip bundle is done via the ./mp-ts.sh script.
This script assumes that all the necessary artifacts are present in ${user.home}/.m2/repository/, in other words that
the TS was compiled and executed on the local machine prior the bundle creation.
To create the distribution bundle just run:
./mp-ts.sh dist-zip
Execution on target machine:
unzip -q eap-microprofile-test-suite-dist.zip
./mp-ts.sh dist-run
Tests output is redirected into ${TEST_FQCN}-output.txt files in target/surefire-reports/ directory.
For more details have a look to the mp-ts.sh script
Code gets formatted and imports ordered during the build time (process-sources phase) automatically:
mvn process-sourcesor
./mvnw process-sourcesNaming convention: $MAJOR.$MINOR.$MICRO.Final-SNAPSHOT (1.0.0.Final-SNAPSHOT)
Start with 1.0.0.Final
Naming convention: $MAJOR.$MINOR.$MICRO.Final (1.0.0.Final)
New WildFly major version is released and covers a MicroProfile update
Naming convention: $MAJOR.$MINOR.z (1.0.z)
No branches unless really needed
mvn release:prepare release:clean
In order to skip tests run following command:
mvn release:prepare release:clean -Darguments=-DskipTests
The above will allow you to define a release, a tag and a next development version name in interactive way.
Any issue found in WildFly/EAP release will be reported to the Red Hat issue tracker, i.e.: https://issues.redhat.com/. The following Jira projects exist for different goals:
- https://issues.redhat.com/projects/WFWIP - for issues in unreleased WildFly version (like WF dev branches)
- https://issues.redhat.com/projects/WFLY - for released WildFly versions
- https://issues.redhat.com/projects/JBEAP - for released EAP versions
Every reported issue must contain:
- Title (affected MP spec may be part of the title, proper Component must be set)
- Type: Bug
- Component: related Microprofile component (
mp-health) - Affected Version - WildFly/EAP version (for WFLY/JBEAP issues)
- Target Version (when present)
- Description of the issue
- provide high-level description of the issue
- information about tested WildFly/EAP build (or used commit/branch)
- impact on the user
- test scenario (actual and expected result)
- add logs/stacktraces
- automatic reproducer (if possible)