51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
|
Model testsuite
|
||
|
===============
|
||
|
|
||
|
Model testsuite runs tests on raw `KeycloakSessionFactory` which is
|
||
|
initialized only with those providers that are explicitly enabled
|
||
|
in a used profile via `keycloak.model.parameters` system property.
|
||
|
|
||
|
This allows writing tests and running those in different
|
||
|
configurations quickly, e.g. once with legacy JPA storage,
|
||
|
second time with purely new Hot Rod implementation.
|
||
|
|
||
|
The valid parameters are names of classes in `org.keycloak.testsuite.model.parameters`
|
||
|
package, and it is possible to combine those by providing multiple class names
|
||
|
separated by comma.
|
||
|
|
||
|
To simplify matters, common combinations of parameters are defined as maven profiles.
|
||
|
|
||
|
|
||
|
Test coverage
|
||
|
-------------
|
||
|
|
||
|
To see test coverage via jacoco, set `jacoco.skip` property to `false`, e.g.:
|
||
|
|
||
|
```
|
||
|
mvn test -Pjpa -Dtest=ClientModelTest -Djacoco.skip=false
|
||
|
```
|
||
|
|
||
|
Then you can generate the coverage report by using the following command:
|
||
|
|
||
|
```
|
||
|
mvn org.jacoco:jacoco-maven-plugin:0.8.7:report \
|
||
|
-Djacoco.skip=false -Djacoco.dataFile=target/jacoco.exec
|
||
|
```
|
||
|
|
||
|
The test coverage report is then available from `target/site/jacoco/index.html` file.
|
||
|
|
||
|
Profiling
|
||
|
---------
|
||
|
|
||
|
If you have [Async Profiler](https://github.com/jvm-profiling-tools/async-profiler/)
|
||
|
installed, you can generate flame graphs of the test run for profiling purposes.
|
||
|
To do so, you set `libasyncProfilerPath` system property to the location of the
|
||
|
async profiler library:
|
||
|
|
||
|
```
|
||
|
mvn test -Pjpa -Dtest=ClientModelTest \
|
||
|
-DlibasyncProfilerPath=/usr/local/async-profiler/build/libasyncProfiler.so
|
||
|
```
|
||
|
|
||
|
The results are available in the `target/profile.html` file.
|