This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 9098e61bb4cadf263ad7c4a77a1ea054ac499273 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 29 18:59:14 2014 +0200 fixes #5872: [PERFORMANCE] créer une base avec 100 traits pour tester les performances de l'application --- .../multipost/MultiPostImportServiceTest.java | 190 ++++++++++++++++++++- 1 file changed, 189 insertions(+), 1 deletion(-) diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java index 2072358..0494bc2 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java @@ -1,10 +1,198 @@ package fr.ifremer.tutti.service.catches.multipost; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.FishingOperations; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.ServiceDbResource; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.util.DateUtil; +import org.nuiton.util.FileUtil; + +import java.io.File; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import static org.nuiton.i18n.I18n.n; + /** * Created on 9/29/14. * * @author Tony Chemit - chemit@codelutin.com - * @since XXX + * @since 3.8 */ public class MultiPostImportServiceTest { + + /** Logger. */ + private static final Log log = LogFactory.getLog(MultiPostImportServiceTest.class); + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbPerformance"); + + protected File dataDirectory; + + protected ServiceDbResource.DataContext dataContext; + + protected File speciesFile; + + protected File benthosFile; + + protected File marineLitterFile; + + @Before + public void setUp() throws Exception { + + dataDirectory = dbResource.getConfig().getDataDirectory(); + + dbResource.openDataContext(); + + dataContext = dbResource.loadContext("CAM-MEDITS", "100000", 0); + + speciesFile = FileUtil.getFileFromPaths(new File("src"), "test", "data", dbResource.getDbName(), "species"); + benthosFile = FileUtil.getFileFromPaths(new File("src"), "test", "data", dbResource.getDbName(), "benthos"); + marineLitterFile = FileUtil.getFileFromPaths(new File("src"), "test", "data", dbResource.getDbName(), "marineLitter"); + + } + + DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + + @Test + public void create100FishingOperations() throws IOException { + + MultiPostImportService multiPostImportService = dbResource.getServiceContext().getService(MultiPostImportService.class); + PersistenceService persistenceService = dbResource.getServiceContext().getService(PersistenceService.class); + + for (int operationNumber = 0; operationNumber < 100; operationNumber++) { + + // create a fishing operation + + FishingOperation fishingOperation = FishingOperations.newFishingOperation(); + + fishingOperation.setCruise(dataContext.cruise); + + String stationNumber = "MEDITS"; + Date date = DateUtil.createDate(1 + operationNumber, 10, 2014); + + if (log.isInfoEnabled()) { + log.info("Create fishingOperation " + operationNumber); + } + + fishingOperation.setStationNumber(stationNumber); + fishingOperation.setFishingOperationNumber(operationNumber); + fishingOperation.setMultirigAggregation("1"); + fishingOperation.setGearShootingStartDate(date); + fishingOperation.setGearShootingEndDate(date); + + fishingOperation = persistenceService.createFishingOperation(fishingOperation); + + CatchBatch catchBatch = CatchBatchs.newCatchBatch(); + catchBatch.setFishingOperation(fishingOperation); + persistenceService.createCatchBatch(catchBatch); + + // create import files + + File directory = dbResource.getServiceContext().getConfig().newTempFile("dbPerformance" + operationNumber); + + String operationDate = df.format(date); + + String operationNumberAsString = String.valueOf(operationNumber); + + { + if (log.isInfoEnabled()) { + log.info("Create species multiImport " + operationNumber); + } + + File speciesImportFile = copyImport(speciesFile, directory, "species", stationNumber, operationNumberAsString, operationDate); + + if (log.isInfoEnabled()) { + log.info("Import multiImport " + speciesImportFile); + } + + multiPostImportService.importSpecies(speciesImportFile, fishingOperation); + + } + + { + if (log.isInfoEnabled()) { + log.info("Create benthos multiImport " + operationNumber); + } + File benthosImportFile = copyImport(benthosFile, directory, "benthos", stationNumber, operationNumberAsString, operationDate); + + if (log.isInfoEnabled()) { + log.info("Import multiImport " + benthosImportFile); + } + + multiPostImportService.importBenthos(benthosImportFile, fishingOperation); + + } + + { + if (log.isInfoEnabled()) { + log.info("Create marineLitter multiImport " + operationNumber); + } + File marineLitterImportFile = copyImport(marineLitterFile, directory, "marineLitter", stationNumber, operationNumberAsString, operationDate); + + if (log.isInfoEnabled()) { + log.info("Import multiImport " + marineLitterImportFile); + } + + multiPostImportService.importMarineLitter(marineLitterImportFile, fishingOperation); + + } + + if (log.isInfoEnabled()) { + log.info("Import multiImport " + operationNumber); + } + + } + + } + + protected File copyImport(File incomingDirectory, + File directory, + String type, + String stationNumber, + String operationNumber, + String operationDate) throws IOException { + + FileUtils.forceMkdir(directory); + FileUtils.copyDirectoryToDirectory(incomingDirectory, directory); + + File targetDirectory = new File(directory, type); + + File weightsFile = new File(targetDirectory, "weights.csv"); + String weights = FileUtils.readFileToString(weightsFile) + .replace("$STATIONNUMBER$", stationNumber) + .replace("$OPERATIONNUMBER$", operationNumber) + .replace("$DATE$", operationDate); + + FileUtils.write(weightsFile, weights); + + File file = new File(directory, type + ".tutti" + StringUtils.capitalize(type)); + + List<File> files = new ArrayList<>(); + files.addAll(Arrays.asList(targetDirectory.listFiles())); + + ApplicationIOUtil.zip(targetDirectory, + file, + files, + n("tutti.service.multipost.export.error")); + + return file; + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.