This is an automated email from the git hooks/post-receive script. New commit to branch feature/7470_mise_en_place_de_la_date_de_derniere_mise_a_jour in repository tutti. See http://git.codelutin.com/tutti.git commit 3a106d48370fa5e957bf5b255fb7c3d753f65d7c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Dec 26 11:29:30 2015 +0100 Amélioration de l'API de tests --- .../referentiel/LengthWeightParemetersTest.java | 13 +- .../services/ApplicationContextResource.java | 209 ++++++++++++++------- .../ird/observe/services/DataSourceResource.java | 202 +++++++++++++------- .../services/ObserveServiceContextTopiaTaiste.java | 2 +- .../observe/services/binder/BinderEngineTest.java | 9 +- .../services/service/AbstractServiceTopiaTest.java | 140 +++----------- .../DataSourceDumpProducerServiceTopiaTest.java | 15 +- .../service/DataSourceServiceTopiaTest.java | 36 ++-- .../services/service/MigrateTestsDatabases.java | 54 +++--- .../service/ReferentialServiceTopiaTest.java | 22 ++- .../ConsolidateDataServiceTopiaTest.java | 16 +- .../report/AbstractReportServiceTopiaTest.java | 11 +- .../actions/validate/ValidateServiceTopiaTest.java | 13 +- ...tLonglineDetailCompositionServiceTopiaTest.java | 16 +- .../service/seine/RouteServiceTopiaTest.java | 15 +- .../seine/TargetSampleServiceTopiaTest.java | 13 +- .../seine/TripSeineGearUseServiceTopiaTest.java | 20 +- .../service/seine/TripSeineServiceTopiaTest.java | 25 ++- .../ApplicationContextResourceConfiguration.java | 28 +++ .../test/DataSourceResourceConfiguration.java | 36 ++++ .../java/fr/ird/observe/test/DatabaseName.java | 12 ++ .../main/java/fr/ird/observe/test/TestHelper.java | 51 +++-- 22 files changed, 536 insertions(+), 422 deletions(-) diff --git a/observe-services-topia/src/test/java/fr/ird/observe/entities/referentiel/LengthWeightParemetersTest.java b/observe-services-topia/src/test/java/fr/ird/observe/entities/referentiel/LengthWeightParemetersTest.java index 89db270..eb8e803 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/entities/referentiel/LengthWeightParemetersTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/entities/referentiel/LengthWeightParemetersTest.java @@ -26,10 +26,14 @@ import com.opensymphony.xwork2.interceptor.annotations.After; import fr.ird.observe.ObserveTopiaDaoSupplier; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.constants.ReferenceStatus; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.util.DateUtil; @@ -41,20 +45,16 @@ import java.util.Date; * @author Tony Chemit - chemit@codelutin.com * @since 1.8 */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.referentiel, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class LengthWeightParemetersTest extends AbstractServiceTopiaTest { /** Logger */ private static final Log log = LogFactory.getLog(LengthWeightParemetersTest.class); - public LengthWeightParemetersTest() { - super("referentiel", "testGetCorrectLengthWeightParameter"); - } - private ObserveTopiaPersistenceContext persistenceContext; - @Override + @Before public void setUp() throws Exception { - super.setUp(); persistenceContext = dataSourceResource.newPersistenceContext(); @@ -136,6 +136,7 @@ public class LengthWeightParemetersTest extends AbstractServiceTopiaTest { * See http://forge.codelutin.com/issues/7628 */ @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void testGetCorrectLengthWeightParameter() { SpeciesTopiaDao speciesDAO = persistenceContext.getSpeciesDao(); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java index 56f6955..40f097a 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java @@ -24,11 +24,16 @@ package fr.ird.observe.services; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; -import fr.ird.observe.entities.migration.AbstractDataSourceMigration; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,8 +43,11 @@ import org.junit.runner.Description; import org.junit.runners.model.Statement; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.util.Locale; @@ -55,15 +63,15 @@ public class ApplicationContextResource implements TestRule { protected final ObserveServiceFactoryTopia serviceFactory; - private File testDirectory; + private Path temporaryDirectoryRoot; - private File dataBaseDirectory; + private final ObserveSpeciesListConfiguration speciesListConfiguration; - private File dataBaseCommonRefDirectory; + private final DataSourcesForTestManager dataSourcesForTestManager; - private Path temporaryDirectoryRoot; + protected String dbName; - private final ObserveSpeciesListConfiguration speciesListConfiguration; + protected String dbVersion; public ApplicationContextResource() { this.speciesListConfiguration = ObserveSpeciesListConfiguration.newDefaultConfiguration(); @@ -76,6 +84,57 @@ public class ApplicationContextResource implements TestRule { } }; serviceFactory.setMainServiceFactory(serviceFactory); + + dataSourcesForTestManager = new DataSourcesForTestManager(); + + } + + public ObserveDataSourceConfigurationTopiaH2 createDataSource(Version dbVersion, String dbName, File targetPath) throws DataSourceCreateWithNoReferentialImportException, IOException, IncompatibleDataSourceCreateConfigurationException { + + ObserveDataSourceConfigurationTopiaH2 sharedDatabaseConfiguration = dataSourcesForTestManager.createSharedDataSourceConfigurationH2(dbVersion, dbName); + + File sharedDatabaseFile = sharedDatabaseConfiguration.getDatabaseFile(); + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration; + + boolean sharedDatabaseExist = sharedDatabaseFile.exists(); + if (!sharedDatabaseExist) { + + if (log.isInfoEnabled()) { + log.info("Create shared database: " + dbVersion.toString() + "/" + dbName + " to " + sharedDatabaseFile); + } + + byte[] databaseToImportContent = dataSourcesForTestManager.getDatabaseScriptContent(dbVersion, dbName); + + DataSourceService dataSourceService = newService(sharedDatabaseConfiguration, DataSourceService.class); + DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); + createConfiguration.setImportDatabase(databaseToImportContent); + dataSourceService.create(sharedDatabaseConfiguration, createConfiguration); + + } + + if (targetPath == null) { + + dataSourceConfiguration = sharedDatabaseConfiguration; + } else { + + // Use a copy + + dataSourceConfiguration = dataSourcesForTestManager.createDataSourceConfigurationH2(targetPath, dbVersion, dbName); + File databaseFileTarget = dataSourceConfiguration.getDatabaseFile(); + + if (log.isInfoEnabled()) { + log.info("Copy database: " + dbVersion.toString() + "/" + dbName + " to " + databaseFileTarget); + } + Files.createDirectories(databaseFileTarget.toPath().getParent()); + Files.copy(sharedDatabaseFile.toPath(), databaseFileTarget.toPath()); + + } + + dataSourceConfiguration.setModelVersion(Versions.valueOf(AbstractServiceTopiaTest.DEFAULT_VERSION)); + + return dataSourceConfiguration; + } public String getScriptPath(String classifier, Version databaseVersion) { @@ -137,6 +196,13 @@ public class ApplicationContextResource implements TestRule { TestHelper.initTest(testClass); + ApplicationContextResourceConfiguration dataSourceTestConfiguration = getApplicationContextTestConfiguration(testClass); + + if (dataSourceTestConfiguration != null) { + dbName = dataSourceTestConfiguration.dbName().name(); + dbVersion = dataSourceTestConfiguration.dbVersion(); + } + } protected void after(Description description) { @@ -151,68 +217,14 @@ public class ApplicationContextResource implements TestRule { } - public File getTestDirectory() { - return testDirectory; - } + protected ApplicationContextResourceConfiguration getApplicationContextTestConfiguration(Class<?> clazz) { - public void setTestDirectory(File testDirectory) { - this.testDirectory = testDirectory; - } + ApplicationContextResourceConfiguration dataSourceTestConfiguration = clazz.getAnnotation(ApplicationContextResourceConfiguration.class); - public File getDataBaseDirectory() { - return dataBaseDirectory; - } - - public void setDataBaseDirectory(File dataBaseDirectory) { - this.dataBaseDirectory = dataBaseDirectory; - } - - public File getDataBaseCommonRefDirectory() { - return dataBaseCommonRefDirectory; - } - - public void setDataBaseCommonRefDirectory(File dataBaseCommonRefDirectory) { - this.dataBaseCommonRefDirectory = dataBaseCommonRefDirectory; - } - - public ObserveDataSourceConfigurationTopiaH2 createDataSourceConfigurationH2(Class<?> testClass, String dbName) { - - ObserveDataSourceConfigurationTopiaH2 configurationTopiaH2 = new ObserveDataSourceConfigurationTopiaH2(); - - File localDbFile = new File(dataBaseDirectory, dbName); - - if (log.isInfoEnabled()) { - log.info("db directory: " + localDbFile); + if (dataSourceTestConfiguration == null && clazz.getSuperclass() != null) { + dataSourceTestConfiguration = getApplicationContextTestConfiguration(clazz.getSuperclass()); } - configurationTopiaH2.setLabel(testClass.getSimpleName() + "#" + dbName); - configurationTopiaH2.setUsername(TestHelper.TEST_H2_LOGIN); - configurationTopiaH2.setPassword(TestHelper.TEST_H2_PASSWORD); - configurationTopiaH2.setDirectory(localDbFile); - configurationTopiaH2.setDbName("obstuna"); - configurationTopiaH2.setAutoMigrate(true); - configurationTopiaH2.setModelVersion(AbstractDataSourceMigration.getLastVersion()); - return configurationTopiaH2; - - } - - public ObserveDataSourceConfigurationTopiaH2 createCommonsDataSourceConfigurationH2(String dbName) { - - ObserveDataSourceConfigurationTopiaH2 configurationTopiaH2 = new ObserveDataSourceConfigurationTopiaH2(); - - File localDbFile = new File(dataBaseCommonRefDirectory, dbName); - - if (log.isInfoEnabled()) { - log.info("db directory: " + localDbFile); - } - configurationTopiaH2.setLabel("Commons database#" + dbName); - configurationTopiaH2.setUsername(TestHelper.TEST_H2_LOGIN); - configurationTopiaH2.setPassword(TestHelper.TEST_H2_PASSWORD); - configurationTopiaH2.setDirectory(localDbFile); - configurationTopiaH2.setDbName("obstuna"); - configurationTopiaH2.setAutoMigrate(true); - configurationTopiaH2.setModelVersion(AbstractDataSourceMigration.getLastVersion()); - return configurationTopiaH2; - + return dataSourceTestConfiguration; } public void assertSchemaCreated(ObserveTopiaApplicationContext topiaApplicationContext) { @@ -240,4 +252,71 @@ public class ApplicationContextResource implements TestRule { } } + public String getDbName() { + return dbName; + } + + public String getDbVersion() { + return dbVersion; + } + + /** + * Created on 26/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ + public static class DataSourcesForTestManager { + + /** + * Root path of shared databases. + */ + private static Path sharedDatabasesRootPath; + + public Path getSharedDatabasesRootPath() { + if (sharedDatabasesRootPath == null) { + sharedDatabasesRootPath = TestHelper.getCommonsDir().toPath(); + } + return sharedDatabasesRootPath; + } + + public Path getSharedDatabasePath(Version dbVersion, String dbName) { + return getDatabasePath(getSharedDatabasesRootPath(), dbVersion, dbName); + } + + public Path getDatabasePath(Path rootPath, Version dbVersion, String dbName) { + return rootPath.resolve(dbVersion.getValidName()).resolve(dbName); + } + + public ObserveDataSourceConfigurationTopiaH2 createSharedDataSourceConfigurationH2(Version dbVersion, String dbName) { + Path databasePath = getDatabasePath(getSharedDatabasesRootPath(), dbVersion, dbName); + return createDataSourceConfigurationH2(databasePath.toFile(), dbVersion, dbName); + } + + public ObserveDataSourceConfigurationTopiaH2 createDataSourceConfigurationH2(File localDbFile, Version dbVersion, String dbName) { + + ObserveDataSourceConfigurationTopiaH2 configurationTopiaH2 = new ObserveDataSourceConfigurationTopiaH2(); + + if (log.isDebugEnabled()) { + log.debug("db directory: " + localDbFile); + } + configurationTopiaH2.setLabel("Commons database#" + dbName); + configurationTopiaH2.setUsername(TestHelper.TEST_H2_LOGIN); + configurationTopiaH2.setPassword(TestHelper.TEST_H2_PASSWORD); + configurationTopiaH2.setDirectory(localDbFile); + configurationTopiaH2.setDbName("obstuna"); + configurationTopiaH2.setAutoMigrate(true); + configurationTopiaH2.setModelVersion(dbVersion); + return configurationTopiaH2; + + } + + public byte[] getDatabaseScriptContent(Version dbVersion, String dbName) throws IOException { + String scriptPath = "/db/" + dbVersion.toString() + "/" + dbName + ".sql.gz"; + + byte[] databaseToImportContent = TestHelper.getResourceContent(scriptPath); + return databaseToImportContent; + } + + } + } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java index 23b0316..003422d 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java @@ -23,18 +23,21 @@ package fr.ird.observe.services; */ import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableSet; -import com.google.common.io.ByteStreams; -import com.google.common.io.Resources; +import com.google.common.base.Strings; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.entities.migration.AbstractDataSourceMigration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.ObserveReferentialCache; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -44,14 +47,13 @@ import org.junit.runners.model.Statement; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaPersistenceContext; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Set; /** * Created on 18/08/15. @@ -69,18 +71,37 @@ public class DataSourceResource implements TestRule { protected ObserveDataSourceConnection dataSourceConnection; - protected Set<String> testNamesChangeDataBase; - - protected String scriptName; - protected ObserveReferentialCache referentialCache; - public DataSourceResource(ApplicationContextResource applicationContextResource, String scriptName, String... testNamesChangeDataBase) { + protected File testDirectory; + + public DataSourceResource(ApplicationContextResource applicationContextResource) { this.applicationContextResource = applicationContextResource; - this.scriptName = scriptName; - this.testNamesChangeDataBase = ImmutableSet.<String>builder().add(testNamesChangeDataBase).build(); } + public <S extends ObserveService> S newService(Class<S> serviceType) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { + + ObserveDataSourceConnection dataSourceConnection = getDataSourceConnection(); + + if (dataSourceConnection == null) { + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = getDataSourceConfiguration(); + + DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); + + dataSourceConnection = dataSourceService.open(dataSourceConfiguration); + + dataSourceConnection = new ObserveDataSourceConnectionTopiaTaiste(dataSourceConnection.getAuthenticationToken()); + + setDataSourceConnection(dataSourceConnection); + } + + S service = applicationContextResource.newService(dataSourceConnection, serviceType); + + return service; + } + + public ObserveDataSourceConfigurationTopiaH2 getDataSourceConfiguration() { return dataSourceConfiguration; } @@ -93,16 +114,6 @@ public class DataSourceResource implements TestRule { this.dataSourceConnection = dataSourceConnection; } - public byte[] getDatabaseToImportContent(String scriptPath) throws IOException { - - URL url = getClass().getResource(scriptPath); - Preconditions.checkNotNull(url, "Could not find database at: " + scriptPath); - try (InputStream inputStream = Resources.asByteSource(url).openStream()) { - byte[] dumpContent = ByteStreams.toByteArray(inputStream); - return dumpContent; - } - } - public ObserveReferentialCache getReferentialCache() { if (referentialCache == null) { referentialCache = new ObserveReferentialCache(); @@ -110,35 +121,9 @@ public class DataSourceResource implements TestRule { return referentialCache; } - public void createDataSourceFromScript(String scriptPath) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - - byte[] databaseToImportContent = getDatabaseToImportContent(scriptPath); - - DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); - DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); - createConfiguration.setImportDatabase(databaseToImportContent); - dataSourceService.create(dataSourceConfiguration, createConfiguration); - - } - - public void createCommonsDataSourceFromScript(String scriptPath) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - - byte[] databaseToImportContent = getDatabaseToImportContent(scriptPath); - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = applicationContextResource.createCommonsDataSourceConfigurationH2("localdb"); - - DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); - DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); - createConfiguration.setImportDatabase(databaseToImportContent); - dataSourceService.create(dataSourceConfiguration, createConfiguration); - - } - public ObserveTopiaPersistenceContext newPersistenceContext() { - ObserveTopiaPersistenceContext persistenceContext = getTopiaApplicationContext().newPersistenceContext(); return persistenceContext; - } public ObserveTopiaApplicationContext getTopiaApplicationContext() { @@ -168,6 +153,17 @@ public class DataSourceResource implements TestRule { } + public void createDataSourceFromScript(String scriptPath) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + byte[] databaseToImportContent = TestHelper.getResourceContent(scriptPath); + + DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); + DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); + createConfiguration.setImportDatabase(databaseToImportContent); + dataSourceService.create(dataSourceConfiguration, createConfiguration); + + } + @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @@ -184,44 +180,110 @@ public class DataSourceResource implements TestRule { }; } + private Class<?> testClass; + + private String methodName; + + private boolean useSharedDatabase; + + private String dbName; + + private Version dbVersion; + + public String getDbName() { + return dbName; + } + + public Version getDbVersion() { + return dbVersion; + } + + public String getMethodName() { + return methodName; + } + + public Class<?> getTestClass() { + return testClass; + } + + public boolean isUseSharedDatabase() { + return useSharedDatabase; + } + + public File getTestDirectory() { + return testDirectory; + } + + public ObserveDataSourceConfigurationTopiaH2 createDataSourceConfigurationH2(Class<?> testClass, String dbName) { + + ObserveDataSourceConfigurationTopiaH2 configurationTopiaH2 = new ObserveDataSourceConfigurationTopiaH2(); + + File localDbFile = new File(testDirectory, dbName); + + if (log.isInfoEnabled()) { + log.info("db directory: " + localDbFile); + } + configurationTopiaH2.setLabel(testClass.getSimpleName() + "#" + dbName); + configurationTopiaH2.setUsername(TestHelper.TEST_H2_LOGIN); + configurationTopiaH2.setPassword(TestHelper.TEST_H2_PASSWORD); + configurationTopiaH2.setDirectory(localDbFile); + configurationTopiaH2.setDbName("obstuna"); + configurationTopiaH2.setAutoMigrate(true); + configurationTopiaH2.setModelVersion(AbstractDataSourceMigration.getLastVersion()); + return configurationTopiaH2; + + } + protected void before(Description description) throws Throwable { - Class<?> testClass = description.getTestClass(); - String methodName = description.getMethodName(); + testClass = description.getTestClass(); + methodName = description.getMethodName(); if (log.isDebugEnabled()) { log.debug("Starts " + testClass.getName() + "::" + methodName); } - File testDirectory = TestHelper.newFile(methodName); + DataSourceResourceConfiguration dataSourceResourceConfiguration = testClass.getMethod(methodName).getAnnotation(DataSourceResourceConfiguration.class); - applicationContextResource.setTestDirectory(testDirectory); + String dbVersionStr; - Path temporaryDirectoryRoot = new File(testDirectory, "tmp").toPath(); - - Files.createDirectories(temporaryDirectoryRoot); - - applicationContextResource.setTemporaryDirectoryRoot(temporaryDirectoryRoot); + if (dataSourceResourceConfiguration == null) { + useSharedDatabase = true; + dbName = null; + dbVersionStr = null; + } else { + useSharedDatabase = dataSourceResourceConfiguration.useSharedDatabase(); + dbName = dataSourceResourceConfiguration.dbName().name(); + dbVersionStr = dataSourceResourceConfiguration.dbVersion(); + } + if (Strings.isNullOrEmpty(dbName)) { + dbName = applicationContextResource.getDbName(); + } + Preconditions.checkState(!Strings.isNullOrEmpty(dbName), "Pas de nom de base spécifié"); - File commonsDir = TestHelper.getCommonsDir(); + if (Strings.isNullOrEmpty(dbVersionStr)) { + dbVersionStr = applicationContextResource.getDbVersion(); + } + Preconditions.checkState(!Strings.isNullOrEmpty(dbVersionStr), "Pas de version de base spécifié"); + dbVersion = Versions.valueOf(dbVersionStr); - File dataBaseCommonsRefDirectory = new File(commonsDir, scriptName); + if (log.isDebugEnabled()) { + log.debug("Starts " + testClass.getName() + "::" + methodName); + } - applicationContextResource.setDataBaseCommonRefDirectory(dataBaseCommonsRefDirectory); + testDirectory = TestHelper.newFile(methodName); - //if (testNamesChangeDataBase.contains(methodName)) { + Path temporaryDirectoryRoot = new File(testDirectory, "tmp").toPath(); - File dataBaseDirectory = new File(testDirectory, scriptName); + Files.createDirectories(temporaryDirectoryRoot); - applicationContextResource.setDataBaseDirectory(dataBaseDirectory); + applicationContextResource.setTemporaryDirectoryRoot(temporaryDirectoryRoot); -// } else { -// -// applicationContextResource.setDataBaseDirectory(dataBaseCommonsRefDirectory); -// -// } + File databasePath = useSharedDatabase + ? null + : getTestDirectory().toPath().resolve("localDb").toFile(); - dataSourceConfiguration = applicationContextResource.createDataSourceConfigurationH2(testClass, "localdb"); + dataSourceConfiguration = applicationContextResource.createDataSource(dbVersion, this.dbName, databasePath); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java index 284c7ad..e78d050 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java @@ -31,7 +31,7 @@ import java.util.Date; */ public class ObserveServiceContextTopiaTaiste extends ObserveServiceContextTopia { - public static final Date DATE = DateUtil.createDate(36, 15, 17, 21, 8, 2015); + public static final Date DATE = DateUtil.createDate(36, 15, 17, 21, 8, 2016); public ObserveServiceContextTopiaTaiste(ObserveServiceInitializer observeServiceInitializer, ObserveServiceFactory mainServiceFactory, ObserveServiceFactory serviceFactory) { super(observeServiceInitializer, mainServiceFactory, serviceFactory); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/binder/BinderEngineTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/binder/BinderEngineTest.java index 7191477..a457863 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/binder/BinderEngineTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/binder/BinderEngineTest.java @@ -2,6 +2,7 @@ package fr.ird.observe.services.binder; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.services.dto.DataDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; @@ -123,6 +124,7 @@ import fr.ird.observe.services.service.AbstractServiceTopiaTest; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.test.DatabaseName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -138,6 +140,7 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class BinderEngineTest extends AbstractServiceTopiaTest { /** Logger. */ @@ -145,15 +148,9 @@ public class BinderEngineTest extends AbstractServiceTopiaTest { private BinderEngine binderEngine; - public BinderEngineTest() { - super("dataForTestSeine"); - } - - @Override @Before public void setUp() throws Exception { - super.setUp(); binderEngine = BinderEngine.get(); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java index ed8c194..162e2e9 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java @@ -1,57 +1,29 @@ package fr.ird.observe.services.service; -/* - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit - * %% - * 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 3 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, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.AbstractObserveTopiaDao; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.ObserveEntity; -import fr.ird.observe.entities.migration.H2DataSourceMigration; import fr.ird.observe.services.ApplicationContextResource; import fr.ird.observe.services.DataSourceResource; -import fr.ird.observe.services.ObserveDataSourceConnectionTopiaTaiste; -import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.junit.Assert; -import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; -import org.nuiton.util.FileUtil; -import java.io.File; -import java.nio.file.Files; import java.util.Date; /** - * @author Sylvain Bavencoff - bavencoff@codelutin.com + * Created on 26/12/15. + * + * @author Tony Chemit - chemit@codelutin.com */ -public abstract class AbstractServiceTopiaTest { +public class AbstractServiceTopiaTest { + + public static final String OLD_VERSION = "4.0.1"; + + public static final String DEFAULT_VERSION = "5.0-2"; public static final String TRIP_SEINE_ID_1 = "fr.ird.observe.entities.seine.TripSeine#1359167789871#0.6765335978809843"; @@ -61,83 +33,33 @@ public abstract class AbstractServiceTopiaTest { public static final String PROGRAM_ID = "fr.ird.observe.entities.referentiel.Program#1239832686262#0.31033946454061234"; + @ClassRule public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); - private static final Log log = LogFactory.getLog(AbstractServiceTopiaTest.class); - - protected AbstractServiceTopiaTest(String scriptName, String... testNamesChangeDataBase) { - this.scriptName = scriptName; - this.testNamesChangeDataBase = testNamesChangeDataBase; - this.dataSourceResource = new DataSourceResource(applicationContextResource, this.scriptName, this.testNamesChangeDataBase); - } - - private final String scriptName; - - private final String[] testNamesChangeDataBase; - @Rule - public final DataSourceResource dataSourceResource; - - protected DataSourceResource newDataSourceResource(String scriptName, String... testNamesChangeDataBase) { - return new DataSourceResource(applicationContextResource, scriptName, testNamesChangeDataBase); - } - @Before - public void setUp() throws Exception { - - File dataBaseDirectory = applicationContextResource.getDataBaseDirectory(); - - if (!dataBaseDirectory.isDirectory()) { - - File dataBaseCommonRefDirectory = applicationContextResource.getDataBaseCommonRefDirectory(); - - if (!dataBaseCommonRefDirectory.isDirectory()) { - - if (log.isInfoEnabled()) { - log.info("create Database on " + dataBaseDirectory + " from script " + scriptName); - } - - Files.createDirectories(dataBaseDirectory.toPath()); - - // Create database from script - String scriptPath = applicationContextResource.getScriptPath(scriptName, H2DataSourceMigration.V_4_0_1); - - dataSourceResource.createCommonsDataSourceFromScript(scriptPath); - } - - if (!dataBaseCommonRefDirectory.equals(dataBaseDirectory)) { - - FileUtil.copyAndRenameRecursively(dataBaseCommonRefDirectory, dataBaseDirectory, false, (String) null, (String) null, false); - - } + public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource); + protected Date getLastUpdate(Class entityType) { + try (ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext()) { + return persistenceContext.getLastUpdate(entityType); } } - public <S extends ObserveService> S newService(Class<S> serviceType) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { - - ObserveDataSourceConnection dataSourceConnection = dataSourceResource.getDataSourceConnection(); - - if (dataSourceConnection == null) { - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); - - DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); - - dataSourceConnection = dataSourceService.open(dataSourceConfiguration); - - dataSourceConnection = new ObserveDataSourceConnectionTopiaTaiste(dataSourceConnection.getAuthenticationToken()); + protected void loadReferenceSets(ReferentialService referentialService, Form<?> form) { + dataSourceResource.getReferentialCache().loadReferenceSets(referentialService, form.getReferentialReferenceSetsRequestName()); + } - dataSourceResource.setDataSourceConnection(dataSourceConnection); - } + protected <R extends ReferentialDto> ReferentialReference<R> getReference(Class<R> type, int index) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { - S service = applicationContextResource.newService(dataSourceConnection, serviceType); + ReferentialService referentialService = dataSourceResource.newService(ReferentialService.class); + ReferentialReferenceSet<R> referentialReferenceSet = dataSourceResource.getReferentialCache().getReferentialReferenceSet(referentialService, type); + ReferentialReference<R> reference = referentialReferenceSet.getReferenceByPosition(index); + return reference; - return service; } - protected void assertEntityEqualsReferenceDto(ObserveEntity entity, ReferentialReference referenceDto) { if (entity == null) { Assert.assertNull(referenceDto); @@ -156,24 +78,4 @@ public abstract class AbstractServiceTopiaTest { } - protected Date getLastUpdate(Class entityType) { - ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext(); - AbstractObserveTopiaDao dao = (AbstractObserveTopiaDao) persistenceContext.getDao(entityType); - return dao.getLastUpdateDate(); - - } - - protected void loadReferenceSets(ReferentialService referentialService, Form<?> form) { - dataSourceResource.getReferentialCache().loadReferenceSets(referentialService, form.getReferentialReferenceSetsRequestName()); - } - - protected <R extends ReferentialDto> ReferentialReference<R> getReference(Class<R> type, int index) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { - - ReferentialService referentialService = newService(ReferentialService.class); - ReferentialReferenceSet<R> referentialReferenceSet = dataSourceResource.getReferentialCache().getReferentialReferenceSet(referentialService, type); - ReferentialReference<R> reference = referentialReferenceSet.getReferenceByPosition(index); - return reference; - - } - } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceDumpProducerServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceDumpProducerServiceTopiaTest.java index 6f69f91..4d89b4c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceDumpProducerServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceDumpProducerServiceTopiaTest.java @@ -23,33 +23,28 @@ package fr.ird.observe.services.service; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import java.io.File; - /** * Created on 26/08/15. * * @author Tony Chemit - chemit@codelutin.com - * FIXME IT tests + * FIXME IT tests */ @Ignore +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class DataSourceDumpProducerServiceTopiaTest extends AbstractServiceTopiaTest { protected DataSourceDumpProducerService service; - public DataSourceDumpProducerServiceTopiaTest() { - super("dataForTestSeine"); - } - @Before public void setUp() throws Exception { - - super.setUp(); - service = newService(DataSourceDumpProducerService.class); + service = dataSourceResource.newService(DataSourceDumpProducerService.class); } @Test diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java index 5a811df..d62bd99 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java @@ -25,8 +25,8 @@ package fr.ird.observe.services.service; import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.entities.migration.H2DataSourceMigration; -import fr.ird.observe.services.ApplicationContextResource; -import fr.ird.observe.services.DataSourceResource; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.ObserveTopiaApplicationContextFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; @@ -34,13 +34,13 @@ import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.referential.GearDto; +import fr.ird.observe.test.DatabaseName; +import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Ignore; -import org.junit.Rule; import org.junit.Test; import java.io.File; @@ -54,25 +54,12 @@ import java.util.Date; * FIXME IT tests */ @Ignore -public class DataSourceServiceTopiaTest { - - @ClassRule - public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); - - public static final String[] TEST_NAMES_CHANGE_DATA_BASE = new String[]{ - "testOpenNotExistingDatabase", - "testOpen", - "testCreateEmptyDataSource", - "testCreateDataSourceFromImportDatabase", - "testCreateDataSourceFromImportReferential", - "testCreateDataSourceFromImportReferentialAndData"}; +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataSourceTest, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) +public class DataSourceServiceTopiaTest extends AbstractServiceTopiaTest { /** Logger. */ private static final Log log = LogFactory.getLog(DataSourceServiceTopiaTest.class); - @Rule - public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource, "dataSourceTest", TEST_NAMES_CHANGE_DATA_BASE); - protected DataSourceService service; @Before @@ -84,6 +71,7 @@ public class DataSourceServiceTopiaTest { } + @DataSourceResourceConfiguration(useSharedDatabase = false) @Test(expected = DatabaseNotFoundException.class) public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { @@ -169,6 +157,7 @@ public class DataSourceServiceTopiaTest { } + @DataSourceResourceConfiguration(useSharedDatabase = false) @Test public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { @@ -181,12 +170,13 @@ public class DataSourceServiceTopiaTest { } + @DataSourceResourceConfiguration(useSharedDatabase = false) @Test public void testCreateDataSourceFromImportDatabase() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { String scriptPath = applicationContextResource.getScriptPath("referentiel", H2DataSourceMigration.V_4_0); - byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(scriptPath); + byte[] dumpContent = TestHelper.getResourceContent(scriptPath); ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); @@ -197,6 +187,7 @@ public class DataSourceServiceTopiaTest { } + @DataSourceResourceConfiguration(useSharedDatabase = false) @Test public void testCreateDataSourceFromImportReferential() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { @@ -209,7 +200,7 @@ public class DataSourceServiceTopiaTest { DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setImportReferentialDataSourceConfiguration(dataSourceConfiguration); - ObserveDataSourceConfigurationTopiaH2 createdDatabaseDataSourceConfiguration = applicationContextResource.createDataSourceConfigurationH2(getClass(), "resultDatabase"); + ObserveDataSourceConfigurationTopiaH2 createdDatabaseDataSourceConfiguration = dataSourceResource.createDataSourceConfigurationH2(getClass(), "resultDatabase"); DataSourceService dataSourceService = applicationContextResource.newService(createdDatabaseDataSourceConfiguration, DataSourceService.class); @@ -220,6 +211,7 @@ public class DataSourceServiceTopiaTest { } + @DataSourceResourceConfiguration(useSharedDatabase = false) @Test public void testCreateDataSourceFromImportReferentialAndData() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { @@ -233,7 +225,7 @@ public class DataSourceServiceTopiaTest { dataSourceCreateConfiguration.setImportReferentialDataSourceConfiguration(dataSourceConfiguration); dataSourceCreateConfiguration.setImportDataConfiguration(dataSourceConfiguration, ImmutableSet.of(AbstractServiceTopiaTest.TRIP_SEINE_ID_1)); - ObserveDataSourceConfigurationTopiaH2 createdDatabaseDataSourceConfiguration = applicationContextResource.createDataSourceConfigurationH2(getClass(), "resultDatabase"); + ObserveDataSourceConfigurationTopiaH2 createdDatabaseDataSourceConfiguration = dataSourceResource.createDataSourceConfigurationH2(getClass(), "resultDatabase"); DataSourceService dataSourceService = applicationContextResource.newService(createdDatabaseDataSourceConfiguration, DataSourceService.class); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java index e910486..dd2b991 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java @@ -1,21 +1,18 @@ package fr.ird.observe.services.service; -import com.google.common.base.Preconditions; -import fr.ird.observe.services.ApplicationContextResource; -import fr.ird.observe.services.DataSourceResource; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.test.DatabaseName; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.junit.ClassRule; import org.junit.Ignore; -import org.junit.Rule; import org.junit.Test; import java.io.File; import java.io.IOException; -import java.net.URL; import java.nio.file.Files; /** @@ -24,53 +21,48 @@ import java.nio.file.Files; * @author Tony Chemit - chemit@codelutin.com */ @Ignore -public class MigrateTestsDatabases { - - @ClassRule - public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); - - public static final String FROM_VERSION = "4.0.1"; - - public static final String TO_VERSION = "5.0"; +@ApplicationContextResourceConfiguration(dbVersion = MigrateTestsDatabases.FROM_VERSION) +public class MigrateTestsDatabases extends AbstractServiceTopiaTest { /** Logger. */ private static final Log log = LogFactory.getLog(MigrateTestsDatabases.class); - @Rule - public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource, "taiste"); + public static final String FROM_VERSION = "4.0.1"; + + public static final String TO_VERSION = "5.0-2"; + @DataSourceResourceConfiguration(dbName = DatabaseName.referentiel) @Test public void migrateReferentielDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - migrateReferentielDb(FROM_VERSION, TO_VERSION, "referentiel"); + migrateReferentielDb(TO_VERSION); } + @DataSourceResourceConfiguration(dbName = DatabaseName.dataForTestSeine) @Test public void migrateDataForTestSeineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - migrateReferentielDb(FROM_VERSION, TO_VERSION, "dataForTestSeine"); + migrateReferentielDb(TO_VERSION); } + @DataSourceResourceConfiguration(dbName = DatabaseName.dataForTestLongline) @Test public void migrateDataForTestLonglineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - migrateReferentielDb(FROM_VERSION, TO_VERSION, "dataForTestLongline"); + migrateReferentielDb(TO_VERSION); } - protected void migrateReferentielDb(String fromVersion, String toVersion, String databaseName) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + protected void migrateReferentielDb(String toVersion) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - String sqlFilename = databaseName + ".sql.gz"; - String scriptPath = "/db/" + fromVersion + "/" + sqlFilename; + String dbName = dataSourceResource.getDbName(); + File databasesRootDirectory = dataSourceResource.getDataSourceConfiguration().getDatabaseFile(); - URL url = getClass().getResource(scriptPath); - - Preconditions.checkNotNull(url, "Could not find database at " + scriptPath); - - File databasesRootDirectory = new File(url.getFile()); - - while (!"observe-test-data".equals(databasesRootDirectory.getName())) { + while (!"observe".equals(databasesRootDirectory.getName())) { databasesRootDirectory = databasesRootDirectory.getParentFile(); } + String sqlFilename = dbName + ".sql.gz"; + File f = databasesRootDirectory .toPath() + .resolve("observe-test-data") .resolve("src") .resolve("main") .resolve("resources") @@ -80,13 +72,11 @@ public class MigrateTestsDatabases { .toFile(); if (log.isInfoEnabled()) { - log.info("Will generate " + databaseName + " to " + f); + log.info("Will generate " + dbName + " to " + f); } Files.createDirectories(f.toPath().getParent()); - dataSourceResource.createDataSourceFromScript(scriptPath); - DataSourceDumpProducerService service = applicationContextResource.newService(dataSourceResource.getDataSourceConfiguration(), DataSourceDumpProducerService.class); byte[] allDataDump = service.getAllDataDump(); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java index 7791249..4960b6b 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java @@ -26,15 +26,20 @@ import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.binder.BinderEngine; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.test.DatabaseName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; @@ -46,6 +51,7 @@ import java.util.Date; * * @author Tony Chemit - chemit@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class ReferentialServiceTopiaTest extends AbstractServiceTopiaTest { /** Logger. */ @@ -53,15 +59,10 @@ public class ReferentialServiceTopiaTest extends AbstractServiceTopiaTest { protected ReferentialService service; - public ReferentialServiceTopiaTest() { - super("referentiel", "testDelete"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(ReferentialService.class); + service = dataSourceResource.newService(ReferentialService.class); } @@ -78,7 +79,10 @@ public class ReferentialServiceTopiaTest extends AbstractServiceTopiaTest { } + //FIXME En réutilisant une table de lastUpdateDate + @Ignore @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void testDelete() throws Exception { ObserveTopiaPersistenceContext tx = dataSourceResource.newPersistenceContext(); @@ -131,13 +135,13 @@ public class ReferentialServiceTopiaTest extends AbstractServiceTopiaTest { Assert.assertNotNull(form.getObject()); Assert.assertNotNull(form.getObject().getId()); - Date lastUpdateBefore = getLastUpdate(entityType); + Date lastUpdateBefore = persistenceContext.getLastUpdate(entityType); service.delete(dtoType, entity.getTopiaId()); Assert.assertEquals(expectedCount - 1, dao.count()); - Date lastUpdateAfter = getLastUpdate(entityType); + Date lastUpdateAfter = persistenceContext.getLastUpdate(entityType); Assert.assertNotEquals(lastUpdateBefore, lastUpdateAfter); try { diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataServiceTopiaTest.java index cfb845c..248859a 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataServiceTopiaTest.java @@ -24,8 +24,12 @@ package fr.ird.observe.services.service.actions.consolidate; import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import java.util.List; @@ -35,21 +39,18 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class ConsolidateDataServiceTopiaTest extends AbstractServiceTopiaTest { protected ConsolidateDataService service; - public ConsolidateDataServiceTopiaTest() { - super("dataForTestSeine", "testConsolidateTripSeines"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(ConsolidateDataService.class); + service = dataSourceResource.newService(ConsolidateDataService.class); } @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void testConsolidateTripSeines() throws Exception { ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext(); @@ -65,6 +66,5 @@ public class ConsolidateDataServiceTopiaTest extends AbstractServiceTopiaTest { //FIXME faire des asserts sur le résultat Assert.assertEquals(3, results.size()); - } } \ No newline at end of file diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java index 1c367fc..00b4414 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/report/AbstractReportServiceTopiaTest.java @@ -23,12 +23,14 @@ package fr.ird.observe.services.service.actions.report; import com.google.common.collect.Iterables; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.actions.report.DataMatrix; import fr.ird.observe.services.dto.actions.report.Report; import fr.ird.observe.services.dto.actions.report.ReportRequest; import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -50,6 +52,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 1.9 */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public abstract class AbstractReportServiceTopiaTest extends AbstractServiceTopiaTest { /** Logger */ @@ -63,18 +66,12 @@ public abstract class AbstractReportServiceTopiaTest extends AbstractServiceTopi /** Le report à tester. */ private Report report; - public AbstractReportServiceTopiaTest() { - super("dataForTestSeine"); - } - protected abstract String getReportId(); @Before public final void setUp() throws Exception { - super.setUp(); - - service = newService(ReportService.class); + service = dataSourceResource.newService(ReportService.class); // recuperation du report à tester report = getReport(log, getReportId()); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java index b651473..d6ddff8 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java @@ -24,29 +24,28 @@ package fr.ird.observe.services.service.actions.validate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.validator.NuitonValidatorScope; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { protected ValidateService service; - public ValidateServiceTopiaTest() { - super("dataForTestSeine"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(ValidateService.class); + service = dataSourceResource.newService(ValidateService.class); } @Test diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionServiceTopiaTest.java index 8708235..effc0a5 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/longline/SetLonglineDetailCompositionServiceTopiaTest.java @@ -26,6 +26,8 @@ import fr.ird.observe.entities.longline.Basket; import fr.ird.observe.entities.longline.Branchline; import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -39,29 +41,26 @@ import fr.ird.observe.services.dto.referential.longline.HookSizeDto; import fr.ird.observe.services.dto.referential.longline.HookTypeDto; import fr.ird.observe.services.dto.referential.longline.LineTypeDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.util.DateUtil; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestLongline, dbVersion = AbstractServiceTopiaTest.OLD_VERSION) public class SetLonglineDetailCompositionServiceTopiaTest extends AbstractServiceTopiaTest { protected SetLonglineDetailCompositionService service; public static final String SET_LONGLINE_ID = "fr.ird.observe.entities.longline.SetLongline#1429538714446#0.0876020351424813"; - public SetLonglineDetailCompositionServiceTopiaTest() { - super("dataForTestLongline", "saveTest"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - - service = newService(SetLonglineDetailCompositionService.class); + service = dataSourceResource.newService(SetLonglineDetailCompositionService.class); } @@ -93,6 +92,7 @@ public class SetLonglineDetailCompositionServiceTopiaTest extends AbstractServic } @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void saveTest() { Form<SetLonglineDetailCompositionDto> form = service.loadForm(SET_LONGLINE_ID); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTopiaTest.java index 7c9b507..64267f4 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTopiaTest.java @@ -22,29 +22,28 @@ package fr.ird.observe.services.service.seine; * #L% */ +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.util.DateUtil; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class RouteServiceTopiaTest extends AbstractServiceTopiaTest{ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) +public class RouteServiceTopiaTest extends AbstractServiceTopiaTest { protected RouteService service; - public RouteServiceTopiaTest() { - super("dataForTestSeine"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(RouteService.class); + service = dataSourceResource.newService(RouteService.class); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java index 952ea0a..8aaa1d8 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java @@ -22,30 +22,29 @@ package fr.ird.observe.services.service.seine; * #L% */ +import fr.ird.observe.test.ApplicationContextResourceConfiguration; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.seine.TargetSampleDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class TargetSampleServiceTopiaTest extends AbstractServiceTopiaTest { public static String SET_SEINE_ID = "fr.ird.observe.entities.seine.SetSeine#1359573677233#0.016313003525718517"; protected TargetSampleService service; - public TargetSampleServiceTopiaTest() { - super("dataForTestSeine"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(TargetSampleService.class); + service = dataSourceResource.newService(TargetSampleService.class); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineGearUseServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineGearUseServiceTopiaTest.java index be0e4fa..93134a6 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineGearUseServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineGearUseServiceTopiaTest.java @@ -26,6 +26,8 @@ import com.google.common.collect.Iterables; import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; import fr.ird.observe.entities.seine.GearUseFeaturesSeine; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.dto.seine.GearUseFeaturesMeasurementSeineDto; @@ -33,13 +35,16 @@ import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; import fr.ird.observe.services.dto.seine.TripSeineGearUseDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.topia.persistence.TopiaEntities; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class TripSeineGearUseServiceTopiaTest extends AbstractServiceTopiaTest { protected TripSeineGearUseService service; @@ -48,20 +53,12 @@ public class TripSeineGearUseServiceTopiaTest extends AbstractServiceTopiaTest { public static final String GEAR_USE_FEATURES_SEINE_ID = "fr.ird.observe.entities.seine.GearUseFeaturesSeine#1440486230661#0.42614931015885216"; - public TripSeineGearUseServiceTopiaTest() { - super("dataForTestSeine", "saveCreateTest", - "saveUpdateTest", - "deleteTest"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - - service = newService(TripSeineGearUseService.class); + service = dataSourceResource.newService(TripSeineGearUseService.class); - referentialService = newService(ReferentialService.class); + referentialService = dataSourceResource.newService(ReferentialService.class); } @@ -114,6 +111,7 @@ public class TripSeineGearUseServiceTopiaTest extends AbstractServiceTopiaTest { } @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void saveUpdateTest() { Form<TripSeineGearUseDto> form = service.loadForm(TRIP_SEINE_ID_1); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java index d3c2096..5b2400c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java @@ -23,6 +23,8 @@ package fr.ird.observe.services.service.seine; */ import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.test.ApplicationContextResourceConfiguration; +import fr.ird.observe.test.DataSourceResourceConfiguration; import fr.ird.observe.services.ObserveServiceContextTopiaTaiste; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; @@ -40,7 +42,10 @@ import fr.ird.observe.services.service.ConcurrentModificationException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.test.DatabaseName; import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.nuiton.util.DateUtil; @@ -50,25 +55,19 @@ import java.util.Date; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ +@ApplicationContextResourceConfiguration(dbName = DatabaseName.dataForTestSeine, dbVersion = AbstractServiceTopiaTest.DEFAULT_VERSION) public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { protected TripSeineService service; protected ReferentialService referentialService; - public TripSeineServiceTopiaTest() { - super("dataForTestSeine", "saveCreateTest", - "saveUpdateTest", - "deleteTest"); - } - - @Override + @Before public void setUp() throws Exception { - super.setUp(); - service = newService(TripSeineService.class); + service = dataSourceResource.newService(TripSeineService.class); - referentialService = newService(ReferentialService.class); + referentialService = dataSourceResource.newService(ReferentialService.class); } @@ -181,6 +180,7 @@ public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { } @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void saveCreateTest() throws BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { Form<TripSeineDto> form = service.preCreate(PROGRAM_ID); @@ -234,6 +234,7 @@ public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { } @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void saveUpdateTest() throws BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { Form<TripSeineDto> form = service.loadForm(TRIP_SEINE_ID_1); @@ -288,6 +289,7 @@ public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { } @Test(expected = ConcurrentModificationException.class) + @DataSourceResourceConfiguration(useSharedDatabase = false) public void saveConcurrentTest() throws BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { Form<TripSeineDto> form = service.loadForm(TRIP_SEINE_ID_1); @@ -314,7 +316,10 @@ public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { } + //FIXME En réutilisant une table de lastUpdateDate + @Ignore @Test + @DataSourceResourceConfiguration(useSharedDatabase = false) public void deleteTest() { Date lastUpdateBefore = getLastUpdate(TripSeine.class); diff --git a/observe-test-data/src/main/java/fr/ird/observe/test/ApplicationContextResourceConfiguration.java b/observe-test-data/src/main/java/fr/ird/observe/test/ApplicationContextResourceConfiguration.java new file mode 100644 index 0000000..9635276 --- /dev/null +++ b/observe-test-data/src/main/java/fr/ird/observe/test/ApplicationContextResourceConfiguration.java @@ -0,0 +1,28 @@ +package fr.ird.observe.test; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * To define how to load a datasource resource on a test class. + * + * Created on 25/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface ApplicationContextResourceConfiguration { + + /** + * @return version of database to use. + */ + String dbVersion() default ""; + + /** + * @return Name of database to use. + */ + DatabaseName dbName() default DatabaseName.referentiel; +} diff --git a/observe-test-data/src/main/java/fr/ird/observe/test/DataSourceResourceConfiguration.java b/observe-test-data/src/main/java/fr/ird/observe/test/DataSourceResourceConfiguration.java new file mode 100644 index 0000000..4356d07 --- /dev/null +++ b/observe-test-data/src/main/java/fr/ird/observe/test/DataSourceResourceConfiguration.java @@ -0,0 +1,36 @@ +package fr.ird.observe.test; + +import fr.ird.observe.test.DatabaseName; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * To define how to load a datasource resource on a test method. + * + * Created on 25/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface DataSourceResourceConfiguration { + + /** + * @return version of database to use. + */ + String dbVersion() default ""; + + /** + * @return Name of database to use. + */ + DatabaseName dbName() default DatabaseName.referentiel; + + /** + * return {@code true} to use the shared database, otherwise will + * use a copy of the shared database (mainly used when you modify a database). + */ + boolean useSharedDatabase() default true; +} diff --git a/observe-test-data/src/main/java/fr/ird/observe/test/DatabaseName.java b/observe-test-data/src/main/java/fr/ird/observe/test/DatabaseName.java new file mode 100644 index 0000000..289e554 --- /dev/null +++ b/observe-test-data/src/main/java/fr/ird/observe/test/DatabaseName.java @@ -0,0 +1,12 @@ +package fr.ird.observe.test; + +/** + * Created on 26/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum DatabaseName { + referentiel, + dataForTestLongline, + dataSourceTest, dataForTestSeine +} diff --git a/observe-test-data/src/main/java/fr/ird/observe/test/TestHelper.java b/observe-test-data/src/main/java/fr/ird/observe/test/TestHelper.java index 1c25d25..f4fc944 100644 --- a/observe-test-data/src/main/java/fr/ird/observe/test/TestHelper.java +++ b/observe-test-data/src/main/java/fr/ird/observe/test/TestHelper.java @@ -21,6 +21,9 @@ */ package fr.ird.observe.test; +import com.google.common.base.Preconditions; +import com.google.common.io.ByteStreams; +import com.google.common.io.Resources; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -34,6 +37,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Modifier; +import java.net.URL; import java.util.Date; import java.util.List; import java.util.Properties; @@ -68,6 +72,7 @@ public abstract class TestHelper { public static final char[] TEST_REMOTE_PASSWORD = "a".toCharArray(); protected static final String TEST_PROPERTIES_FILE_NAME = "observetest.properties"; + protected static final String MODEL_VERSION_PROPERTY_NAME = "observetest.model.version"; static private Long testsTimeStamp; @@ -206,22 +211,7 @@ public abstract class TestHelper { } public static File getTestDir(Class<?> testClass) { - if (testsBasedir == null) { - String tmp = System.getProperty("basedir"); - if (tmp == null) { - tmp = new File("").getAbsolutePath(); - } - basedir = new File(tmp); - String name = String.format(TEST_BASEDIR_PATTERN, - File.separator, - new Date(getTestsTimeStamp()) - ); - testsBasedir = new File(new File(tmp), name); - if (log.isInfoEnabled()) { - log.info("tests basedir : " + testsBasedir); - } - } - return new File(testsBasedir, testClass.getSimpleName()); + return new File(getTestsBasedir(), testClass.getSimpleName()); } public static File newFile(String name) { @@ -233,9 +223,28 @@ public abstract class TestHelper { } public static File getBasedir() { + if (basedir == null) { + String tmp = System.getProperty("basedir"); + if (tmp == null) { + tmp = new File("").getAbsolutePath(); + } + basedir = new File(tmp); + } return basedir; } + public static File getTestsBasedir() { + if (testsBasedir == null) { + + String name = String.format(TEST_BASEDIR_PATTERN, + File.separator, + new Date(getTestsTimeStamp()) + ); + testsBasedir = new File(getBasedir(), name); + } + return testsBasedir; + } + public static void initTest(Class<?> testClass) { TEST_BASEDIR = getTestDir(testClass); } @@ -283,5 +292,15 @@ public abstract class TestHelper { return version; } + public static byte[] getResourceContent(String scriptPath) throws IOException { + + URL url = TestHelper.class.getResource(scriptPath); + Preconditions.checkNotNull(url, "Could not find resource at: " + scriptPath); + try (InputStream inputStream = Resources.asByteSource(url).openStream()) { + byte[] dumpContent = ByteStreams.toByteArray(inputStream); + return dumpContent; + } + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.