#########################
Parallélisation des tests
#########################
Ce document présente la procédure pour réduire le temps de traitement des tests en
les parallélisant. Ce travail réfère au US#714 et au techDesign IT01.
Il y a des tests TDD et des tests d'intégration dans les modules existants de la plate-forme,
nous voulons faire paralléliser des classes de tests utilisant JUnit pour avoir la performance.
Pour ce but, nous effectuons les étapes suivantes :
- Séparation des tests : tests unitaires et test d'intégration
- Parallélisation des tests unitaires
- Configuration de build avec les options de tests
Séparation des tests TDD et tests d'intégration
===============================================
- Il y a plusieurs tests d'intégration présents dans le module *integration-test* :
*ProcessingIT* : test d'intégration pour différents services : workspace, functional-administration, worker, metadata, logbook, processing
StorageClientIT : test d'intégration pour le client du service de storage. Cela concerne deux modules:
storage (client & rest) et le client de workspace
WorkerIT : test d'intégration pour les services : workspace, worker, metadata, logbook, processing
FunctionalAdminIT : test d'intégration pour le service FunctionalAdministration.
IngestInternalIT : test d'intégration pour le service IngestInternal.
LogbookCheckConsistencyIT : test d'intégration pour le service de vérification de cohérence des journaux.
\*.Reconstruction\*.IT : test d'intégration pour les services de reconstruction et de backup.
SecurityInternalIT : test d'intégration pour le service de sécurité interne.
Ces tests d'intégration sont en mode séquentiel. Pour cela, nous indiquons dans le pom.xml de ce module de test-integration
.. code-block:: xml
maven-surefire-plugin
classes
1
false
1
false
AC001
AC001
../common/common-private/src/main/resources/esapi
Parallélisation de tests unitaires
==================================
Les tests unitaires de chaque module sont configurés pour être lancés en mode parallèle.
Pour cela, nous indiquons dans le pom.xml parent pour la phrase de build
.. code-block:: xml
maven-surefire-plugin
2.19.1
-Xmx2048m -Dvitam.tmp.folder=/tmp ${coverageAgent}
classes
3
true
3C
false
false
Configuration de build avec les options de tests
================================================
- ``mvn install`` : lancer le build normal avec tous les tests
- ``mvn clean install -DskipTests`` : pour ignorer tous les tests:
- ``mvn clean test`` ou ``mvn clean install -DskipITs`` : pour ignorer les tests d'intégration
- ``mvn integration-test`` : pour lancer les tests d'intégration
Pour cela, nous ajoutons le code suivant dans le pom parent.
.. code-block:: xml
integration-test
test
integration-test
${skipITs}
none
**/*IT.java
- mvn clean test-compile failsafe:integration-test: pour exécuter uniquement les tests d'intégration.
Pour cela, nous ajoutons le code suivant dans le pom parent.
.. code-block:: xml
maven-failsafe-plugin
2.19.1
integration-test
integration-test
verify