######################### 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