Bonjour,
J'essaie d'automatiser le lancement de tests unitaires sur un projet web. Pour ça, j'aimerais scripter ma base principale, la recréer sur une base embarquée et lancer mes tests unitaires sur cette base de test.
Pour la descente de la base, j'utilise la tâche hbm2ddl du plugin hibernate3-maven-plugin qui me régénère bien la base sur une base derby en mode embedded.
Par contre, je n'arrive pas à accéder à la base depuis mes tests. Quand j'essaie de récupérer la connexion, j'ai une exception comme quoi la base est déjà démarrée. Suite recherches, une base derby embarquée ne peut être accédée en même temps depuis 2 JVM différentes. Apparemment la tâche hibernate ferme mal la connexion... (quand je lance les tests en désactivant la tâche de création de la base tout se passe bien).
J'ai essayé de fermer la connexion au début de mes tests unitaires en passant en attribut de connexion l'attribut shutdown=true (une fois sur la base juste créée et également sur le système derby en supprimant le nom de la base de l'url jdbc), pas mieux.
J'ai aussi essayé de fermer la connexion via sql-maven-plugin toujours en utilisant l'attribut de connexion shutdown, pas mieux.
Pour résoudre les problèmes d'accès concurrent sur une base embarquée, il y a possibilité de passer par un serveur Derby Network Server qui gère les accès à la base et permet les accès concurrents. Via exec-maven-plugin goal exec, j'arrive bien à lancer le serveur qui me rend le prompt et bloque l'exécution de maven... D'après la doc l'exec est sensé se faire dans un process différent...
Je sèche, je pense que ce que j'essaie de faire est assez classique et je vois pas comment m'en sortir. Quelqu'un a déjà rencontré ce genre de problème et/ou sait comment lancer un programme java en démon sans bloquer l'exec de maven ?
Merci
Jacques
Partager