2014-12-29 13:39:42 +00:00
Test with various databases
===========================
MySQL
-----
2015-04-14 08:30:58 +00:00
The simplest way to test with MySQL is to use the official [MySQL docker image ](https://registry.hub.docker.com/_/mysql/ ).
2014-12-29 13:39:42 +00:00
Start MySQL:
docker run --name mysql -e MYSQL_DATABASE=keycloak -e MYSQL_USER=keycloak -e MYSQL_PASSWORD=keycloak -e MYSQL_ROOT_PASSWORD=keycloak -d mysql
Run tests:
2015-04-14 08:30:58 +00:00
mvn install -Dkeycloak.connectionsJpa.url=jdbc:mysql://`docker inspect --format '{{ .NetworkSettings.IPAddress }}' mysql`/keycloak -Dkeycloak.connectionsJpa.driver=com.mysql.jdbc.Driver -Dkeycloak.connectionsJpa.user=keycloak -Dkeycloak.connectionsJpa.password=keycloak
2014-12-29 13:39:42 +00:00
Stop MySQl:
docker rm -f mysql
PostgreSQL
----------
2015-04-14 08:30:58 +00:00
The simplest way to test with PostgreSQL is to use the official [PostgreSQL docker image ](https://registry.hub.docker.com/_/postgres/ ).
2014-12-29 13:39:42 +00:00
2014-12-30 09:05:27 +00:00
Start PostgreSQL:
2014-12-29 13:39:42 +00:00
docker run --name postgres -e POSTGRES_DATABASE=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=keycloak -e POSTGRES_ROOT_PASSWORD=keycloak -d postgres
Run tests:
2015-04-14 08:30:58 +00:00
mvn install -Dkeycloak.connectionsJpa.url=jdbc:postgresql://`docker inspect --format '{{ .NetworkSettings.IPAddress }}' postgres`:5432/keycloak -Dkeycloak.connectionsJpa.driver=org.postgresql.Driver -Dkeycloak.connectionsJpa.user=keycloak -Dkeycloak.connectionsJpa.password=keycloak
2014-12-29 13:39:42 +00:00
2014-12-30 09:05:27 +00:00
Stop PostgreSQL:
2014-12-29 13:39:42 +00:00
docker rm -f postgres
2016-05-04 15:31:46 +00:00
MariaDB
-------
The simplest way to test with MariaDB is to use the official [MariaDB docker image ](https://registry.hub.docker.com/_/mariadb/ ).
Start MariaDB:
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=keycloak -e MYSQL_USER=keycloak -e MYSQL_PASSWORD=keycloak -d mariadb:10.1
Run tests:
mvn install -Dkeycloak.connectionsJpa.url=jdbc:mariadb://`docker inspect --format '{{ .NetworkSettings.IPAddress }}' mariadb`/keycloak -Dkeycloak.connectionsJpa.driver=org.mariadb.jdbc.Driver -Dkeycloak.connectionsJpa.user=keycloak -Dkeycloak.connectionsJpa.password=keycloak
Stop MySQl:
2019-01-29 17:17:58 +00:00
docker rm -f mariadb
2014-12-29 13:39:42 +00:00
2019-01-29 17:17:58 +00:00
Using built-in profiles to run database tests using docker containers
-------
2024-06-13 13:31:52 +00:00
The project provides specific profiles to run database tests using containers. Below is a just a sample of implemented profiles. In order to get a full list, please invoke (`mvn help:all-profiles -pl testsuite/integration-arquillian | grep -- db-`):
2019-01-29 17:17:58 +00:00
* `db-mysql`
* `db-postgres`
2019-01-31 15:42:27 +00:00
As an example, to run tests using a MySQL docker container on Undertow auth-server:
2019-01-29 17:17:58 +00:00
2019-01-31 15:42:27 +00:00
mvn -f testsuite/integration-arquillian clean verify -Pdb-mysql
2019-01-29 17:17:58 +00:00
If you want to run tests using a pre-configured Keycloak distribution (instead of Undertow):
2022-09-30 07:41:57 +00:00
mvn -f testsuite/integration-arquillian clean verify -Pdb-mysql,jpa,auth-server-quarkus
2019-01-31 15:42:27 +00:00
2022-09-30 07:41:57 +00:00
Note that you must always activate the `jpa` profile when using auth-server-quarkus.
2019-01-31 15:42:27 +00:00
If the mvn command fails for any reason, it may also fail to remove the container which
must be then removed manually.
2022-11-18 16:50:21 +00:00
For Oracle databases, the images are not publicly available due to licensing restrictions.
Build the Docker image per instructions at
https://github.com/oracle/docker-images/tree/main/OracleDatabase.
Update the property `docker.database.image` if you used a different
2019-01-31 15:42:27 +00:00
name or tag for the image.
Note that Docker containers may occupy some space even after termination, and
especially with databases that might be easily a gigabyte. It is thus
advisable to run `docker system prune` occasionally to reclaim that space.