You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by gk...@apache.org on 2019/12/20 15:17:46 UTC

svn commit: r1871864 - in /db/torque/torque4/trunk/torque-test: ./ src/test/java/org/apache/torque/junit5/extension/ src/test/java/org/apache/torque/testcontainer/ src/test/java/org/apache/torque/testcontainer/junit5/extension/ src/test/java/org/apache...

Author: gk
Date: Fri Dec 20 15:17:46 2019
New Revision: 1871864

URL: http://svn.apache.org/viewvc?rev=1871864&view=rev
Log:
- clean up
- split up database specific extension and configuration adapter (no inheritance)
- TODO replace old extension with new, last only used in DataContainerTest.java for mysql
- update postgresql
- add and prepare postgresql docker profile (not yet running any tests)

Added:
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension2.java
      - copied, changed from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java   (with props)
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java   (with props)
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerMySQLCallback.java
      - copied, changed from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallback.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java   (with props)
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/BeanConditionalContainerTest.java
      - copied, changed from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/BeanConditionalContainerTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/DataContainerTest.java
      - copied, changed from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/DataContainerTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/ManagerConditionalContainerTest.java
      - copied, changed from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/ManagerConditionalContainerTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java   (with props)
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml   (with props)
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/.dockerignore
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/Dockerfile
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/docker-java.properties.template
    db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties   (with props)
Removed:
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/BeanConditionalContainerTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/DataContainerTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/ManagerConditionalContainerTest.java
Modified:
    db/torque/torque4/trunk/torque-test/pom.xml
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/junit5/extension/HostCallbackExtension.java

Modified: db/torque/torque4/trunk/torque-test/pom.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/pom.xml?rev=1871864&r1=1871863&r2=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/pom.xml (original)
+++ db/torque/torque4/trunk/torque-test/pom.xml Fri Dec 20 15:17:46 2019
@@ -56,8 +56,9 @@
     <torque.test.mysql.version>8.0.18</torque.test.mysql.version><!-- 5.1.48 , 8.0.18-->
     <torque.test.mysql.log4j2.version>2.12.1</torque.test.mysql.log4j2.version>
     <torque.test.oracle.version>10.2.0.3.0</torque.test.oracle.version>
-    <torque.test.postgres.version>9.1-901.jdbc4</torque.test.postgres.version>
-    <torque.test.testcontainer.version>1.12.3</torque.test.testcontainer.version>
+    <torque.test.postgres.jdbc.version>42.2.9</torque.test.postgres.jdbc.version><!-- 9.1-901.jdbc4, -->
+    <torque.test.postgres.version>12.1</torque.test.postgres.version>
+    <torque.test.testcontainer.version>1.12.4</torque.test.testcontainer.version>
     <!-- -->
     <torque.test.idmethod>native</torque.test.idmethod>
   </properties>
@@ -950,6 +951,13 @@
         <torque.database.password>torque</torque.database.password>
         <torque.database.shutdown.url>none</torque.database.shutdown.url>
         <torque.database.shutdown.skip>true</torque.database.shutdown.skip>
+        <docker.database.port>3306</docker.database.port>
+        <docker.image.name>mysql</docker.image.name>
+        <docker.image.version>${torque.test.mysql.version}</docker.image.version>
+        <docker.env.MYSQL_ROOT_PASSWORD>${torque.database.password}</docker.env.MYSQL_ROOT_PASSWORD>
+        <docker.env.MYSQL_DATABASE>bookstore</docker.env.MYSQL_DATABASE>
+        <docker.env.MYSQL_USER>${torque.database.user}</docker.env.MYSQL_USER>
+        <docker.env.MYSQL_PASSWORD>${torque.database.password}</docker.env.MYSQL_PASSWORD>
       </properties>
       <dependencies>
         <dependency>
@@ -964,6 +972,12 @@
           <version>${torque.test.mysql.log4j2.version}</version>
           <scope>runtime</scope>
         </dependency>
+         <dependency>
+           <groupId>org.testcontainers</groupId>
+           <artifactId>mysql</artifactId>
+           <version>${torque.test.testcontainer.version}</version>
+           <scope>test</scope>
+        </dependency>
       </dependencies>
       <build>
         <plugins>
@@ -1136,14 +1150,26 @@
         <torque.database.password>torque</torque.database.password>
         <torque.database.shutdown.url>none</torque.database.shutdown.url>
         <torque.database.shutdown.skip>true</torque.database.shutdown.skip>
+        <docker.database.port>5432</docker.database.port>
+        <docker.image.name>postgres</docker.image.name>
+        <docker.image.version>${torque.test.postgres.version}</docker.image.version>
+        <docker.env.POSTGRES_DB>bookstore</docker.env.POSTGRES_DB>
+        <docker.env.POSTGRES_USER>${torque.database.user}</docker.env.POSTGRES_USER>
+        <docker.env.POSTGRES_PASSWORD>${torque.database.password}</docker.env.POSTGRES_PASSWORD>
       </properties>
       <dependencies>
         <dependency>
+          <groupId>org.postgresql</groupId>
           <artifactId>postgresql</artifactId>
-          <groupId>postgresql</groupId>
-          <version>${torque.test.postgres.version}</version>
+          <version>${torque.test.postgres.jdbc.version}</version>
           <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>${torque.test.testcontainer.version}</version>
+            <scope>test</scope>
+        </dependency>
       </dependencies>
       <build>
         <plugins>
@@ -1152,9 +1178,9 @@
             <artifactId>sql-maven-plugin</artifactId>
             <dependencies>
               <dependency>
-                <artifactId>postgresql</artifactId>
-                <groupId>postgresql</groupId>
-                <version>${torque.test.postgres.version}</version>
+                 <groupId>org.postgresql</groupId>
+          <artifactId>postgresql</artifactId>
+          <version>${torque.test.postgres.jdbc.version}</version>
               </dependency>
             </dependencies>
           </plugin>
@@ -1162,9 +1188,9 @@
             <artifactId>maven-antrun-plugin</artifactId>
             <dependencies>
               <dependency>
-                <artifactId>postgresql</artifactId>
-                <groupId>postgresql</groupId>
-                <version>${torque.test.postgres.version}</version>
+                 <groupId>org.postgresql</groupId>
+                 <artifactId>postgresql</artifactId>
+                 <version>${torque.test.postgres.jdbc.version}</version>
               </dependency>
             </dependencies>
           </plugin>
@@ -1178,7 +1204,7 @@
     
     mvnDebug -Pmysql,docker-testcontainer,managers,beans clean test -Dtest=DataContainerTest#testLikeClauseEscaping
     
-    The following test call will fail, although database will be generated  (prepare-mysql-databas) but docker is not initialized in the unit test as second step:
+    The following test call will fail, although database will be generated  (prepare-..-database), but docker is not initialized in the unit test as second step:
     mvnDebug -Pmysql,docker-testcontainer,managers,beans clean test -Dtest=DataTest#testLikeClauseEscaping
     
     -->
@@ -1197,11 +1223,11 @@
                 <artifactId>docker-maven-plugin</artifactId>
                 <version>0.30.0</version>
                 <configuration>
-                    <filter>mysql:${torque.test.mysql.version}</filter>
+                    <filter>${docker.image.name}:${docker.image.version}</filter>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>prepare-mysql-database</id>
+                        <id>prepare-${docker.image.name}-database</id>
                         <phase>initialize</phase>
                         <goals>
                             <goal>start</goal>
@@ -1210,19 +1236,14 @@
                             <!-- may set it here environment variables: dockerhost, .. -->
                             <images>
                                 <image>
-                                    <name>mysql:${torque.test.mysql.version}</name>
-                                    <alias>mysql-generate-helper-database</alias>
+                                    <name>${docker.image.name}:${docker.image.version}</name>
+                                    <alias>${docker.image.name}-generate-helper-database</alias>
                                     <run>
-                                         <env>
-                                            <MYSQL_ROOT_PASSWORD>${torque.database.password}</MYSQL_ROOT_PASSWORD>
-                                            <MYSQL_DATABASE>bookstore</MYSQL_DATABASE>
-                                            <MYSQL_USER>${torque.database.user}</MYSQL_USER>
-                                            <MYSQL_PASSWORD>${torque.database.password}</MYSQL_PASSWORD>
-                                        </env>
+                                        <!-- setting env in database profiles  env.docker -->
                                         <!-- this is too late for reading GLOBAL env DOCKER_HOST -> issue of the plugin?  -->
                                         <!--envPropertyFile>${project.basedir}/src/test/profile/mysql/docker-resources/docker-java.properties</envPropertyFile-->
                                         <ports>
-                                            <port>3306:3306</port>
+                                            <port>${docker.database.port}:${docker.database.port}</port>
                                         </ports>
                                         <!--wait>
                                             <log>database system is ready to accept connections.</log>
@@ -1235,7 +1256,7 @@
                     </execution>
                     <!-- close this init generate sources database outside tests, before starting tests -->
                     <execution>
-                        <id>remove-mysql-database</id>
+                        <id>remove-docker-database</id>
                         <phase>process-classes</phase>
                         <goals>
                             <goal>stop</goal>
@@ -1300,7 +1321,7 @@
                     <outputDirectory>${basedir}/target</outputDirectory>
                     <resources>
                       <resource>
-                        <directory>src/test/profile/mysql/docker-resources/db</directory>
+                        <directory>src/test/profile/${torque.test.profileDirectory}/docker-resources/db</directory>
                         <filtering>false</filtering>
                         <includes>
                             <include>Dockerfile</include>
@@ -1320,7 +1341,7 @@
                     <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                     <resources>
                       <resource>
-                        <directory>src/test/profile/mysql/docker-resources</directory>
+                        <directory>src/test/profile/${torque.test.profileDirectory}/docker-resources</directory>
                         <filtering>false</filtering>
                         <includes>
                             <include>docker-java.properties</include>
@@ -1345,7 +1366,7 @@
                     <exclude>**/junit5/extension/**</exclude>
                 </excludes>
                 <includes>
-                     <include>**/testcontainer/**</include>
+                     <include>**/testcontainer/${torque.test.profileDirectory}/**</include>
                 </includes>
                 <!--groups>DockerCallback</groups-->
               </configuration>
@@ -1373,12 +1394,6 @@
             <version>${torque.test.testcontainer.version}</version>
             <scope>test</scope>
           </dependency>
-          <dependency>
-              <groupId>org.testcontainers</groupId>
-              <artifactId>mysql</artifactId>
-              <version>${torque.test.testcontainer.version}</version>
-              <scope>test</scope>
-          </dependency>
       </dependencies>
     </profile>
 

Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/junit5/extension/HostCallbackExtension.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/junit5/extension/HostCallbackExtension.java?rev=1871864&r1=1871863&r2=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/junit5/extension/HostCallbackExtension.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/junit5/extension/HostCallbackExtension.java Fri Dec 20 15:17:46 2019
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.LogManag
 import org.apache.logging.log4j.Logger;
 import org.apache.torque.Torque;
 import org.apache.torque.adapter.Adapter;
-import org.apache.torque.testcontainer.junit5.extension.DockerCallbackExtension;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ConditionEvaluationResult;
 import org.junit.jupiter.api.extension.ExecutionCondition;
@@ -51,8 +50,6 @@ public class HostCallbackExtension imple
 
     protected static Adapter defaultAdapter;
 
-    public static Namespace NS = Namespace.create(DockerCallbackExtension.class);
-
     public boolean skip = true;
 
     private static final ConditionEvaluationResult ENABLED_BY_DEFAULT = enabled(

Copied: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension2.java (from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension2.java?p2=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension2.java&p1=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension.java&r1=1870878&r2=1871864&rev=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackExtension2.java Fri Dec 20 15:17:46 2019
@@ -19,18 +19,19 @@ package org.apache.torque.testcontainer.
  * specific language governing permissions and limitations
  * under the License.
  */
-
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.extension.ConditionEvaluationResult.enabled;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.AnnotationFormatError;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
 import org.apache.commons.configuration2.CombinedConfiguration;
-import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.PropertiesConfiguration;
 import org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder;
 import org.apache.commons.configuration2.builder.fluent.Parameters;
@@ -41,54 +42,53 @@ import org.apache.logging.log4j.Logger;
 import org.apache.torque.Torque;
 import org.apache.torque.TorqueException;
 import org.apache.torque.adapter.Adapter;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
 import org.junit.jupiter.api.extension.ConditionEvaluationResult;
 import org.junit.jupiter.api.extension.ExecutionCondition;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.wait.strategy.Wait;
-import org.testcontainers.images.builder.ImageFromDockerfile;
-import org.testcontainers.junit.jupiter.Container;
-import org.testcontainers.junit.jupiter.Testcontainers;
 
 /**
- * Testcontainer configuration
+ * Docker Test configuration
  * 
  * @author gk
  *
  */
-@Testcontainers
-public class DockerCallbackExtension implements BeforeAllCallback, BeforeTestExecutionCallback, ExecutionCondition {
 
-    private static final String DEFAULT_TEST_PROFILE_TORQUE4_TEST_XML = "src/test/profile/%s/Torque4Test.xml";
+public class DockerCallbackExtension2 /*extends DockerCallbackMySQLExtension*/ implements BeforeAllCallback, BeforeTestExecutionCallback, ExecutionCondition {
 
-    private static final String TORQUE_WRAPPER_CONFIG_SYSTEM_PROPERTY = "torque.wrapper.configuration.file";
+    protected static final String DEFAULT_TEST_PROFILE_TORQUE4_TEST_XML = "src/test/profile/%s/Torque4Test.xml";
 
-    // copied from src/test/profile/mysql/docker-resources/db/
-    private static final String DOCKERFILE = "./target/Dockerfile";
+    protected static final String TORQUE_WRAPPER_CONFIG_SYSTEM_PROPERTY = "torque.wrapper.configuration.file";
 
     private static Logger log = LogManager.getLogger();
 
-    private static int SERVICE_PORT = 3306;
-
-    private static String DATABASE_NAME = "bookstore";
-
+    protected static int SERVICE_PORT = 3306;
     protected static Adapter defaultAdapter;
-
-    public static Namespace NS = Namespace.create(DockerCallbackExtension.class);
-
-    private static final ConditionEvaluationResult ENABLED_BY_DEFAULT = enabled(
+    
+    String adapterProfileFallback;
+    
+    String customUrlKey;
+    
+    String targetConfigName;
+    
+    String targetFileName;
+    
+    boolean skipConfigurationCheck = false;
+    
+    protected static final ConditionEvaluationResult ENABLED_BY_DEFAULT = enabled(
             "DockerCallbackExtension is enabled by default - checking internal state only");
-
-    @Container
-    public static GenericContainer MY_SQL_CONTAINER = new GenericContainer<>(
-            new ImageFromDockerfile().withDockerfile(new File(DOCKERFILE).toPath())).withExposedPorts(SERVICE_PORT) 
-                    .withEnv("MYSQL_DATABASE", DATABASE_NAME).withEnv("MYSQL_USER", "torque")
-                    .withEnv("MYSQL_PASSWORD", "torque").withEnv("MYSQL_ROOT_PASSWORD", "torque");
-
-    @Override
+    
+    public DockerCallbackExtension2() {
+     
+    }
+    
+    public DockerCallbackExtension2(String adapterProfileFallback)  {
+        this.adapterProfileFallback =adapterProfileFallback;
+    }
+    
     public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
         String actual = System.getProperty("torque.callback");
         if (actual == null) {
@@ -98,27 +98,54 @@ public class DockerCallbackExtension imp
         }
         return ENABLED_BY_DEFAULT;
     }
-
-    @Override
+ 
+    /**
+     * calls first super{@link #beforeAll(ExtensionContext)}
+     * 
+     * @see BeforeAll
+     */
     public void beforeAll(ExtensionContext context) throws Exception {
-        // log.info("starting call context "+ context);
-
-        init(context);
-        context.getStore(NS).put("container", MY_SQL_CONTAINER);
-        context.getStore(Namespace.GLOBAL).put("adapter", defaultAdapter);
+        Annotation[] annots = context.getTestClass().get().getAnnotations();
+        log.info("found and get context.getTestClass(): {}", context.getTestClass());
+        for (Annotation annot : annots) {
+            if (annot instanceof DockerMySQLCallback) {         
+                log.warn("found and get: {}", DockerMySQLCallback.class);
+                skipConfigurationCheck = getDockerMySQLCallback(annot).skipConfigurationCheck();
+                customUrlKey = getDockerMySQLCallback(annot).customUrlKey();
+                targetConfigName = getDockerMySQLCallback(annot).targetConfigName();
+                targetFileName = getDockerMySQLCallback(annot).targetFileName();
+                adapterProfileFallback = getDockerMySQLCallback(annot).adapterProfileFallback();
+            } else if (annot instanceof DockerPostGresCallback) {
+                log.warn("found and get: {}", DockerPostGresCallback.class);
+                skipConfigurationCheck = getDockerPostGresCallback(annot).skipConfigurationCheck();
+                customUrlKey = getDockerPostGresCallback(annot).customUrlKey();
+                targetConfigName = getDockerPostGresCallback(annot).targetConfigName();
+                targetFileName = getDockerPostGresCallback(annot).targetFileName();
+                adapterProfileFallback = getDockerPostGresCallback(annot).adapterProfileFallback();
+            }
+        }
+        //Class<?> clazz = context.getRequiredTestClass();
+        //DockerMySQLCallback dockerCallback = clazz.getAnnotation(DockerMySQLCallback.class );
+        //Annotation dockerCallback = (Annotation) context.getStore(Namespace.GLOBAL).get("annotatedClass");
+        init(context);   
+    }
+    
+    public DockerMySQLCallback getDockerMySQLCallback(Annotation annot) {
+        return (DockerMySQLCallback)annot;
     }
 
+    public DockerPostGresCallback getDockerPostGresCallback(Annotation annot) {
+        return (DockerPostGresCallback)annot;
+    }
+    
     @Override
     public void beforeTestExecution(ExtensionContext context) throws Exception {
         // log.info("starting call test context "+ context);
     }
-
-    private void init(ExtensionContext context)
+    
+    protected void init(ExtensionContext context)
             throws TorqueException, UnsupportedOperationException, IOException, InterruptedException {
-        log.info("Starting from dockerfile: {}", DOCKERFILE);
-        // before torque init
-        MY_SQL_CONTAINER.setStartupAttempts(3);
-        startDatabaseContainer();
+
         // TODO do resource filtering and read from properties
         String filePath = System.getProperty(TORQUE_WRAPPER_CONFIG_SYSTEM_PROPERTY);
         if (filePath == null) {
@@ -130,10 +157,11 @@ public class DockerCallbackExtension imp
             log.warn("Could not resolve system env/property: {}, using default: {}",
                     TORQUE_WRAPPER_CONFIG_SYSTEM_PROPERTY, filePath);
         }
+        log.info("resolved filePath: {}", filePath);
         File targetFile = new File(filePath);
         Path torqueConfBase = Paths.get(targetFile.toURI()).getParent();
         
-        if (!getSkipConfigurationCheck(context)) {
+        if (!skipConfigurationCheck ) {
             CombinedConfigurationBuilder combinedBuilder = new CombinedConfigurationBuilder()
                     .configure(new Parameters().fileBased()
                             .setFileName(filePath)
@@ -141,64 +169,36 @@ public class DockerCallbackExtension imp
                    );
             try {
                 CombinedConfiguration cc = combinedBuilder.getConfiguration();
-                String targetConfigName = getTargetConfigName(context);
                 PropertiesConfiguration innerConfRef = (PropertiesConfiguration) cc.getConfiguration(targetConfigName);
                 assertTrue(innerConfRef != null, "Could not locate target configuration with config-namen: " + targetConfigName);
             } catch (ConfigurationException e) {
                log.error(e.getMessage(), e);
             }            
         }
-        String fileName =  getTargetFileName(context);
-        String customUrlKey = getCustomUrlKey(context);
-        updateTorque(torqueConfBase, fileName, customUrlKey);
+        String jdbcConnectionString = (String) context.getStore(Namespace.GLOBAL).get("jdbcConnectionString");
+        updateTorque(torqueConfBase, targetFileName, customUrlKey, jdbcConnectionString);
 
-        synchronized (DockerCallbackExtension.class) {
+        synchronized (DockerCallbackExtension2.class) {
             if (!Torque.isInit()) {
                 Torque.init(filePath);
             }
         }
         defaultAdapter = Torque.getDatabase(Torque.getDefaultDB()).getAdapter();
         log.info("using adapter: {}", defaultAdapter);
+        context.getStore(Namespace.GLOBAL).put("adapter", defaultAdapter);
 
     }
 
-    private String getDefaultTestProfileFallback(ExtensionContext context) {
-        Class<?> clazz = context.getRequiredTestClass();
-        DockerCallback dockerCallback = clazz.getAnnotation(DockerCallback.class);
-        String adapterProfile = dockerCallback.adapterProfileFallback();
-        if (adapterProfile == null) {
-            adapterProfile = "mysql";
+    private String getDefaultTestProfileFallback( ExtensionContext context ) {
+        if (adapterProfileFallback == null) {
+            throw new AnnotationFormatError("No profile is set. Set it in annotation DockerCallback with adapterProfileFallback" );
         }
-        return String.format(DEFAULT_TEST_PROFILE_TORQUE4_TEST_XML, adapterProfile);
-    }
-    
-    private String getCustomUrlKey(ExtensionContext context) {
-        Class<?> clazz = context.getRequiredTestClass();
-        DockerCallback dockerCallback = clazz.getAnnotation(DockerCallback.class);
-        return dockerCallback.customUrlKey();
-    }
-    
-    private String getTargetConfigName(ExtensionContext context) {
-        Class<?> clazz = context.getRequiredTestClass();
-        DockerCallback dockerCallback = clazz.getAnnotation(DockerCallback.class);
-        return dockerCallback.targetConfigName();
-    }
-    
-    private String getTargetFileName(ExtensionContext context) {
-        Class<?> clazz = context.getRequiredTestClass();
-        DockerCallback dockerCallback = clazz.getAnnotation(DockerCallback.class);
-        return dockerCallback.targetFileName();
+        return String.format(DEFAULT_TEST_PROFILE_TORQUE4_TEST_XML, adapterProfileFallback);
     }
     
-    private boolean getSkipConfigurationCheck(ExtensionContext context) {
-        Class<?> clazz = context.getRequiredTestClass();
-        DockerCallback dockerCallback = clazz.getAnnotation(DockerCallback.class);
-        return dockerCallback.skipConfigurationCheck();
-    }
-
-    private static void updateTorque(Path torqueConfBase, String fileName, String customUrlKey) {
+  
+    private void updateTorque(Path torqueConfBase, String fileName, String customUrlKey, String jdbcConnectionString) {
         try {
-            String jdbcConnectionString = generateJdbcUrl();
             String customUrl = customUrlKey+"=" + jdbcConnectionString;
             // override and set mapped port in url, which is known only at runtime.
             File file = torqueConfBase.resolve(fileName).toFile();
@@ -214,33 +214,4 @@ public class DockerCallbackExtension imp
         }
     }
 
-    private static void startDatabaseContainer() {
-        if (!MY_SQL_CONTAINER.isRunning()) {
-            MY_SQL_CONTAINER.waitingFor(Wait.forListeningPort());
-            MY_SQL_CONTAINER.start();
-        }
-    }
-
-    /**
-     * 
-     * @returns the JDBC string with mapped port binding
-     */
-    private static String generateJdbcUrl() {
-        startDatabaseContainer();
-        if (!MY_SQL_CONTAINER.isRunning()) {
-            throw new RuntimeException("Could not find RUNNING database container");
-        }
-
-        // MY_SQL_CONTAINER.withCreateContainerCmdModifier(modifier) //
-        String serviceHost = MY_SQL_CONTAINER.getContainerIpAddress();
-        Integer mappedPort = MY_SQL_CONTAINER.getMappedPort(SERVICE_PORT);// e.g. 32811
-        log.info("generate jdbc url from {}, mapped Port: {}, bounded port: {}", serviceHost, mappedPort,
-                MY_SQL_CONTAINER.getBoundPortNumbers());
-
-        String targetJDBC = // genJDBC;
-                String.format("jdbc:mysql://%s:%d/%s?loggerLevel=OFF", serviceHost, mappedPort, DATABASE_NAME);
-        log.info("used connect url: {}", targetJDBC);
-        return targetJDBC;
-    }
-
 }

Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java Fri Dec 20 15:17:46 2019
@@ -0,0 +1,124 @@
+package org.apache.torque.testcontainer.junit5.extension;
+
+
+import static org.junit.jupiter.api.extension.ConditionEvaluationResult.enabled;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.torque.TorqueException;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
+import org.junit.jupiter.api.extension.ConditionEvaluationResult;
+import org.junit.jupiter.api.extension.ExecutionCondition;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.images.builder.ImageFromDockerfile;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Testcontainer configuration
+ * 
+ * @author gk
+ *
+ */
+@Testcontainers
+public class DockerCallbackMySQLExtension implements BeforeAllCallback, BeforeTestExecutionCallback, ExecutionCondition {
+
+    private static Logger log = LogManager.getLogger();
+
+    private static int SERVICE_PORT = 3306;
+    
+    protected static String DATABASE_NAME = "bookstore";
+
+    // copied from src/test/profile/mysql/docker-resources/db/
+    protected static final String DOCKERFILE = "./target/Dockerfile";
+
+    protected static final ConditionEvaluationResult ENABLED_BY_DEFAULT = enabled(
+            "DockerCallbackExtension is enabled by default - checking internal state only");
+
+    @Container
+    public static GenericContainer DATABASE_CONTAINER = new GenericContainer<>(
+            new ImageFromDockerfile().withDockerfile(new File(DOCKERFILE).toPath())).withExposedPorts(SERVICE_PORT) 
+                    .withEnv("MYSQL_DATABASE", DATABASE_NAME).withEnv("MYSQL_USER", "torque")
+                    .withEnv("MYSQL_PASSWORD", "torque").withEnv("MYSQL_ROOT_PASSWORD", "torque");
+
+
+    public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
+        String actual = System.getProperty("torque.callback");
+        if (actual == null) {
+            actual = System.getenv("torque.callback");
+        }
+        if (actual != null && actual.matches("docker")) {
+        }
+        return ENABLED_BY_DEFAULT;
+    }
+    
+    @Override
+    public void beforeTestExecution(ExtensionContext context) throws Exception {
+        // log.info("starting call test context "+ context);
+    }
+    
+    /**
+     * Should be called first 
+     * @see BeforeAll
+     */
+    public void beforeAll(ExtensionContext context) throws Exception {
+        // log.info("starting call context "+ context);
+        dbInit(context);
+        String jdbcConnectionString = generateJdbcUrl();
+        context.getStore(Namespace.GLOBAL).put("jdbcConnectionString", jdbcConnectionString);
+        context.getStore(Namespace.GLOBAL).put("container", DATABASE_CONTAINER);
+        Class<?> clazz = context.getRequiredTestClass();
+        DockerMySQLCallback dockerCallback = clazz.getAnnotation(DockerMySQLCallback.class );
+        context.getStore(Namespace.GLOBAL).put("annotatedClass", dockerCallback);
+    }
+
+
+    private void dbInit(ExtensionContext context)
+            throws TorqueException, UnsupportedOperationException, IOException, InterruptedException {
+        log.info("Starting from dockerfile: {}", DOCKERFILE);
+        // before torque init
+        DATABASE_CONTAINER.setStartupAttempts(3);
+        startDatabaseContainer();
+        
+    }
+
+    private static void startDatabaseContainer() {
+        if (!DATABASE_CONTAINER.isRunning()) {
+            DATABASE_CONTAINER.waitingFor(Wait.forListeningPort());
+            DATABASE_CONTAINER.start();
+        }
+        if (!DATABASE_CONTAINER.isRunning()) {
+            throw new RuntimeException("Could not find RUNNING database container");
+        }
+    }
+
+    /**
+     * 
+     * @returns the JDBC string with mapped port binding
+     */
+    private static String generateJdbcUrl() {
+        startDatabaseContainer();
+        if (!DATABASE_CONTAINER.isRunning()) {
+            throw new RuntimeException("Could not find RUNNING database container");
+        }
+        // MY_SQL_CONTAINER.withCreateContainerCmdModifier(modifier) //
+        String serviceHost = DATABASE_CONTAINER.getContainerIpAddress();
+        Integer mappedPort = DATABASE_CONTAINER.getMappedPort(SERVICE_PORT);// e.g. 32811
+        log.info("generate jdbc url from {}, mapped Port: {}, bounded port: {}", serviceHost, mappedPort,
+                DATABASE_CONTAINER.getBoundPortNumbers());
+
+        String targetJDBC = // genJDBC;
+                String.format("jdbc:mysql://%s:%d/%s?loggerLevel=OFF", serviceHost, mappedPort, DATABASE_NAME);
+        log.info("used connect url: {}", targetJDBC);
+        return targetJDBC;
+    }
+
+}

Propchange: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackMySQLExtension.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java Fri Dec 20 15:17:46 2019
@@ -0,0 +1,121 @@
+package org.apache.torque.testcontainer.junit5.extension;
+
+
+import static org.junit.jupiter.api.extension.ConditionEvaluationResult.enabled;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.torque.TorqueException;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
+import org.junit.jupiter.api.extension.ConditionEvaluationResult;
+import org.junit.jupiter.api.extension.ExecutionCondition;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.images.builder.ImageFromDockerfile;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Testcontainer configuration
+ * 
+ * @author gk
+ *
+ */
+@Testcontainers
+public class DockerCallbackPostgreSQLExtension implements BeforeAllCallback, BeforeTestExecutionCallback, ExecutionCondition {
+
+
+    private static Logger log = LogManager.getLogger();
+
+    private static int SERVICE_PORT = 5432;
+    
+    protected static String DATABASE_NAME = "bookstore";
+
+    // copied from src/test/profile/mysql/docker-resources/db/
+    protected static final String DOCKERFILE = "./target/Dockerfile";
+
+    private static final ConditionEvaluationResult ENABLED_BY_DEFAULT = enabled(
+            "DockerCallbackExtension is enabled by default - checking internal state only");
+
+    @Container
+    public static GenericContainer DATABASE_CONTAINER = new GenericContainer<>(
+            new ImageFromDockerfile().withDockerfile(new File(DOCKERFILE).toPath())).withExposedPorts(SERVICE_PORT) 
+                    .withEnv("POSTGRES_DB", DATABASE_NAME).withEnv("POSTGRES_USER", "torque")
+                    .withEnv("POSTGRES_PASSWORD", "torque");
+    
+    @Override
+    public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
+        String actual = System.getProperty("torque.callback");
+        if (actual == null) {
+            actual = System.getenv("torque.callback");
+        }
+        if (actual != null && actual.matches("docker")) {
+        }
+        return ENABLED_BY_DEFAULT;
+    }
+
+
+    @Override
+    public void beforeAll(ExtensionContext context) throws Exception {
+        // log.info("starting call context "+ context);
+        dbInit(context);
+        String jdbcConnectionString = generateJdbcUrl();
+        context.getStore(Namespace.GLOBAL).put("jdbcConnectionString", jdbcConnectionString);
+        context.getStore(Namespace.GLOBAL).put("container", DATABASE_CONTAINER);
+        Class<?> clazz = context.getRequiredTestClass();
+        DockerMySQLCallback dockerCallback = clazz.getAnnotation(DockerMySQLCallback.class );
+        context.getStore(Namespace.GLOBAL).put("annotatedClass", dockerCallback);
+    }
+
+    @Override
+    public void beforeTestExecution(ExtensionContext context) throws Exception {
+        // log.info("starting call test context "+ context);
+    }
+
+    private void dbInit(ExtensionContext context)
+            throws TorqueException, UnsupportedOperationException, IOException, InterruptedException {
+        log.info("Starting from dockerfile: {}", DOCKERFILE);
+        // before torque init
+        DATABASE_CONTAINER.setStartupAttempts(3);
+        startDatabaseContainer();
+        
+    }
+
+    private static void startDatabaseContainer() {
+        if (!DATABASE_CONTAINER.isRunning()) {
+            DATABASE_CONTAINER.waitingFor(Wait.forListeningPort());
+            DATABASE_CONTAINER.start();
+        }
+        if (!DATABASE_CONTAINER.isRunning()) {
+            throw new RuntimeException("Could not find RUNNING database container");
+        }
+    }
+
+    /**
+     * 
+     * @returns the JDBC string with mapped port binding
+     */
+    private static String generateJdbcUrl() {
+        startDatabaseContainer();
+        if (!DATABASE_CONTAINER.isRunning()) {
+            throw new RuntimeException("Could not find RUNNING database container");
+        }
+
+        String serviceHost = DATABASE_CONTAINER.getContainerIpAddress();
+        Integer mappedPort = DATABASE_CONTAINER.getMappedPort(SERVICE_PORT);// e.g. 32811
+        log.info("generate jdbc url from {}, mapped Port: {}, bounded port: {}", serviceHost, mappedPort,
+                DATABASE_CONTAINER.getBoundPortNumbers());
+
+        String targetJDBC = // genJDBC;
+                String.format("jdbc:postgresql://%s:%d/%s", serviceHost, mappedPort, DATABASE_NAME);
+        log.info("used connect url: {}", targetJDBC);
+        return targetJDBC;
+    }
+
+}

Propchange: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallbackPostgreSQLExtension.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerMySQLCallback.java (from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallback.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerMySQLCallback.java?p2=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerMySQLCallback.java&p1=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallback.java&r1=1870878&r2=1871864&rev=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerCallback.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerMySQLCallback.java Fri Dec 20 15:17:46 2019
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 
 import org.apache.torque.junit5.extension.AdapterParameterResolver;
 import org.junit.jupiter.api.Tag;
-
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.testcontainers.junit.jupiter.Testcontainers;
 
@@ -41,18 +41,19 @@ import org.testcontainers.junit.jupiter.
  *
  */
 // may have ParameterizedTest in test class -> Possible configuration error
-@Tag("DockerCallback")
+@Tag("DockerMySQLCallback")
 @Inherited
+//@DockerCallback2(adapterProfileFallback="mysql")
 @Target( { ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE } )
 @Retention(RetentionPolicy.RUNTIME)
-@ExtendWith(DockerCallbackExtension.class)
 @ExtendWith(AdapterParameterResolver.class)
-//@EnabledIfEnvironmentVariable(named = "torque.callback", matches = "docker")
-public @interface DockerCallback {
-    String value() default "";
+@ExtendWith(DockerCallbackMySQLExtension.class)
+public @interface DockerMySQLCallback {
     
-    String adapterProfileFallback() default "hsqldb";
+    String value() default "";
     
+    String adapterProfileFallback() default "mysql";
+        
     String customUrlKey() default "torque.dsfactory.bookstore.connection.url";
     
     String targetConfigName() default "torqueuser";
@@ -61,5 +62,4 @@ public @interface DockerCallback {
     
     boolean skipConfigurationCheck() default false;
     
-    
 }

Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java Fri Dec 20 15:17:46 2019
@@ -0,0 +1,65 @@
+package org.apache.torque.testcontainer.junit5.extension;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.torque.junit5.extension.AdapterParameterResolver;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * {@code @DockerCallback} is used to signal that the annotated test class or
+ * test method is using Docker {@link Testcontainers} and Torque initialized accordingly.
+ * 
+ * It is currently enabled by overridign the default
+ * 
+ * @author gkallidis
+ *
+ */
+// may have ParameterizedTest in test class -> Possible configuration error
+@Tag("DockerPostGresCallback")
+@Inherited
+//@DockerCallback2(adapterProfileFallback="mysql")
+@Target( { ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE } )
+@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(AdapterParameterResolver.class)
+@ExtendWith(DockerCallbackPostgreSQLExtension.class)
+public @interface DockerPostGresCallback {
+    
+    String value() default "";
+    
+    String adapterProfileFallback() default "postgresql";
+        
+    String customUrlKey() default "torque.dsfactory.bookstore.connection.url";
+    
+    String targetConfigName() default "torqueuser";
+    
+    String targetFileName() default "torque.usersettings.properties";
+    
+    boolean skipConfigurationCheck() default false;
+    
+}

Propchange: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/junit5/extension/DockerPostGresCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/BeanConditionalContainerTest.java (from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/BeanConditionalContainerTest.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/BeanConditionalContainerTest.java?p2=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/BeanConditionalContainerTest.java&p1=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/BeanConditionalContainerTest.java&r1=1870878&r2=1871864&rev=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/BeanConditionalContainerTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/BeanConditionalContainerTest.java Fri Dec 20 15:17:46 2019
@@ -1,4 +1,4 @@
-package org.apache.torque.testcontainer;
+package org.apache.torque.testcontainer.mysql;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Copied: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/DataContainerTest.java (from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/DataContainerTest.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/DataContainerTest.java?p2=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/DataContainerTest.java&p1=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/DataContainerTest.java&r1=1870878&r2=1871864&rev=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/DataContainerTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/DataContainerTest.java Fri Dec 20 15:17:46 2019
@@ -1,4 +1,4 @@
-package org.apache.torque.testcontainer;
+package org.apache.torque.testcontainer.mysql;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +20,9 @@ package org.apache.torque.testcontainer;
  */
 
 import org.apache.torque.DataTest;
-import org.apache.torque.testcontainer.junit5.extension.DockerCallback;
+import org.apache.torque.testcontainer.junit5.extension.DockerCallbackExtension2;
+import org.apache.torque.testcontainer.junit5.extension.DockerMySQLCallback;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 /**
  * Docker adapter tests.
@@ -28,8 +30,13 @@ import org.apache.torque.testcontainer.j
  * @author <a href="mailto:gk@apache.org">Georg Kallidis</a>
  * @version $Id: DataTest.java 1869081 2019-10-28 16:17:11Z gk $
  */
-@DockerCallback(adapterProfileFallback="mysql")
+@DockerMySQLCallback
 public class DataContainerTest extends DataTest
 {
+    /**
+     * statically registered extensions are registered after extendwith extensions
+     */
+    @RegisterExtension
+    static DockerCallbackExtension2 dce = new DockerCallbackExtension2();
    
 }

Copied: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/ManagerConditionalContainerTest.java (from r1870878, db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/ManagerConditionalContainerTest.java)
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/ManagerConditionalContainerTest.java?p2=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/ManagerConditionalContainerTest.java&p1=db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/ManagerConditionalContainerTest.java&r1=1870878&r2=1871864&rev=1871864&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/ManagerConditionalContainerTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/mysql/ManagerConditionalContainerTest.java Fri Dec 20 15:17:46 2019
@@ -1,4 +1,4 @@
-package org.apache.torque.testcontainer;
+package org.apache.torque.testcontainer.mysql;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java Fri Dec 20 15:17:46 2019
@@ -0,0 +1,42 @@
+package org.apache.torque.testcontainer.postgresql;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.torque.DataTest;
+import org.apache.torque.testcontainer.junit5.extension.DockerCallbackExtension2;
+import org.apache.torque.testcontainer.junit5.extension.DockerPostGresCallback;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+/**
+ * Docker adapter tests.
+ *
+ * @author <a href="mailto:gk@apache.org">Georg Kallidis</a>
+ * @version $Id: DataTest.java 1869081 2019-10-28 16:17:11Z gk $
+ */
+@DockerPostGresCallback
+public class DataContainerTest extends DataTest
+{
+    /**
+     * statically registered extensions are registered after extendwith extensions
+     */
+    @RegisterExtension
+    static DockerCallbackExtension2 dce = new DockerCallbackExtension2();
+   
+}

Propchange: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/testcontainer/postgresql/DataContainerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml (added)
+++ db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml Fri Dec 20 15:17:46 2019
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!-- from the docs:  CombinedConfigurationBuilder takes care that properties defined in the first file (the user file) are found; other properties which the user has not changed will still be returned from the second file (the defaults file). -->
+
+<configuration>
+ <properties config-name="torqueuser" fileName="torque.usersettings.properties" config-optional="true" config-forceCreate="true"/> 
+ <properties config-name="torque" fileName="Torque.properties" throwExceptionOnMissing="true"/>
+</configuration>
\ No newline at end of file

Propchange: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/Torque4Test.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/.dockerignore
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/.dockerignore?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/.dockerignore (added)
+++ db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/.dockerignore Fri Dec 20 15:17:46 2019
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+*/tmp*
+*/*/tmp*
+tmp?
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/Dockerfile
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/Dockerfile?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/Dockerfile (added)
+++ db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/db/Dockerfile Fri Dec 20 15:17:46 2019
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM postgres:12.1
+
+COPY [ "./generated-createddb-sql/*", "./generated-sql/*", "/docker-entrypoint-initdb.d/" ] 
+
+ENV POSTGRES_DB ${POSTGRES_DB} 
+ENV POSTGRES_USER=${POSTGRES_USER} 
+ENV POSTGRES_PASSWORD=${POSTGRES_PASSWORD} 

Added: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/docker-java.properties.template
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/docker-java.properties.template?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/docker-java.properties.template (added)
+++ db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/docker-java.properties.template Fri Dec 20 15:17:46 2019
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This file should contain the environment variables as
+# further info here: https://www.testcontainers.org/supported_docker_environment/
+
+# UNIX by default uses unix sockets
+#DOCKER_HOST=unix:///var/run/docker.sock
+# to override default
+#DOCKER_TLS_VERIFY=0
+
+# WINDOWS uses external network, use only secure connection
+# docker.io might use username and password encrypted in ~/.docker/config.json
+# use result of 'docker-machine env <nameOfVirtualMachine>'
+#DOCKER_TLS_VERIFY=1
+#DOCKER_HOST=tcp://<hostip>:2376
+#DOCKER_CERT_PATH=<path-to-cert>
+#DOCKER_MACHINE_NAME=nameofvirtualmachine (e.g. type virtualbox in Windows 7 or hyperv in Windows 10)
+#COMPOSE_CONVERT_WINDOWS_PATHS=true
+
+#api.version=1.39

Added: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties?rev=1871864&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties (added)
+++ db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties Fri Dec 20 15:17:46 2019
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# windows workaround, should have more than 2GB free disk space
+checks.disable = true
\ No newline at end of file

Propchange: db/torque/torque4/trunk/torque-test/src/test/profile/postgresql/docker-resources/testcontainers.properties
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org