Author: chatellier Date: 2009-12-22 17:17:18 +0000 (Tue, 22 Dec 2009) New Revision: 2861 Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/ isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip Removed: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java Modified: isis-fish/trunk/changelog.txt isis-fish/trunk/pom.xml isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java Log: Add simulations tests : ica, gdg (quite long, done in integration-test phase) Modified: isis-fish/trunk/changelog.txt =================================================================== --- isis-fish/trunk/changelog.txt 2009-12-22 14:58:49 UTC (rev 2860) +++ isis-fish/trunk/changelog.txt 2009-12-22 17:17:18 UTC (rev 2861) @@ -1,5 +1,6 @@ isis-fish (3.3.0.0) stable; urgency=low + * Restore simulation tests at integration-test phase * Add region factorisable value export (mexico) * Improve simulation stopping algorithm (now faster) * Locally save simulation zip to allow simulation restart even after isis shutdown Modified: isis-fish/trunk/pom.xml =================================================================== --- isis-fish/trunk/pom.xml 2009-12-22 14:58:49 UTC (rev 2860) +++ isis-fish/trunk/pom.xml 2009-12-22 17:17:18 UTC (rev 2861) @@ -480,6 +480,20 @@ </property> </systemProperties> </configuration> + <executions> + <execution> + <id>surefire-it</id> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <includes> + <include>**/*IT.java</include> + </includes> + </configuration> + </execution> + </executions> </plugin> <plugin> <artifactId>maven-site-plugin</artifactId> Deleted: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2009-12-22 14:58:49 UTC (rev 2860) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2009-12-22 17:17:18 UTC (rev 2861) @@ -1,185 +0,0 @@ -/* *##% - * Copyright (C) 2007, 2009 - * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ - -package fr.ifremer.isisfish.simulator; - -import java.io.File; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.math.matrix.DoubleBigVector; -import org.nuiton.math.matrix.MatrixFactory; -import org.nuiton.topia.TopiaContext; -import org.junit.Assert; -import org.junit.Test; - -import fr.ifremer.isisfish.AbstractIsisFishTest; -import fr.ifremer.isisfish.datastore.ResultStorage; -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.entities.Result; -import fr.ifremer.isisfish.types.Date; - - -/** - * SimulationHelperTest. - * - * Created: 4 janv. 07 12:06:18 - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ -public class SimulationHelperTest extends AbstractIsisFishTest { - - /** Commons logging log. */ - private static Log log = LogFactory.getLog(SimulationHelperTest.class); - - final static private String[] SIMULATION_ZIP_FILE = new String[]{ - "src" + File.separator + "test" + File.separator + "resources" + File.separator + "simulations" + File.separator + "test-nonregression-20090203.zip", - // put here other zip simulation test - }; - -// public void testVerifResult() throws Exception { -// try { -// IsisConfig.load(); -// -// for (String zipName : SIMULATION_ZIP_FILE) { -// // recuperation du fichier zip de la simulation de test -// File zip = new File(zipName); -// -// // import de cette simulation -// String name = "simulation-test-" + System.currentTimeMillis(); -// SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref"); -// -// // import de la simulation avec un autre nom -// SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name); -// -// try { -// // verification qu'on retrouve les memes resulats pour les deux simulations -// ResultStorage resultRef = simRef.getResultStorage(); -// ResultStorage result = sim.getResultStorage(); -// -// List<String> resultNames = resultRef.getResultName(); -// assertEquals(resultNames, result.getResultName()); -// -// Date lastDate = resultRef.getLastDate(); -// for (Date date=new Date(0); date.before(lastDate); date=date.next()) { -// for (String resultName : resultNames) { -// assertEquals("Date " + date.getDate() + " result " + resultName, -// resultRef.getMatrix(date, resultName), -// result.getMatrix(date, resultName)); -// } -// } -// -// } finally { -// // fermeture des bases -// simRef.getStorage().closeContext(); -// sim.getStorage().closeContext(); -// // suppresion des deux simulations -// simRef.delete(false); -// sim.delete(false); -// } -// } -// } catch (Exception eee) { -// System.err.println(eee); -// eee.printStackTrace(); -// throw eee; -// } -// } - - /* - 10;20;30;40;50;60;70;80;90; - 100;200;300;400;500;600;700;800;900; - 1000;2000;3000;4000;5000;6000;7000;8000;9000; - 10000;20000;30000;40000;50000;60000;70000;80000;90000; - 100000;200000;300000;400000;500000;600000;700000;800000;900000; - 1000000;2000000;3000000;4000000;5000000;6000000;7000000;8000000;9000000; - 10000000;20000000;30000000;40000000;50000000;60000000;70000000;80000000;90000000; - 100000000;200000000;300000000;400000000;500000000;600000000;700000000;800000000;900000000; - 1000000000;2000000000;3000000000;4000000000;5000000000;6000000000;7000000000;8000000000;9000000000; - 10000000000;20000000000;30000000000;40000000000;50000000000;60000000000;70000000000;80000000000;90000000000; - */ - - @Test - public void testSimulate() throws Exception { - - try { - // par defaut on utilise des doubles pour les matrices - MatrixFactory.setDefaultVectorClass(DoubleBigVector.class); - - for (String zipName : SIMULATION_ZIP_FILE) { - // recuperation du fichier zip de la simulation de test - File zip = new File(zipName); - - // import de cette simulation - String name = "simulation-test-" + System.currentTimeMillis(); - SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref"); - - // import de la simulation avec un autre nom - SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name); - - try { - // suppression des resultats de cette simulation - TopiaContext tx = sim.getStorage().beginTransaction(); - tx.execute("DELETE from " + Result.class.getName()); - tx.commitTransaction(); - tx.closeContext(); - - // lancement de la simulation - // FIXME a remplacer avec SimulationService -// SimulationHelper.simulate(null, sim); - - // verification qu'on retrouve les memes resulats pour les deux simulations - ResultStorage resultRef = simRef.getResultStorage(); - ResultStorage result = sim.getResultStorage(); - - List<String> resultNames = resultRef.getResultName(); - Assert.assertEquals(resultNames, result.getResultName()); - - Date lastDate = resultRef.getLastDate(); - - log.info("Check result ..."); - for (Date date = new Date(0); date.before(lastDate); date = date.next()) { - for (String resultName : resultNames) { - log.debug("Check result " + date + " " + resultName); - Assert.assertEquals("Date " + date.getDate() + " result " + resultName, - resultRef.getMatrix(date, resultName), - result.getMatrix(date, resultName)); - } - } - - } finally { - // fermeture des bases - simRef.getStorage().closeContext(); - sim.getStorage().closeContext(); - // suppresion des deux simulations - simRef.delete(false); - sim.delete(false); - } - } - } catch (Exception eee) { - System.err.println(eee); - eee.printStackTrace(); - throw eee; - } - } -} Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java (rev 0) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java 2009-12-22 17:17:18 UTC (rev 2861) @@ -0,0 +1,171 @@ +/* *##% + * Copyright (C) 2009 Ifremer - Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.simulator.launcher; + +import java.io.File; +import java.net.URL; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; + +import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.datastore.ResultStorage; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.Result; +import fr.ifremer.isisfish.simulator.SimulationControl; +import fr.ifremer.isisfish.types.Date; + +/** + * Integration tests for {@link SimulationService}. + * + * Dans ces deux tests, les simulations ont été effectuées sur isis-fish-3.2.0.9. + * Les resultats ont été exporté dans le fichier data-backup.sql.gz. Le zip + * contient cet export et le fichier de parametres. + * + * Il ne contient pas les scripts pour utiliser ceux de la base de test. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ By : $Author: chatellier $ + */ +public class SimulationServiceIT extends AbstractIsisFishTest { + + /** Class logger. */ + private static Log log = LogFactory.getLog(SimulationServiceIT.class); + + /** + * Read a zipped simulation file. + * Redo simulation with same parameters, and check that result are all equals. + * + * @param zipName + * @throws Exception + */ + protected void testSimulate(String zipName) throws Exception { + + int resultChecked = 0; + + // recuperation du fichier zip de la simulation de test + File zip = new File(zipName); + + // import de cette simulation + String name = "simulation-test-" + System.currentTimeMillis(); + SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref"); + + // la simulation testée ici + SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name + "-temp"); + + try { + // suppression des resultats de cette simulation + TopiaContext tx = sim.getStorage().beginTransaction(); + tx.execute("DELETE from " + Result.class.getName()); + tx.commitTransaction(); + tx.closeContext(); + + // lancement de la simulation + SimulationControl control = new SimulationControl(sim.getName()); + control.setDate(new Date()); + InProcessSimulatorLauncher launcher = new InProcessSimulatorLauncher(); + sim = launcher.localSimulate(control, sim); + + // if simulation ends with exception, no need to continue + if (!StringUtils.isEmpty(sim.getInformation().getException())) { + Assert.fail(sim.getInformation().getException()); + } + + // verification qu'on retrouve les memes resulats pour les deux simulations + ResultStorage resultRef = simRef.getResultStorage(); + ResultStorage result = sim.getResultStorage(); + + List<String> resultNames = resultRef.getResultName(); + Assert.assertEquals(resultNames, result.getResultName()); + + Date lastDate = resultRef.getLastDate(); + + + if (log.isInfoEnabled()) { + log.info("Check result ..."); + } + + for (Date date = new Date(0); date.beforeOrEquals(lastDate); date = date.next()) { + for (String resultName : resultNames) { + if (log.isDebugEnabled()) { + log.debug("Check result " + date + " " + resultName); + } + Assert.assertEquals("Date " + date.getDate() + " result " + resultName, + resultRef.getMatrix(date, resultName), + result.getMatrix(date, resultName)); + + resultChecked++; + } + } + + // nombre de résultat sur 12 mois, sur 5 ans + Assert.assertEquals("All expected results have not been checked !", resultNames.size() * 12 * 5, resultChecked); + + } finally { + // fermeture des bases + simRef.getStorage().closeContext(); + sim.getStorage().closeContext(); + // suppresion des deux simulations + simRef.delete(false); + sim.delete(false); + } + + // Test qu'au moins quelques resultats ont été verifié + Assert.assertTrue("At least some result must be done", resultChecked > 100); + } + + /** + * Do simulation test on gdg database. + * + * Simulation properties : + * - 10 years + * - all strategies + * - one population + * + * @throws Exception + */ + @Test + public void testSimlateGdG() throws Exception { + URL zipURL = this.getClass().getResource("sim_test-gdg-3.2-3.3.zip"); + testSimulate(zipURL.getFile()); + } + + /** + * Do simulation test on ICA database. + * + * Simulation properties : + * - 10 years + * - all strategies + * - one population + * + * @throws Exception + */ + @Test + public void testSimlateICA() throws Exception { + URL zipURL = this.getClass().getResource("sim_test-ica-3.2-3.3.zip"); + testSimulate(zipURL.getFile()); + } +} Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-12-22 14:58:49 UTC (rev 2860) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-12-22 17:17:18 UTC (rev 2861) @@ -198,57 +198,4 @@ } } } - - /** - * Lance une simulation avec des facteurs de sensibilité. - * - * This test use factors with matrix. - * - * Fail after 2 min. - */ - @Test(timeout=120 * 1000) - public void testRunSensivitySimulationWithMatrix() { - - SimulationParameter params = new SimulationParameter(); - // set params region - params.setRegionName("DemoRegion"); - // set population - List<Population> pops = new ArrayList<Population>(); - Population pop = new PopulationImpl(); - pop.setName("test population"); - pop.setPopulationGroup(new ArrayList<PopulationGroup>()); - pop.setPopulationZone(new ArrayList<Zone>()); - pops.add(pop); - params.setPopulations(pops); - // strat - List<Strategy> strats = new ArrayList<Strategy>(); - Strategy strategy = new StrategyImpl(); - strategy.setName("stratest"); - strats.add(strategy); - params.setStrategies(strats); - // number of year - params.setNumberOfYear(1); - - SimulationService service = SimulationService.getService(); - SimulatorLauncher launcher = new InProcessSimulatorLauncher(); - service.addSimulationLauncher(launcher); - - SensitivityCalculator sensitivityCalculator = new SensitivityCalculatorRandomMock(); - - DesignPlan designPlan = getTestMatrixDesignPlan(); - - service.submit("sensitivity test matrix 1", params, launcher, 0, - sensitivityCalculator, designPlan); - - // temporise la fin de test , sinon junit tue tous les process - try { - do { - Thread.sleep(2000); - } while (!service.jobs.isEmpty()); - } catch (InterruptedException e) { - if (log.isErrorEnabled()) { - log.error("Can't wait wimulation to end", e); - } - } - } } Added: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip =================================================================== (Binary files differ) Property changes on: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip =================================================================== (Binary files differ) Property changes on: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip ___________________________________________________________________ Added: svn:mime-type + application/octet-stream