JunitHelper ########### MongoDb or Web Server Junit Support *********************************** Si dans un Web Server Junit, il est nécessaire d'activer un service utilisant un port, et ceci afin de favoriser un parallélisme maximal des tests unitaires, il est demandé de procéder comme suit : .. code-block:: java private static JunitHelper junitHelper; private static int databasePort; private static int serverPort; // dans le @BeforeClass // Créer un objet JunitHelper junitHelper = new JunitHelper(); // Pour MongoDB (exemple) databasePort = junitHelper.findAvailablePort(); final MongodStarter starter = MongodStarter.getDefaultInstance(); // On utilise le port mongodExecutable = starter.prepare(new MongodConfigBuilder() .version(Version.Main.PRODUCTION) .net(new Net(databasePort, Network.localhostIsIPv6())) .build()); mongod = mongodExecutable.start(); // Pour le serveur web (ici Logbook) // On initialise le mongoDbAccess pour le service mongoDbAccess = MongoDbAccessFactory.create( new DbConfigurationImpl(DATABASE_HOST, databasePort, "vitam-test")); // On alloue un port pour le serveur Web serverPort = junitHelper.findAvailablePort(); // On lit le fichier de configuration par défaut présent dans le src/test/resources File logbook = PropertiesUtils.findFile(LOGBOOK_CONF); // On extraie la configuration LogbookConfiguration realLogbook = PropertiesUtils.readYaml(logbook, LogbookConfiguration.class); // On change le port realLogbook.setDbPort(databasePort); // On sauvegarde le fichier (dans un nouveau fichier différent) (static File) newLogbookConf = File.createTempFile("test", LOGBOOK_CONF, logbook.getParentFile()); PropertiesUtils.writeYaml(newLogbookConf, realLogbook); // On utilise le port pour RestAssured RestAssured.port = serverPort; RestAssured.basePath = REST_URI; // On démarre le serveur try { vitamServer = LogbookApplication.startApplication(new String[] { // On utilise le fichier de configuration ainsi créé newLogbookConf.getAbsolutePath(), Integer.toString(serverPort)}); ((BasicVitamServer) vitamServer).start(); } catch (FileNotFoundException | VitamApplicationServerException e) { LOGGER.error(e); throw new IllegalStateException( "Cannot start the Logbook Application Server", e); } // Dans le @AfterClass // On arrête le serveur try { ((BasicVitamServer) vitamServer).stop(); } catch (final VitamApplicationServerException e) { LOGGER.error(e); } mongoDbAccess.close(); junitHelper.releasePort(serverPort); // On arrête MongoDb mongod.stop(); mongodExecutable.stop(); junitHelper.releasePort(databasePort); // On efface le fichier temporaire newLogbookConf.delete();