keycloak-scim/testsuite/integration-arquillian/tests/other/jpa-performance
Jon Koops 972ebb9650
Use a valid SemVer format for the SNAPSHOT version (#17334)
* Use a valid SemVer format for the SNAPSHOT version

* Update pom.xml

* Update pom.xml

---------

Co-authored-by: Stian Thorgersen <stianst@gmail.com>
Co-authored-by: Stian Thorgersen <stian@redhat.com>
2023-03-03 11:11:44 +01:00
..
src/test KEYCLOAK-15695 Streamification cleanup 2021-01-20 14:39:53 +01:00
pom.xml Use a valid SemVer format for the SNAPSHOT version (#17334) 2023-03-03 11:11:44 +01:00
README.md KEYCLOAK-2610 More operations added to ManyUsersTest 2016-03-31 11:49:51 +02:00

Keycloak JPA Performance Tests

Test Phases

  1. Create individual users
  2. Delete realm Optional
  3. Re-import realm Optional
  4. Delete individual users

Phases 2 and 3 are activated by property many.users.reimport=true|false.

How to run

  1. Build the Arquilian Base Testsuite module: /testsuite/integration-arquillian/base
  2. Run the test from this module using mvn test or mvn clean test.

Optional parameters:

  • many.users.count - Number of users to add/delete. Default: 10000.
  • many.users.batch - Measurement batch size. Default: 1000.
  • many.users.reimport - Switch for phases 2 and 3. Default: false.
  • many.users.minTokenValidity - Minimum validity of admin-client's access token. Default: 10000. (ms)
  • many.users.read.after.create - If true, then additional request to read user is send always after the user is created. Default: false
  • many.users.create.objects - If true, then some additional objects will be added to each user (2 attributes, password credential, 2 group mappings, 1 required action) Default: false
  • many.users.create.social.links - If true, then one social (identityProvider) link will be added to each user and then later read. Default: false
  • keycloak.connectionsJpa.globalStatsInterval - Interval in seconds to log Hibernate statistics into log. Default: -1 (which means statistics are disabled)

With MySQL

Start dockerized MySQL:

docker run --name mysql-keycloak -e MYSQL_ROOT_PASSWORD=keycloak -e MYSQL_DATABASE=keycloak -e MYSQL_USER=keycloak -e MYSQL_PASSWORD=keycloak -d -p 3306:3306 mysql

Additional test parameters:

-Pclean-jpa
-Dkeycloak.connectionsJpa.url=jdbc:mysql://localhost/keycloak
-Dkeycloak.connectionsJpa.driver=com.mysql.jdbc.Driver
-Dkeycloak.connectionsJpa.user=keycloak
-Dkeycloak.connectionsJpa.password=keycloak

With PostgreSQL

Start dockerized PostgreSQL:

docker run --name postgres-keycloak -e POSTGRES_PASSWORD=keycloak -d -p 5432:5432 postgres

Additional test parameters:

-Pclean-jpa
-Dkeycloak.connectionsJpa.url=jdbc:postgresql://localhost/postgres
-Dkeycloak.connectionsJpa.driver=org.postgresql.Driver
-Dkeycloak.connectionsJpa.user=postgres
-Dkeycloak.connectionsJpa.password=keycloak

Reports

Test creates reports in target/stats.