keycloak-scim/testsuite/model
Pedro Ruivo e62604b1ec ConditionalRemover interface for External Infinispan feature
Add a ConditionalRemover interface to remove entries from a RemoteCache
based on the key or value fields.
The default implementation provided by this PR uses streaming/iteration
to test and remove entries

On a side change, moved all the transactions to the same package and
created one transaction class per entity/cache to simplify code and
avoid writing "RemoteChangeLogTransaction" with a long list of types.

Fixes #31046

Signed-off-by: Pedro Ruivo <pruivo@redhat.com>
2024-07-30 15:16:17 +02:00
..
src ConditionalRemover interface for External Infinispan feature 2024-07-30 15:16:17 +02:00
pom.xml Use a default Java version from root POM (#29927) 2024-06-21 14:19:31 +02:00
README.md Map Store Removal: Rename Legacy* classes (#26273) 2024-01-23 13:50:31 +00:00
test-all-profiles.sh Use Maven wrapper instead of platform dependent Maven version (#29988) 2024-06-03 15:45:39 +02:00

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.

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