Profils avec Quarkus

La notion de profile ressemble à celle de Spring Framework, avec quelques différences inhérentes au fonctionnement de Quarkus.

Malgré les différences, on peut reprendre le même exemple courant avec la datasource qui peut être différente entre les environnements de développement, de test et de déploiement.

Configuration

Propriété système quarkus.profile

java -Dquarkus.profile=stage org.example.Main

En properties ou yaml, préfixe %dev. En variable d’environnement, préfixe DEV

Profils prédéfinis : dev, prod, test

Prog

ConfigUtils.getProfiles()

On trouve encore ProfileManager.getLaunchMode(), mais il est déprécié.

Profils par défaut

Il dépend du mode de démarrage.

Profils de test

Par défaut, une classe de test annotée par @QuarkusTest démarre avec le profil test. Ainsi on peut redéfinir certaines propriétés dans le fichier YAML.

# application.yml
...
"%test":
  quarkus:
    http:
      auth:
        permission:
          webhook:
            paths: /webhook, /token

Le profil de test peut être modifié avec la propriété système quarkus.test.profile.

On peut aussi choisir un profil pour chaque classe de test avec l’annotation @TestProfile et une classe de spécification du profil. Ça ressemble à Spring, mais en plus typé.

public class IntegrationTestProfile implements QuarkusTestProfile {

    @Override
    public String getConfigProfile() {
        return "integration-test";
    }

}

Ce profil pourra être utilisé dans les tests d’intégration.

@QuarkusTest
@TestProfile(IntegrationTestProfile.class)
class SomeIT {

    @Test
    void something_should_work() {
      ...
    }

}

La classe peut aussi redéfinir des propriétés et quelques autres informations.

public class IntegrationTestProfile implements QuarkusTestProfile {

    ...

    @Override
    public Map<String, String> getConfigOverrides() {
        return Map.of("quarkus.http.auth.permission.webhook.paths", "/webhook,/token");
    }


}